@splinetool/loader 1.10.97 → 1.10.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +158 -158
- package/build/SplineLoader.js +152 -152
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
`,"\r"],!1,!1),C=0,ne=0,Ne=[{line:1,column:1}],Ve=0,_e=[],Pe=0,St;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Me(){return i.substring(ne,C)}function bt(){return Wi(ne,C)}function wt(b,P){throw P=P!==void 0?P:Wi(ne,C),yr([Ud(b)],i.substring(ne,C),P)}function Hi(b,P){throw P=P!==void 0?P:Wi(ne,C),kd(b,P)}function it(b,P){return{type:"literal",text:b,ignoreCase:P}}function Ke(b,P,L){return{type:"class",parts:b,inverted:P,ignoreCase:L}}function Nr(){return{type:"any"}}function jd(){return{type:"end"}}function Ud(b){return{type:"other",description:b}}function Gl(b){var P=Ne[b],L;if(P)return P;for(L=b-1;!Ne[L];)L--;for(P=Ne[L],P={line:P.line,column:P.column};L<b;)i.charCodeAt(L)===10?(P.line++,P.column=1):P.column++,L++;return Ne[b]=P,P}function Wi(b,P){var L=Gl(b),A=Gl(P);return{start:{offset:b,line:L.line,column:L.column},end:{offset:P,line:A.line,column:A.column}}}function ut(b){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(b))}function kd(b,P){return new Pn(b,null,null,P)}function yr(b,P,L){return new Pn(Pn.buildMessage(b,P),b,P,L)}function As(){var b,P,L,A,z;for(b=C,P=[],L=ze();L!==e;)P.push(L),L=ze();if(P!==e)if(L=Wt(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(ne=b,P=n(L),b=P):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function Wt(){var b,P,L,A,z,oe;if(b=C,P=qi(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=qi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=qi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function qi(){var b,P,L,A,z,oe;if(b=C,P=An(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Fl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Fl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Fl(){var b;return b=qS(),b===e&&(b=$S(),b===e&&(b=XS(),b===e&&(b=YS(),b===e&&(b=KS(),b===e&&(b=ZS(),b===e&&(b=ew(),b===e&&(b=rw(),b===e&&(b=iw())))))))),b}function An(){var b,P,L,A,z,oe,En;if(b=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(l)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=$t(),A!==e?(z=C,oe=tt(),oe===e&&(oe=null),oe!==e?(En=um(),En!==e?(oe=[oe,En],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=b,P=c(P,A,z),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,P;return b=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(d)),P!==e&&(ne=b,P=p()),b=P,b}function $S(){var b,P,L,A;if(b=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(h)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=um(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function um(){var b,P,L,A,z,oe;if(b=C,P=$t(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function XS(){var b,P,L,A;if(b=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(x)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=dm(),A!==e?(ne=b,P=v(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function dm(){var b,P,L,A,z,oe;if(b=C,P=Mn(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Mn(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Mn(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function YS(){var b,P,L,A;if(b=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(O)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=dm(),A!==e?(ne=b,P=S(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function KS(){var b,P,L,A;if(b=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(M)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=QS(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function QS(){var b,P,L,A,z,oe;if(b=C,P=Hd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Hd(){var b,P,L,A,z,oe;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(ne=b,P=g(P,A,oe),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function ZS(){var b,P,L,A;if(b=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(E)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=JS(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function JS(){var b,P,L,A,z,oe;if(b=C,P=Wd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Wd(){var b,P,L,A;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(ne=b,P=I(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function ew(){var b,P,L,A;if(b=C,N.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(_)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=tw(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function tw(){var b,P,L,A,z,oe;if(b=C,P=qd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function qd(){var b,P,L,A;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(ne=b,P=R(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function rw(){var b,P,L,A;if(b=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(U)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=ow(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function ow(){var b,P,L,A,z,oe;if(b=C,P=$t(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function iw(){var b,P,L,A;if(b=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(q)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=nw(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function nw(){var b,P,L,A,z,oe;if(b=C,P=$d(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$d(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$d(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function $d(){var b,P,L,A,z,oe,En,Yd,Ul,Kd,kl,Qd;return b=C,P=pm(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=pm(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=Mn(),oe!==e?(En=tt(),En!==e?(Yd=fm(),Yd!==e?(Ul=tt(),Ul===e&&(Ul=null),Ul!==e?(Kd=fm(),Kd!==e?(kl=tt(),kl===e&&(kl=null),kl!==e?(Qd=$t(),Qd!==e?(ne=b,P=j(P,A,oe,Yd,Kd,Qd),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function $t(){var b,P,L,A;return b=C,P=Mn(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=Mn(),A!==e?(ne=b,P=F(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function pm(){var b,P;return b=C,P=mm(),P===e&&(P=$i()),P!==e&&(ne=b,P=H(P)),b=P,b}function Mn(){var b,P,L,A;return b=C,P=C,L=Xd(),L===e&&(L=null),L!==e?(A=mm(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=Xd(),L===e&&(L=null),L!==e?(A=$i(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=W(P)),b=P,b}function fm(){var b,P;return b=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(te)),P!==e&&(ne=b,P=Y(P)),b=P,b}function tt(){var b,P,L,A,z;if(b=C,P=[],L=ze(),L!==e)for(;L!==e;)P.push(L),L=ze();else P=e;if(P!==e)if(L=hm(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(P=[P,L,A],b=P):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,P=C,L=hm(),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(L=[L,A],P=L):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=b,P=re()),b=P}return b}function hm(){var b;return i.charCodeAt(C)===44?(b=K,C++):(b=e,Pe===0&&ut(Z)),b}function mm(){var b,P,L,A;return b=C,P=C,L=aw(),L!==e?(A=ym(),A===e&&(A=null),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=$i(),L!==e?(A=ym(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=Q(P)),b=P,b}function aw(){var b,P,L,A,z;return b=C,P=C,L=$i(),L===e&&(L=null),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(z=$i(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=$i(),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=Q(P)),b=P,b}function ym(){var b,P,L,A,z;return b=C,P=C,le.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(ie)),L!==e?(A=Xd(),A===e&&(A=null),A!==e?(z=$i(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=b,P=Q(P)),b=P,b}function Xd(){var b;return ce.test(i.charAt(C))?(b=i.charAt(C),C++):(b=e,Pe===0&&ut(ae)),b}function $i(){var b,P,L;if(b=C,P=[],me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe)),L!==e)for(;L!==e;)P.push(L),me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe));else P=e;return P!==e&&(ne=b,P=he(P)),b=P,b}function ze(){var b,P;return b=C,xe.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(ye)),P!==e&&(ne=b,P=re()),b=P,b}function sw(b,P){if(!P)return[b];for(var L=[b],A=0,z=P.length;A<z;A++)L[A+1]=P[A][1];return L}var jl={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var gm in jl)jl[gm.toUpperCase()]=jl[gm];function In(b,P){P||(P=[{}]);for(var L=P.length;L--;){var A={code:b,command:jl[b]};b==b.toLowerCase()&&(A.relative=!0);for(var z in P[L])A[z]=P[L][z];P[L]=A}return P}if(St=o(),St!==e&&C===i.length)return St;throw St!==e&&C<i.length&&ut(jd()),yr(_e,Ve<i.length?i.charAt(Ve):null,Ve<i.length?Wi(Ve,Ve+1):Wi(Ve,Ve))}T1.exports={SyntaxError:Pn,parse:l_}});var Vh=Ms((oce,A1)=>{var bd=C1().parse;bd.parseSVG=bd;bd.makeAbsolute=c_;A1.exports=bd;function c_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var kS=Ms((Oye,US)=>{US.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as dL,Loader as pL}from"three";function Wl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Pt(i,t){return Object.setPrototypeOf(i,t),i}function ql(i){return Array.isArray(i)?i:[i]}function $l(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 yw=typeof global=="object"&&global&&global.Object===Object&&global,Xl=yw;var gw=typeof self=="object"&&self&&self.Object===Object&&self,xw=Xl||gw||Function("return this")(),dt=xw;var bw=dt.Symbol,Et=bw;var xm=Object.prototype,vw=xm.hasOwnProperty,Sw=xm.toString,Es=Et?Et.toStringTag:void 0;function ww(i){var t=vw.call(i,Es),e=i[Es];try{i[Es]=void 0;var r=!0}catch{}var o=Sw.call(i);return r&&(t?i[Es]=e:delete i[Es]),o}var bm=ww;var Pw=Object.prototype,Ow=Pw.toString;function Tw(i){return Ow.call(i)}var vm=Tw;var Cw="[object Null]",Aw="[object Undefined]",Sm=Et?Et.toStringTag:void 0;function Mw(i){return i==null?i===void 0?Aw:Cw:Sm&&Sm in Object(i)?bm(i):vm(i)}var cr=Mw;function Iw(i){return i!=null&&typeof i=="object"}var zt=Iw;var Ew="[object Symbol]";function Nw(i){return typeof i=="symbol"||zt(i)&&cr(i)==Ew}var ri=Nw;function Dw(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 Yl=Dw;var _w=Array.isArray,pt=_w;var Rw=1/0,wm=Et?Et.prototype:void 0,Pm=wm?wm.toString:void 0;function Om(i){if(typeof i=="string")return i;if(pt(i))return Yl(i,Om)+"";if(ri(i))return Pm?Pm.call(i):"";var t=i+"";return t=="0"&&1/i==-Rw?"-0":t}var Tm=Om;var Lw=/\s/;function Bw(i){for(var t=i.length;t--&&Lw.test(i.charAt(t)););return t}var Cm=Bw;var Vw=/^\s+/;function zw(i){return i&&i.slice(0,Cm(i)+1).replace(Vw,"")}var Am=zw;function Gw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ft=Gw;var Mm=0/0,Fw=/^[-+]0x[0-9a-f]+$/i,jw=/^0b[01]+$/i,Uw=/^0o[0-7]+$/i,kw=parseInt;function Hw(i){if(typeof i=="number")return i;if(ri(i))return Mm;if(ft(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ft(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Am(i);var e=jw.test(i);return e||Uw.test(i)?kw(i.slice(2),e?2:8):Fw.test(i)?Mm:+i}var Zd=Hw;function Ww(i){return i}var Im=Ww;var qw="[object AsyncFunction]",$w="[object Function]",Xw="[object GeneratorFunction]",Yw="[object Proxy]";function Kw(i){if(!ft(i))return!1;var t=cr(i);return t==$w||t==Xw||t==qw||t==Yw}var Kl=Kw;var Qw=dt["__core-js_shared__"],Ql=Qw;var Em=function(){var i=/[^.]+$/.exec(Ql&&Ql.keys&&Ql.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Zw(i){return!!Em&&Em in i}var Nm=Zw;var Jw=Function.prototype,e2=Jw.toString;function t2(i){if(i!=null){try{return e2.call(i)}catch{}try{return i+""}catch{}}return""}var Co=t2;var r2=/[\\^$.*+?()[\]{}|]/g,o2=/^\[object .+?Constructor\]$/,i2=Function.prototype,n2=Object.prototype,a2=i2.toString,s2=n2.hasOwnProperty,l2=RegExp("^"+a2.call(s2).replace(r2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function c2(i){if(!ft(i)||Nm(i))return!1;var t=Kl(i)?l2:o2;return t.test(Co(i))}var Dm=c2;function u2(i,t){return i?.[t]}var _m=u2;function d2(i,t){var e=_m(i,t);return Dm(e)?e:void 0}var Jt=d2;var p2=Jt(dt,"WeakMap"),Zl=p2;var Rm=Object.create,f2=function(){function i(){}return function(t){if(!ft(t))return{};if(Rm)return Rm(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Lm=f2;function h2(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 Bm=h2;function m2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Vm=m2;var y2=800,g2=16,x2=Date.now;function b2(i){var t=0,e=0;return function(){var r=x2(),o=g2-(r-e);if(e=r,o>0){if(++t>=y2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var zm=b2;function v2(i){return function(){return i}}var Gm=v2;var S2=function(){try{var i=Jt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Nn=S2;var w2=Nn?function(i,t){return Nn(i,"toString",{configurable:!0,enumerable:!1,value:Gm(t),writable:!0})}:Im,Fm=w2;var P2=zm(Fm),jm=P2;function O2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Um=O2;var T2=9007199254740991,C2=/^(?:0|[1-9]\d*)$/;function A2(i,t){var e=typeof i;return t=t??T2,!!t&&(e=="number"||e!="symbol"&&C2.test(i))&&i>-1&&i%1==0&&i<t}var Dn=A2;function M2(i,t,e){t=="__proto__"&&Nn?Nn(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Jl=M2;function I2(i,t){return i===t||i!==i&&t!==t}var _n=I2;var E2=Object.prototype,N2=E2.hasOwnProperty;function D2(i,t,e){var r=i[t];(!(N2.call(i,t)&&_n(r,e))||e===void 0&&!(t in i))&&Jl(i,t,e)}var Rn=D2;function _2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?Jl(e,s,l):Rn(e,s,l)}return e}var Kr=_2;var km=Math.max;function R2(i,t,e){return t=km(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=km(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Bm(i,this,s)}}var Hm=R2;var L2=9007199254740991;function B2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=L2}var Ln=B2;function V2(i){return i!=null&&Ln(i.length)&&!Kl(i)}var ec=V2;var z2=Object.prototype;function G2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||z2;return i===e}var Bn=G2;function F2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Wm=F2;var j2="[object Arguments]";function U2(i){return zt(i)&&cr(i)==j2}var Jd=U2;var qm=Object.prototype,k2=qm.hasOwnProperty,H2=qm.propertyIsEnumerable,W2=Jd(function(){return arguments}())?Jd:function(i){return zt(i)&&k2.call(i,"callee")&&!H2.call(i,"callee")},Vn=W2;function q2(){return!1}var $m=q2;var Km=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xm=Km&&typeof module=="object"&&module&&!module.nodeType&&module,$2=Xm&&Xm.exports===Km,Ym=$2?dt.Buffer:void 0,X2=Ym?Ym.isBuffer:void 0,Y2=X2||$m,Yi=Y2;var K2="[object Arguments]",Q2="[object Array]",Z2="[object Boolean]",J2="[object Date]",eP="[object Error]",tP="[object Function]",rP="[object Map]",oP="[object Number]",iP="[object Object]",nP="[object RegExp]",aP="[object Set]",sP="[object String]",lP="[object WeakMap]",cP="[object ArrayBuffer]",uP="[object DataView]",dP="[object Float32Array]",pP="[object Float64Array]",fP="[object Int8Array]",hP="[object Int16Array]",mP="[object Int32Array]",yP="[object Uint8Array]",gP="[object Uint8ClampedArray]",xP="[object Uint16Array]",bP="[object Uint32Array]",rt={};rt[dP]=rt[pP]=rt[fP]=rt[hP]=rt[mP]=rt[yP]=rt[gP]=rt[xP]=rt[bP]=!0;rt[K2]=rt[Q2]=rt[cP]=rt[Z2]=rt[uP]=rt[J2]=rt[eP]=rt[tP]=rt[rP]=rt[oP]=rt[iP]=rt[nP]=rt[aP]=rt[sP]=rt[lP]=!1;function vP(i){return zt(i)&&Ln(i.length)&&!!rt[cr(i)]}var Qm=vP;function SP(i){return function(t){return i(t)}}var zn=SP;var Zm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ns=Zm&&typeof module=="object"&&module&&!module.nodeType&&module,wP=Ns&&Ns.exports===Zm,ep=wP&&Xl.process,PP=function(){try{var i=Ns&&Ns.require&&Ns.require("util").types;return i||ep&&ep.binding&&ep.binding("util")}catch{}}(),Ao=PP;var Jm=Ao&&Ao.isTypedArray,OP=Jm?zn(Jm):Qm,tc=OP;var TP=Object.prototype,CP=TP.hasOwnProperty;function AP(i,t){var e=pt(i),r=!e&&Vn(i),o=!e&&!r&&Yi(i),n=!e&&!r&&!o&&tc(i),a=e||r||o||n,s=a?Wm(i.length,String):[],l=s.length;for(var c in i)(t||CP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Dn(c,l)))&&s.push(c);return s}var rc=AP;function MP(i,t){return function(e){return i(t(e))}}var oc=MP;var IP=oc(Object.keys,Object),ey=IP;var EP=Object.prototype,NP=EP.hasOwnProperty;function DP(i){if(!Bn(i))return ey(i);var t=[];for(var e in Object(i))NP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ty=DP;function _P(i){return ec(i)?rc(i):ty(i)}var Gn=_P;function RP(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var ry=RP;var LP=Object.prototype,BP=LP.hasOwnProperty;function VP(i){if(!ft(i))return ry(i);var t=Bn(i),e=[];for(var r in i)r=="constructor"&&(t||!BP.call(i,r))||e.push(r);return e}var oy=VP;function zP(i){return ec(i)?rc(i,!0):oy(i)}var Fn=zP;var GP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,FP=/^\w*$/;function jP(i,t){if(pt(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||ri(i)?!0:FP.test(i)||!GP.test(i)||t!=null&&i in Object(t)}var iy=jP;var UP=Jt(Object,"create"),Mo=UP;function kP(){this.__data__=Mo?Mo(null):{},this.size=0}var ny=kP;function HP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ay=HP;var WP="__lodash_hash_undefined__",qP=Object.prototype,$P=qP.hasOwnProperty;function XP(i){var t=this.__data__;if(Mo){var e=t[i];return e===WP?void 0:e}return $P.call(t,i)?t[i]:void 0}var sy=XP;var YP=Object.prototype,KP=YP.hasOwnProperty;function QP(i){var t=this.__data__;return Mo?t[i]!==void 0:KP.call(t,i)}var ly=QP;var ZP="__lodash_hash_undefined__";function JP(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mo&&t===void 0?ZP:t,this}var cy=JP;function jn(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])}}jn.prototype.clear=ny;jn.prototype.delete=ay;jn.prototype.get=sy;jn.prototype.has=ly;jn.prototype.set=cy;var tp=jn;function eO(){this.__data__=[],this.size=0}var uy=eO;function tO(i,t){for(var e=i.length;e--;)if(_n(i[e][0],t))return e;return-1}var oi=tO;var rO=Array.prototype,oO=rO.splice;function iO(i){var t=this.__data__,e=oi(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():oO.call(t,e,1),--this.size,!0}var dy=iO;function nO(i){var t=this.__data__,e=oi(t,i);return e<0?void 0:t[e][1]}var py=nO;function aO(i){return oi(this.__data__,i)>-1}var fy=aO;function sO(i,t){var e=this.__data__,r=oi(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var hy=sO;function Un(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])}}Un.prototype.clear=uy;Un.prototype.delete=dy;Un.prototype.get=py;Un.prototype.has=fy;Un.prototype.set=hy;var ii=Un;var lO=Jt(dt,"Map"),ni=lO;function cO(){this.size=0,this.__data__={hash:new tp,map:new(ni||ii),string:new tp}}var my=cO;function uO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var yy=uO;function dO(i,t){var e=i.__data__;return yy(t)?e[typeof t=="string"?"string":"hash"]:e.map}var ai=dO;function pO(i){var t=ai(this,i).delete(i);return this.size-=t?1:0,t}var gy=pO;function fO(i){return ai(this,i).get(i)}var xy=fO;function hO(i){return ai(this,i).has(i)}var by=hO;function mO(i,t){var e=ai(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var vy=mO;function kn(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])}}kn.prototype.clear=my;kn.prototype.delete=gy;kn.prototype.get=xy;kn.prototype.has=by;kn.prototype.set=vy;var Ki=kn;var yO="Expected a function";function rp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(yO);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 a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(rp.Cache||Ki),e}rp.Cache=Ki;var Sy=rp;var gO=500;function xO(i){var t=Sy(i,function(r){return e.size===gO&&e.clear(),r}),e=t.cache;return t}var wy=xO;var bO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vO=/\\(\\)?/g,SO=wy(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(bO,function(e,r,o,n){t.push(o?n.replace(vO,"$1"):r||e)}),t}),Py=SO;function wO(i){return i==null?"":Tm(i)}var Oy=wO;function PO(i,t){return pt(i)?i:iy(i,t)?[i]:Py(Oy(i))}var gr=PO;var OO=1/0;function TO(i){if(typeof i=="string"||ri(i))return i;var t=i+"";return t=="0"&&1/i==-OO?"-0":t}var si=TO;function CO(i,t){t=gr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[si(t[e++])];return e&&e==r?i:void 0}var ic=CO;function AO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Hn=AO;var Ty=Et?Et.isConcatSpreadable:void 0;function MO(i){return pt(i)||Vn(i)||!!(Ty&&i&&i[Ty])}var Cy=MO;function Ay(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Cy),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Ay(s,t-1,e,r,o):Hn(o,s):r||(o[o.length]=s)}return o}var My=Ay;function IO(i){var t=i==null?0:i.length;return t?My(i,1):[]}var Iy=IO;function EO(i){return jm(Hm(i,void 0,Iy),i+"")}var nc=EO;var NO=oc(Object.getPrototypeOf,Object),Wn=NO;var DO="[object Object]",_O=Function.prototype,RO=Object.prototype,Ey=_O.toString,LO=RO.hasOwnProperty,BO=Ey.call(Object);function VO(i){if(!zt(i)||cr(i)!=DO)return!1;var t=Wn(i);if(t===null)return!0;var e=LO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ey.call(e)==BO}var Ny=VO;function zO(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 Dy=zO;function GO(){this.__data__=new ii,this.size=0}var _y=GO;function FO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Ry=FO;function jO(i){return this.__data__.get(i)}var Ly=jO;function UO(i){return this.__data__.has(i)}var By=UO;var kO=200;function HO(i,t){var e=this.__data__;if(e instanceof ii){var r=e.__data__;if(!ni||r.length<kO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Ki(r)}return e.set(i,t),this.size=e.size,this}var Vy=HO;function qn(i){var t=this.__data__=new ii(i);this.size=t.size}qn.prototype.clear=_y;qn.prototype.delete=Ry;qn.prototype.get=Ly;qn.prototype.has=By;qn.prototype.set=Vy;var $n=qn;function WO(i,t){return i&&Kr(t,Gn(t),i)}var zy=WO;function qO(i,t){return i&&Kr(t,Fn(t),i)}var Gy=qO;var ky=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fy=ky&&typeof module=="object"&&module&&!module.nodeType&&module,$O=Fy&&Fy.exports===ky,jy=$O?dt.Buffer:void 0,Uy=jy?jy.allocUnsafe:void 0;function XO(i,t){if(t)return i.slice();var e=i.length,r=Uy?Uy(e):new i.constructor(e);return i.copy(r),r}var Hy=XO;function YO(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Wy=YO;function KO(){return[]}var ac=KO;var QO=Object.prototype,ZO=QO.propertyIsEnumerable,qy=Object.getOwnPropertySymbols,JO=qy?function(i){return i==null?[]:(i=Object(i),Wy(qy(i),function(t){return ZO.call(i,t)}))}:ac,Xn=JO;function eT(i,t){return Kr(i,Xn(i),t)}var $y=eT;var tT=Object.getOwnPropertySymbols,rT=tT?function(i){for(var t=[];i;)Hn(t,Xn(i)),i=Wn(i);return t}:ac,sc=rT;function oT(i,t){return Kr(i,sc(i),t)}var Xy=oT;function iT(i,t,e){var r=t(i);return pt(i)?r:Hn(r,e(i))}var lc=iT;function nT(i){return lc(i,Gn,Xn)}var Ds=nT;function aT(i){return lc(i,Fn,sc)}var cc=aT;var sT=Jt(dt,"DataView"),uc=sT;var lT=Jt(dt,"Promise"),dc=lT;var cT=Jt(dt,"Set"),pc=cT;var Yy="[object Map]",uT="[object Object]",Ky="[object Promise]",Qy="[object Set]",Zy="[object WeakMap]",Jy="[object DataView]",dT=Co(uc),pT=Co(ni),fT=Co(dc),hT=Co(pc),mT=Co(Zl),Qi=cr;(uc&&Qi(new uc(new ArrayBuffer(1)))!=Jy||ni&&Qi(new ni)!=Yy||dc&&Qi(dc.resolve())!=Ky||pc&&Qi(new pc)!=Qy||Zl&&Qi(new Zl)!=Zy)&&(Qi=function(i){var t=cr(i),e=t==uT?i.constructor:void 0,r=e?Co(e):"";if(r)switch(r){case dT:return Jy;case pT:return Yy;case fT:return Ky;case hT:return Qy;case mT:return Zy}return t});var Io=Qi;var yT=Object.prototype,gT=yT.hasOwnProperty;function xT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&gT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var eg=xT;var bT=dt.Uint8Array,Yn=bT;function vT(i){var t=new i.constructor(i.byteLength);return new Yn(t).set(new Yn(i)),t}var Kn=vT;function ST(i,t){var e=t?Kn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var tg=ST;var wT=/\w*$/;function PT(i){var t=new i.constructor(i.source,wT.exec(i));return t.lastIndex=i.lastIndex,t}var rg=PT;var og=Et?Et.prototype:void 0,ig=og?og.valueOf:void 0;function OT(i){return ig?Object(ig.call(i)):{}}var ng=OT;function TT(i,t){var e=t?Kn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ag=TT;var CT="[object Boolean]",AT="[object Date]",MT="[object Map]",IT="[object Number]",ET="[object RegExp]",NT="[object Set]",DT="[object String]",_T="[object Symbol]",RT="[object ArrayBuffer]",LT="[object DataView]",BT="[object Float32Array]",VT="[object Float64Array]",zT="[object Int8Array]",GT="[object Int16Array]",FT="[object Int32Array]",jT="[object Uint8Array]",UT="[object Uint8ClampedArray]",kT="[object Uint16Array]",HT="[object Uint32Array]";function WT(i,t,e){var r=i.constructor;switch(t){case RT:return Kn(i);case CT:case AT:return new r(+i);case LT:return tg(i,e);case BT:case VT:case zT:case GT:case FT:case jT:case UT:case kT:case HT:return ag(i,e);case MT:return new r;case IT:case DT:return new r(i);case ET:return rg(i);case NT:return new r;case _T:return ng(i)}}var sg=WT;function qT(i){return typeof i.constructor=="function"&&!Bn(i)?Lm(Wn(i)):{}}var lg=qT;var $T="[object Map]";function XT(i){return zt(i)&&Io(i)==$T}var cg=XT;var ug=Ao&&Ao.isMap,YT=ug?zn(ug):cg,dg=YT;var KT="[object Set]";function QT(i){return zt(i)&&Io(i)==KT}var pg=QT;var fg=Ao&&Ao.isSet,ZT=fg?zn(fg):pg,hg=ZT;var JT=1,eC=2,tC=4,mg="[object Arguments]",rC="[object Array]",oC="[object Boolean]",iC="[object Date]",nC="[object Error]",yg="[object Function]",aC="[object GeneratorFunction]",sC="[object Map]",lC="[object Number]",gg="[object Object]",cC="[object RegExp]",uC="[object Set]",dC="[object String]",pC="[object Symbol]",fC="[object WeakMap]",hC="[object ArrayBuffer]",mC="[object DataView]",yC="[object Float32Array]",gC="[object Float64Array]",xC="[object Int8Array]",bC="[object Int16Array]",vC="[object Int32Array]",SC="[object Uint8Array]",wC="[object Uint8ClampedArray]",PC="[object Uint16Array]",OC="[object Uint32Array]",Je={};Je[mg]=Je[rC]=Je[hC]=Je[mC]=Je[oC]=Je[iC]=Je[yC]=Je[gC]=Je[xC]=Je[bC]=Je[vC]=Je[sC]=Je[lC]=Je[gg]=Je[cC]=Je[uC]=Je[dC]=Je[pC]=Je[SC]=Je[wC]=Je[PC]=Je[OC]=!0;Je[nC]=Je[yg]=Je[fC]=!1;function fc(i,t,e,r,o,n){var a,s=t&JT,l=t&eC,c=t&tC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ft(i))return i;var u=pt(i);if(u){if(a=eg(i),!s)return Vm(i,a)}else{var d=Io(i),p=d==yg||d==aC;if(Yi(i))return Hy(i,s);if(d==gg||d==mg||p&&!o){if(a=l||p?{}:lg(i),!s)return l?Xy(i,Gy(a,i)):$y(i,zy(a,i))}else{if(!Je[d])return o?i:{};a=sg(i,d,s)}}n||(n=new $n);var f=n.get(i);if(f)return f;n.set(i,a),hg(i)?i.forEach(function(y){a.add(fc(y,t,e,y,i,n))}):dg(i)&&i.forEach(function(y,x){a.set(x,fc(y,t,e,x,i,n))});var h=c?l?cc:Ds:l?Fn:Gn,m=u?void 0:h(i);return Um(m||i,function(y,x){m&&(x=y,y=i[x]),Rn(a,x,fc(y,t,e,x,i,n))}),a}var hc=fc;var TC=1,CC=4;function AC(i){return hc(i,TC|CC)}var Eo=AC;var MC="__lodash_hash_undefined__";function IC(i){return this.__data__.set(i,MC),this}var xg=IC;function EC(i){return this.__data__.has(i)}var bg=EC;function mc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Ki;++t<e;)this.add(i[t])}mc.prototype.add=mc.prototype.push=xg;mc.prototype.has=bg;var vg=mc;function NC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var Sg=NC;function DC(i,t){return i.has(t)}var wg=DC;var _C=1,RC=2;function LC(i,t,e,r,o,n){var a=e&_C,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var d=-1,p=!0,f=e&RC?new vg:void 0;for(n.set(i,t),n.set(t,i);++d<s;){var h=i[d],m=t[d];if(r)var y=a?r(m,h,d,t,i,n):r(h,m,d,i,t,n);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Sg(t,function(x,v){if(!wg(f,v)&&(h===x||o(h,x,e,r,n)))return f.push(v)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,n))){p=!1;break}}return n.delete(i),n.delete(t),p}var yc=LC;function BC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var Pg=BC;function VC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Og=VC;var zC=1,GC=2,FC="[object Boolean]",jC="[object Date]",UC="[object Error]",kC="[object Map]",HC="[object Number]",WC="[object RegExp]",qC="[object Set]",$C="[object String]",XC="[object Symbol]",YC="[object ArrayBuffer]",KC="[object DataView]",Tg=Et?Et.prototype:void 0,op=Tg?Tg.valueOf:void 0;function QC(i,t,e,r,o,n,a){switch(e){case KC:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case YC:return!(i.byteLength!=t.byteLength||!n(new Yn(i),new Yn(t)));case FC:case jC:case HC:return _n(+i,+t);case UC:return i.name==t.name&&i.message==t.message;case WC:case $C:return i==t+"";case kC:var s=Pg;case qC:var l=r&zC;if(s||(s=Og),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=GC,a.set(i,t);var u=yc(s(i),s(t),r,o,n,a);return a.delete(i),u;case XC:if(op)return op.call(i)==op.call(t)}return!1}var Cg=QC;var ZC=1,JC=Object.prototype,eA=JC.hasOwnProperty;function tA(i,t,e,r,o,n){var a=e&ZC,s=Ds(i),l=s.length,c=Ds(t),u=c.length;if(l!=u&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:eA.call(t,p)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++d<l;){p=s[d];var x=i[p],v=t[p];if(r)var w=a?r(v,x,p,t,i,n):r(x,v,p,i,t,n);if(!(w===void 0?x===v||o(x,v,e,r,n):w)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Ag=tA;var rA=1,Mg="[object Arguments]",Ig="[object Array]",gc="[object Object]",oA=Object.prototype,Eg=oA.hasOwnProperty;function iA(i,t,e,r,o,n){var a=pt(i),s=pt(t),l=a?Ig:Io(i),c=s?Ig:Io(t);l=l==Mg?gc:l,c=c==Mg?gc:c;var u=l==gc,d=c==gc,p=l==c;if(p&&Yi(i)){if(!Yi(t))return!1;a=!0,u=!1}if(p&&!u)return n||(n=new $n),a||tc(i)?yc(i,t,e,r,o,n):Cg(i,t,l,e,r,o,n);if(!(e&rA)){var f=u&&Eg.call(i,"__wrapped__"),h=d&&Eg.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new $n),o(m,y,e,r,n)}}return p?(n||(n=new $n),Ag(i,t,e,r,o,n)):!1}var Ng=iA;function Dg(i,t,e,r,o){return i===t?!0:i==null||t==null||!zt(i)&&!zt(t)?i!==i&&t!==t:Ng(i,t,e,r,Dg,o)}var _g=Dg;function nA(i,t){return i!=null&&t in Object(i)}var Rg=nA;function aA(i,t,e){t=gr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=si(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&Ln(o)&&Dn(a,o)&&(pt(i)||Vn(i)))}var Lg=aA;function sA(i,t){return i!=null&&Lg(i,t,Rg)}var Bg=sA;var lA=function(){return dt.Date.now()},xc=lA;var cA="Expected a function",uA=Math.max,dA=Math.min;function pA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,d=!1,p=!0;if(typeof i!="function")throw new TypeError(cA);t=Zd(t)||0,ft(e)&&(u=!!e.leading,d="maxWait"in e,n=d?uA(Zd(e.maxWait)||0,t):n,p="trailing"in e?!!e.trailing:p);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(x,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return d?dA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||d&&g>=n}function x(){var T=xc();if(y(T))return v(T);s=setTimeout(x,m(T))}function v(T){return s=void 0,p&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(xc())}function S(){var T=xc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(d)return clearTimeout(s),s=setTimeout(x,t),f(l)}return s===void 0&&(s=setTimeout(x,t)),a}return S.cancel=w,S.flush=O,S}var bc=pA;function fA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Vg=fA;function hA(i,t){return t.length<2?i:ic(i,Dy(t,0,-1))}var zg=hA;function mA(i,t){return _g(i,t)}var ip=mA;function yA(i,t){return t=gr(t,i),i=zg(i,t),i==null||delete i[si(Vg(t))]}var Gg=yA;function gA(i){return Ny(i)?void 0:i}var Fg=gA;var xA=1,bA=2,vA=4,SA=nc(function(i,t){var e={};if(i==null)return e;var r=!1;t=Yl(t,function(n){return n=gr(n,i),r||(r=n.length>1),n}),Kr(i,cc(i),e),r&&(e=hc(e,xA|bA|vA,Fg));for(var o=t.length;o--;)Gg(e,t[o]);return e}),Qn=SA;function wA(i,t,e,r){if(!ft(i))return i;t=gr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=si(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ft(u)?u:Dn(t[o+1])?[]:{})}Rn(s,l,c),s=s[l]}return i}var jg=wA;function PA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=ic(i,a);e(s,a)&&jg(n,gr(a,i),s)}return n}var Ug=PA;function OA(i,t){return Ug(i,t,function(e,r){return Bg(i,r)})}var kg=OA;var TA=nc(function(i,t){return i==null?{}:kg(i,t)}),Dr=TA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function _s(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"&&_s(r)}return Object.freeze(i)}function Hg(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 Zn=class extends Error{};function vc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Qr(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 a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function Jn(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 Wg(){return typeof process<"u"}function qg(i,t){for(let e of i)t(e.id,e.data)!==!0&&qg(e.children,t)}function $g(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)$g(e,t)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)_s(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&$g(o,r)}}traverse(e){qg(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),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Qe.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((p,f)=>p.fi-f.fi),e.localIndex=c.indexOf(u),{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),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,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 f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new Zn("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,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(a=>a.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(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Hg(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),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Qr(0,o,o);{let a=n[0].fi;return Qr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Qr(l,l+o,o)}else return Qr(a.fi,s.fi,o)}}};var ea;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(ea||(ea={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)_s(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,be.prototype);let r=e;return Wg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,d)=>u.fi-d.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Qr(0,r,r);{let n=o[0].fi;return Qr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Qr(s,s+r,r)}else return Qr(n.fi,a.fi,r)}}};function ta(i){return i&&typeof i=="object"&&i instanceof He}var He=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ta(r))return null;o+=1}r=r?vc(r):new He;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=vc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=vc(l);c[t.path[o-1]]=r,r=c}else{let c=new He;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,He.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Zr;(r=>{function i(o,n){return Rs(o,n)??o}r.apply=i;function t(o,n){return ap(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Ze.zoomOnce(l,s[a]),l===void 0)return n;if(!ta(l))return;a+=1}if(l===void 0)return n;if(!!ta(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=np([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Zr||(Zr={}));function np(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=Rs(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=np(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function CA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=Rs(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function Rs(i,t){if(!ta(t))return t;if(i instanceof Qe){let e=np(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof be)return CA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=Rs(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof He)return ap(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=Rs(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function ap(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!ta(t))return t;if(!ta(i))return Zr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new He;for(let o of e){let n=ap(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function Xg(i,t){let e={cur:[],result:[],len:0};return i=Ls(i,t,e)??i,[i,e.result]}function Sc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function wc(i){i&&(i.len-=1)}function AA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function Yg(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ls(n.data,t,Sc(e,a));wc(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=Yg(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function MA(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ls(n.data,t,Sc(e,a));return wc(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Ls(i,t,e){if(i instanceof Qe){let r=Yg(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof be)return MA(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Ls(n,t,Sc(e,a));return wc(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!Jn(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Ls(a,t,Sc(e,n));wc(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&AA(e),r}else return}}var ra;(t=>{function i(e,r){let o=Ze.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(ra||(ra={}));var nt;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var d=[];;){let p;if(l instanceof He&&c.type===0&&(p=l.runOp({...c,path:u.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===u.length&&(l instanceof Qe||l instanceof be||l instanceof ue?p=l.runOp(c):p=ea.runOp(l,c)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let x=u[y],v=d[y];if(v instanceof Qe){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof be){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof ue){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof He){let w={...v,[x]:m};m=Object.setPrototypeOf(w,He.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof x=="string"&&(x=parseInt(x),isNaN(x)))throw new Error("Invalid path");let w=m;m=[...v],m[x]=w}else m={...v,[x]:m};else return null}return{data:m,actual:{...p.actual,path:u},reverse:{...p.reverse,path:u}}}else return null;let f=u[d.length],h;if(l instanceof Qe){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof be){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Bs;(l=>{function i(){return[]}l.empty=i;function t(c,u){let d=[];for(let p of c){let[f,...h]=p.path;f===u&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(c,u){return c.map(d=>({...d,path:[u,...d.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(p=>!u.some(f=>nt.subsumed(p,f))),...u]}l.compress=o;function n(c,u){return c.every(d=>u.every(p=>nt.commutative(d,p)))}l.commutative=n;function a(c,u){for(let d of u){let p=s(c,d);p!==null&&(c=p.data)}return c}l.applyAll=a;function s(c,u){var d=c;let p=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,x;if(h.type===3?(m=Ze.zoom(d,[...h.path,h.id]),x=nt.apply(d,{...h,type:2})):(m=Ze.zoom(d,[...h.path,h.id,"value"]),x=nt.apply(d,h)),x!==null){d=x.data;let[v,w]=Xg(d,{[h.id]:m});d=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let E=w[D],I=E[E.length-1];if(typeof I=="number"&&Ze.equal(S,E.slice(0,E.length-1)))M.push(I),w.splice(D,1);else break}let g=Ze.zoom(d,S);y=g.map((D,E)=>M.includes(E)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Ze.zoom(d,S.slice(0,S.length-2)),D=g.layers.map(E=>E.id===S[S.length-1]?{...E,data:{...E.data,[T]:M}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}p.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(x.reverse),p.push(x.actual)}}else{let m=nt.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof Zn)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(Bs||(Bs={}));var Kg=Symbol(),IA=Symbol(),Oc=Symbol(),Zi=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof Pc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Oc];r&&r(),delete this._children[t]}}}},lp=class extends Zi{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 if(this._current instanceof He){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,He.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,ea.runOp(this._current,t),t.path)}},cp=class extends Zi{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Qg={get(i,t){if(t===Oc)return()=>{i._parent=null};if(t===Kg)return i._current;if(t===IA)return i;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],a=Tc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):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]}}},EA={...Qg,set(i,t,e){let r={type:0,props:{[t]:at(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},NA={...Qg,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}},oa=class extends Zi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Tc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):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 a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},ia=class extends Zi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{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,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Tc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):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 sp(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Pc=class extends Zi{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){sp(this.ts,e,t),sp(this.actual,r,t),sp(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Tc(i,t,e){return e instanceof Qe?new oa(i,t,e):e instanceof be?new ia(i,t,e):e instanceof ue?new Proxy(new cp(i,t,e),NA):e!==null&&typeof e=="object"?Jn(e)?e:new Proxy(new lp(i,t,e),EA):e}function up(i){let t=new Pc(i);return[Tc(t,"",i),t]}function li(i,t){let[e,r]=up(i);return t(e),r.result()}function at(i){return i instanceof oa||i instanceof ia?i._current:i!==null&&typeof i=="object"?i[Kg]:i}var Ze;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Qe||n instanceof oa)&&typeof a=="string")return n.data(a);if((n instanceof be||n instanceof ia)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Ze||(Ze={}));function Zg(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Le(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Cc=class{},Vs=class extends Cc{constructor(e){super();this.id=e}},zs=class extends Cc{constructor(e){super();this.data=e}};var pp;try{pp=new TextDecoder}catch{}var pe,ui,G=0;var a0=[],fp=a0,hp=0,er={},ke,ci,xr=0,Jr=0,ur,No,Xt=[],qe,Jg={useRecords:!1,mapsAsObjects:!0},Gs=class{},yp=new Gs;yp.name="MessagePack 0xC1";var na=!1,eo=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(pe)return d0(()=>(Mc(),this?this.unpack(t,e):eo.prototype.unpack.call(Jg,t,e)));ui=e>-1?e:t.length,G=0,hp=0,Jr=0,ci=null,fp=a0,ur=null,pe=t;try{qe=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=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 eo){if(er=this,this.structures)return ke=this.structures,Ac();(!ke||ke.length>0)&&(ke=[])}else er=Jg,(!ke||ke.length>0)&&(ke=[]);return Ac()}unpackMultiple(t,e){let r,o=0;try{na=!0;let n=t.length,a=this?this.unpack(t,n):Nc.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Ac())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Ac());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{na=!1,Mc()}}_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 Ac(){try{if(!er.trusted&&!na){let t=ke.sharedLength||0;t<ke.length&&(ke.length=t)}let i=ht();if(G==ui)ke.restoreStructures&&e0(),ke=null,pe=null,No&&(No=null);else if(G>ui){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!na)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw ke.restoreStructures&&e0(),Mc(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function e0(){for(let i in ke.restoreStructures)ke[i]=ke.restoreStructures[i];ke.restoreStructures=null}function ht(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=ke[i&63]||er.getStructures&&s0()[i&63];return t?(t.read||(t.read=gp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[c0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}else if(i<192){let t=i-160;if(Jr>=G)return ci.slice(G-xr,(G+=t)-xr);if(Jr==0&&ui<140){let e=t<16?xp(t):l0(t);if(e!=null)return e}return mp(t)}else{let t;switch(i){case 192:return null;case 193:return ur?(t=ht(),t>0?ur[1].slice(ur.position1,ur.position1+=t):ur[0].slice(ur.position0,ur.position0-=t)):yp;case 194:return!1;case 195:return!0;case 196:return dp(pe[G++]);case 197:return t=qe.getUint16(G),G+=2,dp(t);case 198:return t=qe.getUint32(G),G+=4,dp(t);case 199:return Ji(pe[G++]);case 200:return t=qe.getUint16(G),G+=2,Ji(t);case 201:return t=qe.getUint32(G),G+=4,Ji(t);case 202:if(t=qe.getFloat32(G),er.useFloat32>2){let e=Ec[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=qe.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=qe.getUint16(G),G+=2,t;case 206:return t=qe.getUint32(G),G+=4,t;case 207:return er.int64AsNumber?(t=qe.getUint32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigUint64(G),G+=8,t;case 208:return qe.getInt8(G++);case 209:return t=qe.getInt16(G),G+=2,t;case 210:return t=qe.getInt32(G),G+=4,t;case 211:return er.int64AsNumber?(t=qe.getInt32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return n0(pe[G++]&63);{let e=Xt[t];if(e)return e.read?(G++,e.read(ht())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,n0(pe[G++]&63,pe[G++])):Ji(2);case 214:return Ji(4);case 215:return Ji(8);case 216:return Ji(16);case 217:return t=pe[G++],Jr>=G?ci.slice(G-xr,(G+=t)-xr):_A(t);case 218:return t=qe.getUint16(G),G+=2,Jr>=G?ci.slice(G-xr,(G+=t)-xr):RA(t);case 219:return t=qe.getUint32(G),G+=4,Jr>=G?ci.slice(G-xr,(G+=t)-xr):LA(t);case 220:return t=qe.getUint16(G),G+=2,r0(t);case 221:return t=qe.getUint32(G),G+=4,r0(t);case 222:return t=qe.getUint16(G),G+=2,o0(t);case 223:return t=qe.getUint32(G),G+=4,o0(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 DA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function gp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>DA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(ht);return i.highByte===0&&(i.read=t0(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=ht()}return r}return e.count=0,i.highByte===0?t0(t,e):e}var t0=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=ke[r]||s0()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=gp(o,i)),o.read()};function s0(){let i=d0(()=>(pe=null,er.getStructures()));return ke=er._mergeStructures(i,ke)}var mp=Ic,_A=Ic,RA=Ic,LA=Ic;function Ic(i){let t;if(i<16&&(t=xp(i)))return t;if(i>64&&pp)return pp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Nt.apply(String,r),r.length=0)}return r.length>0&&(t+=Nt.apply(String,r)),t}function r0(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}function o0(i){if(er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[c0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}}var Nt=String.fromCharCode;function l0(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Nt.apply(String,e)}function xp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Nt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Nt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Nt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Nt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Nt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Nt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Nt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Nt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Nt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Nt(t,e,r,o,n,a,s,l,c,u);let d=pe[G++];if((d&128)>0){G-=11;return}return Nt(t,e,r,o,n,a,s,l,c,u,d)}else{let c=pe[G++],u=pe[G++],d=pe[G++],p=pe[G++];if((c&128)>0||(u&128)>0||(d&128)>0||(p&128)>0){G-=12;return}if(i<14){if(i===12)return Nt(t,e,r,o,n,a,s,l,c,u,d,p);{let f=pe[G++];if((f&128)>0){G-=13;return}return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f,h,m)}}}}}function dp(i){return er.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function Ji(i){let t=pe[G++];if(Xt[t])return Xt[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var i0=new Array(4096);function c0(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,Jr>=G)return ci.slice(G-xr,(G+=i)-xr);if(!(Jr==0&&ui<180))return mp(i)}else return G--,ht();let t=(i<<5^(i>1?qe.getUint16(G):i>0?pe[G]:0))&4095,e=i0[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=qe.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],i0[t]=e,e.bytes=i;r<o;)n=qe.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?xp(i):l0(i);return s!=null?e.string=s:e.string=mp(i)}var n0=(i,t)=>{var e=ht();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=ke[i];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[i]=o),ke[i]=e,e.read=gp(e,r),e.read()},u0=typeof self=="object"?self:global;Xt[0]=()=>{};Xt[0].noBuffer=!0;Xt[101]=()=>{let i=ht();return(u0[i[0]]||Error)(i[1])};Xt[105]=i=>{let t=qe.getUint32(G-4);No||(No=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};No.set(t,o);let n=ht();return o.used?Object.assign(r,n):(o.target=n,n)};Xt[112]=i=>{let t=qe.getUint32(G-4),e=No.get(t);return e.used=!0,e.target};Xt[115]=()=>new Set(ht());var bp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Xt[116]=i=>{let t=i[0],e=bp[t];if(!e)throw new Error("Could not find typed array for code "+t);return new u0[e](Uint8Array.prototype.slice.call(i,1).buffer)};Xt[120]=()=>{let i=ht();return new RegExp(i[0],i[1])};Xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,ur=[ht(),ht()],ur.position0=0,ur.position1=0;let r=G;G=e;try{return ht()}finally{G=r}};Xt[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 d0(i){let t=ui,e=G,r=hp,o=xr,n=Jr,a=ci,s=fp,l=No,c=ur,u=new Uint8Array(pe.slice(0,ui)),d=ke,p=ke.slice(0,ke.length),f=er,h=na,m=i();return ui=t,G=e,hp=r,xr=o,Jr=n,ci=a,fp=s,No=l,ur=c,pe=u,na=h,ke=d,ke.splice(0,ke.length,...p),er=f,qe=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function Mc(){pe=null,No=null,ke=null}function p0(i){i.unpack?Xt[i.type]=i.unpack:Xt[i.type]=i}var Ec=new Array(147);for(let i=0;i<256;i++)Ec[i]=+("1e"+Math.floor(45.15-i*.30103));var Nc=new eo({useRecords:!1}),BA=Nc.unpack,VA=Nc.unpackMultiple,zA=Nc.unpack,Dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},GA=new Float32Array(1),$4=new Uint8Array(GA.buffer,0,4);var _c;try{_c=new TextEncoder}catch{}var Rc,Sp,Lc=typeof Buffer<"u",vp=Lc?Buffer.allocUnsafeSlow:Uint8Array,y0=Lc?Buffer:Uint8Array,f0=Lc?4294967296:2144337920,X,mt,k=0,to,ro=null,FA=/[\u0080-\uFFFF]/,Fs=Symbol("record-id"),en=class extends eo{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=y0.prototype.utf8Write?function(g,D,E){return X.utf8Write(g,D,E)}:_c&&_c.encodeInto?function(g,D){return _c.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,x=f+h+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new vp(8192),mt=new DataView(X.buffer,0,8192),k=0),to=X.length-10,to-k<2048?(X=new vp(X.length),mt=new DataView(X.buffer,0,X.length),to=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(ro=["",""],X[k++]=214,X[k++]=98,ro.position=k-r,k+=4):ro=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let E=o.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<E;I++){let N=o[I];if(!N)continue;let _,R=o.transitions;for(let V=0,U=N.length;V<U;V++){let B=N[V];_=R[B],_||(_=R[B]=Object.create(null)),R=_}R[Fs]=I+64}l=E}d||(o.nextId=E+64)}n&&(n=!1),a=o||[];try{if(S(g),ro){mt.setUint32(ro.position+r,k-ro.position-r);let E=ro;ro=null,S(E[0]),S(E[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>to&&M(k),u.offset=k;let E=UA(X.subarray(r,k),s.idsToInsert);return s=null,E}return D&x0?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let E=0,I=v.length;E<I;E++)v[E][Fs]=0;v=[]}if(n&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,I)}}D&YA&&(k=r)}};let S=g=>{k>to&&(X=M(k));var D=typeof g,E;if(D==="string"){let I=g.length;if(ro&&I>=8&&I<4096){let R=FA.test(g);ro[R?0:1]+=g,X[k++]=193,S(R?-I:I);return}let N;I<32?N=1:I<256?N=2:I<65536?N=3:N=5;let _=I*3;if(k+_>to&&(X=M(k+_)),I<64||!c){let R,V,U,B=k+N;for(R=0;R<I;R++)V=g.charCodeAt(R),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(R+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),R++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);E=B-k-N}else E=c(g,k+N,_);E<32?X[k++]=160|E:E<256?(N<2&&X.copyWithin(k+2,k+1,k+1+E),X[k++]=217,X[k++]=E):E<65536?(N<3&&X.copyWithin(k+3,k+2,k+2+E),X[k++]=218,X[k++]=E>>8,X[k++]=E&255):(N<5&&X.copyWithin(k+5,k+3,k+3+E),X[k++]=219,mt.setUint32(k,E),k+=4),k+=E}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,mt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,mt.setInt16(k,g),k+=2):(X[k++]=210,mt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,mt.setFloat32(k,g);let N;if(I<4||(N=g*Ec[(X[k]&127)<<1|X[k+1]>>7])>>0===N){k+=4;return}else k--}X[k++]=203,mt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}X[k++]=214,X[k++]=112,mt.setUint32(k,N.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){E=g.length,E<16?X[k++]=144|E:E<65536?(X[k++]=220,X[k++]=E>>8,X[k++]=E&255):(X[k++]=221,mt.setUint32(k,E),k+=4);for(let N=0;N<E;N++)S(g[N])}else if(I===Map){E=g.size,E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);for(let[N,_]of g)S(N),S(_)}else{for(let N=0,_=Rc.length;N<_;N++){let R=Sp[N];if(g instanceof R){let V=Rc[N];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=mt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>to&&M(k),{target:X,targetView:mt,position:k-F}),S)}finally{U&&(X=U,mt=B,k=q,to=X.length-10)}j&&(j.length+k>to&&M(j.length+k),k=jA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,mt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,mt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,mt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);let I;for(let N=0;N<E;N++)S(I=D[N]),S(g[I])}:(g,D)=>{X[k++]=222;let E=k-r;k+=2;let I=0;for(let N in g)(D||g.hasOwnProperty(N))&&(S(N),S(g[N]),I++);X[E+++r]=I>>8,X[E+r]=I&255}:g=>{let D=Object.keys(g),E,I=a.transitions||(a.transitions=Object.create(null)),N=0;for(let R=0,V=D.length;R<V;R++){let U=D[R];E=I[U],E||(E=I[U]=Object.create(null),N++),I=E}let _=I[Fs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<x||(_=y),a.nextOwnId=_+1):(_>=x&&(_=y),a.nextId=_+1);let R=D.highByte=_>=96&&m?_-96>>5:-1;I[Fs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,R>=0?(X[k++]=(_&31)+96,X[k++]=R):X[k++]=_):(R>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=R):(X[k++]=212,X[k++]=114,X[k++]=_),N&&(w+=O*N),v.length>=h&&(v.shift()[Fs]=0),v.push(I),S(D))}for(let R=0,V=D.length;R<V;R++)S(g[D[R]])},M=g=>{let D;if(g>16777216){if(g-r>f0)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(f0,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let E=new vp(D);return mt=new DataView(E.buffer,0,D),X.copy?X.copy(E,0,r,g):E.set(X.slice(r,g)),k-=r,r=0,to=E.length-10,X=E}}useBuffer(t){X=t,mt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};Sp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Gs];Rc=[{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:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+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?h0(i,16,t):m0(Lc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==y0&&this.structuredClone?h0(i,bp.indexOf(e.name),t):m0(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function h0(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function m0(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 jA(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 UA(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function di(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)");Sp.unshift(i.Class),Rc.unshift(i)}p0(i)}var g0=new en({useRecords:!1}),kA=g0.pack,HA=g0.pack;var{NEVER:WA,ALWAYS:qA,DECIMAL_ROUND:$A,DECIMAL_FIT:XA}=Dc,x0=512,YA=1024;var b0=new en({structuredClone:!0});di({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});di({Class:be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,be.prototype),i}});di({Class:Qe.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Qe.prototype),i}});di({Class:Vs.prototype.constructor,type:4,write(i){return i.id},read(i){return new Vs(i)}});di({Class:zs.prototype.constructor,type:5,write(i){return i.data},read(i){return new zs(i)}});di({Class:He.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,He.prototype),i}});function KA(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function wp(i){if(Jn(i))return i;if(Array.isArray(i))return i.map(wp);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=wp(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var Bc;(r=>{function i(o){return b0.pack(o)}r.serialize=i;function t(o){return b0.unpack(o)}r.deserialize=t;function e(o){return KA(i(wp(o))).toString()}r.checksum=e})(Bc||(Bc={}));var hi="personal camera",mi="a218fcc3-276b-49b9-b485-49037fd14f5f",T0=2960946,yt=5526619;var aa;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let x=f.sub(m,h),v=f.sub(y,h),w=f.dot(x,v)/f.dot(x,x),O=f.scalarMultiply(x,w);return f.add(h,O)}f.projectionOnto=u;function d(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=d;function p(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=p})(aa||(aa={}));var pi;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(pi||(pi={}));var v0;(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})(v0||(v0={}));var S0;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(S0||(S0={}));var fi;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(fi||(fi={}));var Ot;(p=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}p.isRGB=i,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}p.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}p.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}p.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}p.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}p.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}p.lerp=u;function d(f){return ft(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}p.is=d})(Ot||(Ot={}));var Ie;(u=>{u.white={...Ot.white,a:1};function t(d){return ft(d)?"r"in d&&"g"in d&&"b"in d&&"a"in d:!1}u.is=t,u.transparent={...Ot.white,a:0};function r(d){return{r:d[0],g:d[1],b:d[2],a:d[3]}}u.from0to1=r;function o(d,p){return{...Ot.fromHex(d),a:p}}u.fromHexAndA=o;function n(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:d.a}}u.toRgb255a1=n;function a(d,p){return Ot.equals(d,p)&&d.a===p.a}u.equals=a;function s(d,p){return Ot.equalsFixed(d,p)&&d.a.toFixed(2)===p.a.toFixed(2)}u.equalsFixed=s;function l(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f,a:d.a+(p.a-d.a)*f}}u.lerp=l;function c({r:d,g:p,b:f,a:h}=u.white){return`rgba(${d*255}, ${p*255}, ${f*255}, ${h})`}u.toStyle=c})(Ie||(Ie={}));var Vc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Vc||(Vc={}));var w0;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(w0||(w0={}));var P0;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(P0||(P0={}));var O0;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(O0||(O0={}));function Pp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var _r;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(_r||(_r={}));var yi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(yi||(yi={}));var oo;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(QA.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;ZA.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;JA.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;eM.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;tM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;rM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(oo||(oo={}));var zc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(zc||(zc={}));var QA=["count"],ZA=["radius","start","end","position","scale","rotation"],JA=["position","scale","rotation"],eM=["count","size"],tM=["count","position","scale","rotation"],rM=["strength","scale","rotation","position","movement","seed","freqScale"];var Gc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gc||(Gc={}));var Fc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Fc||(Fc={}));var sa;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(sa||(sa={}));var gi;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(gi||(gi={}));var Op;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Op||(Op={}));var Tp;(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})(Tp||(Tp={}));var jc;(t=>t.defaultData={...Tp.defaultData,...Op.defaultData})(jc||(jc={}));var C0;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(C0||(C0={}));var la;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(la||(la={}));var A0;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(A0||(A0={}));function I0(i){return i.type!=="displace"}var M0;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(M0||(M0={}));var E0=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],N0=["wrapping","image","video","name","minFilter","magFilter"],vt;(o=>{function i(n,a){let{texture:s,...l}=a;if(Object.assign(n,l),s){let c=n.texture;c&&Object.assign(c,s)}}o.patch=i;function t(n,a){return n==="light"&&a?e(a):r(n)}o.defaultData=t;function e(n){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(n){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(n){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(n){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:la.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(yt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(vt||(vt={}));var Tt;(c=>{function i(u){return!u.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}c.isMergable=i;function t(u){let d="";return u.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}c.getHash=t;function e(){return{layers:new be}}c.defaultEmptyData=e;function r(u="layer1",d="layer2"){return n("phong",u,d)}c.defaultData=r;function o(u,d){return{...u,name:d}}c.withName=o;function n(u,d="layer1",p="layer2"){let f=new be;return f.push({fi:0,data:vt.defaultData("light",u),id:d}),f.push({fi:1,data:vt.defaultData("color"),id:p}),{layers:f}}c.defaultTwoLayerData=n;function a(u){let d=vt.defaultData("texture");u&&Object.assign(d.texture,{image:u});let p=new be;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...vt.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...vt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}c.defaultUIObjectMaterial=a;function s(u,d="phong",p="layer1",f="layer2"){let h=vt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new be;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:vt.defaultData("light",d),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,d="phong",p="layer1",f="layer2"){let h=vt.defaultData("video");Object.assign(h.texture,{video:u});let m=new be;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:vt.defaultData("light",d),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Tt||(Tt={}));var ca;(t=>{function i(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ca||(ca={}));var ua;(t=>{function i(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(ua||(ua={}));var Cp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Uc;(t=>{function i(e,r){let o={...e};return oM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})(Uc||(Uc={}));var kc={shape:Cp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},oM=["depth","offset","angle","twist","startScale","endScale"];var js;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(js||(js={}));var Hc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Uc.merge(o.extrusion,r.extrusion))),o}t.merge=i})(Hc||(Hc={}));var io;(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==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:ua.defaultData(),extrusion:kc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ca.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(io||(io={}));var Wc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(Wc||(Wc={}));var qc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(qc||(qc={}));var Ap;(t=>t.defaultData={softShadowQuality:"low"})(Ap||(Ap={}));var Mp;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Mp||(Mp={}));var Ip;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Ip||(Ip={}));var Us;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Us||(Us={}));var Ep;(t=>t.defaultData={playCamera:hi,gameControlObject:null})(Ep||(Ep={}));var $c;(t=>t.defaultData={backgroundColor:Ie.fromHexAndA(T0,1),postprocessing:qc.defaultData,fog:Wc.defaultData,globalPhysics:Us.defaultData,ambient:Mp.defaultData,ao:Ip.defaultData,shadow:Ap.defaultData,publish:Ep.defaultData})($c||($c={}));var Xc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Xc||(Xc={}));var D0;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(D0||(D0={}));var da;(o=>{o.identity={...Vc.identity,hiddenMatrix:fi.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Wl({position:pi.isEqual(n.position,a.position)?void 0:a.position,rotation:pi.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:pi.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:fi.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(da||(da={}));var gt;(t=>t.defaultData={states:new be,events:new be,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:gi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...da.identity,cloner:null})(gt||(gt={}));var Yc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Yc||(Yc={}));var _0;(t=>t.defaultData={type:"ParticleCollider",...Xc.defaultData,...gt.defaultData})(_0||(_0={}));var R0;(t=>t.defaultData={type:"Component",...gt.defaultData})(R0||(R0={}));var L0;(t=>t.defaultData={type:"Particle",...gt.defaultData,...sa.defaultData})(L0||(L0={}));var Do;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...jc.defaultData})(Do||(Do={}));var tn;(t=>t.defaultData={...gt.defaultData,...da.identity,position:[0,0,yi.DefaultTargetOffset],...yi.defaultData})(tn||(tn={}));var Kc;(e=>{function i(r){return{...gt.defaultData,...Fc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Kc||(Kc={}));var pa;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(pa||(pa={}));var no;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new He,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=da.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(no||(no={}));var _o;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...gi.defaultData,fusedBody:!1},...$c.defaultData,camera:tn.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(_o||(_o={}));var Qc;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:fi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:gi.defaultData,states:new be,events:new be,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...yi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("RectangleGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("BooleanGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("ShapeBlendGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("TextGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("InputGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")}))(Qc||(Qc={}));var rn;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new He}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new He})))):_r.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=li(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let d=l.layers.data(c);d&&vt.patch(d,u)}}).data),s.materials&&a.materials&&(s.materials=li(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[d,p]of Object.entries(u.layers)){let f=l[c]?.layers?.data(d);f&&vt.patch(f,p)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let x={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(x)}if(Object.keys(y).length>0){let x={path:[...d,"layers",f],props:y,type:0};l.push(x)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...zc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")u(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))u(["materials",f],h);else if(c[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,da.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),_r.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Hc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:oo.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:oo.merge(s.cloner,a.cloner)});else if(Gc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Ot.clone(l.color))}return s}o.patch=r})(rn||(rn={}));var fa;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(fa||(fa={}));var vr;(t=>t.defaultData={orbitControls:fa.defaultData,playPage:mi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,format:"mp4",imageFormat:"jpg",activeTimeline:null},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(vr||(vr={}));var Np;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Np||(Np={}));var Dp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Dp||(Dp={}));var Ro;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Np.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Dp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ro||(Ro={}));var B0;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Bo.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(B0||(B0={}));var Lo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Kc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,d=[]){let p=[],f=Qc.defaultMeshObject;u&&(p.push({...c.defaultLight}),p.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),p.push(...d);let h=new Qe;return h.push({fi:1,id:mi,data:{..._o.defaultData,name:"Scene 1"},children:p}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:vr.defaultData,styles:Ro.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Qe,publish:vr.defaultData,styles:Ro.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:vr.defaultData,styles:Ro.defaultData()}},c.emptyData=function(){return{objects:new Qe,publish:{...vr.defaultData},styles:Ro.defaultData()}};function s(u){return{...c.defaultData,objects:Pt(u,Qe.prototype)}}c.withObjs=s;function l(u,d){return s([{id:u,data:d,children:[],fi:0}])}c.withObj=l})(Lo||(Lo={}));var ha;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ha||(ha={}));var Zc;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(Zc||(Zc={}));var V0;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new be,queries:new be,autoStart:!0}))(V0||(V0={}));var xi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(xi||(xi={}));var _p;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(_p||(_p={}));var z0;(t=>t.all=[..._p.all,"components"])(z0||(z0={}));var G0;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(G0||(G0={}));var Rr;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Rr||(Rr={}));var Sr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Pt(a,ue.prototype)}n.defaultColors=i;function t(){return Pt({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new be,userAPIs:new ue,userWebhooks:new ue,lib:Rr.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(Sr||(Sr={}));import{MathUtils as tu}from"three";var Jc;(t=>t.list=["idle","move","jump","run"])(Jc||(Jc={}));var eu;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(eu||(eu={}));function F0(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={...Dr(at(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...at(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Vo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function zo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Tt.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==He.prototype&&t(o.material)})})}function iM(i){Object.assign(i.scene.publish,{orbitControls:{...fa.defaultData,...at(i.scene.publish.orbitControls)}})}function nM(i){Object.assign(i.scene.publish.settings,{video:{...vr.defaultData.settings.video,...at(i.scene.publish.settings.video)}})}function aM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((E0.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(N0.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function sM(i){i.scene.publish.withBackground=!0}function lM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function cM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function uM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function dM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=at(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function pM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function fM(i){function t(r){Object.setPrototypeOf(r,He.prototype),r.texture&&Object.setPrototypeOf(r.texture,He.prototype)}function e(r){Object.setPrototypeOf(r,He.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=at(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=at(l).layers;e(c),l.layers=c}})})}function j0(i){i.layers===void 0&&Object.assign(i,Tt.defaultTwoLayerData("lambert"))}function Rp(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...at(t),colors:e,steps:r};Object.assign(t,o)}})}function hM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function U0(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Rp(r)}):"material"in e&&typeof e.material!="string"&&Rp(e.material)}),Object.values(i.shared.materials).forEach(t=>Rp(t))}function mM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function yM(i){i.shared.audios=Pt({},ue.prototype)}function gM(i){i.shared.videos=Pt({},ue.prototype)}function xM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function bM(i){Object.entries(at(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(at(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function vM(i){i.scene.publish.settings.web.preload=!1}function k0(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function H0(i){i.layers&&i.layers.forEach(t=>{I0(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function SM(i){i.shared.fonts=Pt({},ue.prototype)}function wM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function PM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Tt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=wM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...Do.defaultData,flatShading:!1,wireframe:!1,geometry:{...io.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=at(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function OM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new be,move:new be,jump:new be}});else{let n=new be;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:tu.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,Dr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new be({fi:0,id:tu.generateUUID(),data:c},{fi:1,id:tu.generateUUID(),data:p})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function TM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let d;s.push(c),l.interaction==="play"?d={...Dr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(d={...Dr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:u,id:c,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:tu.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function W0(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=vt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function q0(i){Vo(i,W0),zo(i,W0)}function CM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function AM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function MM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Tt.defaultTwoLayerData("phong"))})}function IM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function EM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function NM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function DM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function _M(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function RM(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function LM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=eu.defaultDataThirdPerson.navmesh)})})}function BM(i){i.scene.styles||(i.scene.styles=Ro.defaultData())}function $0(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function VM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),zo(i,$0),Vo(i,$0)}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new be})})})}function GM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function X0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Y0(i,t){if(t<1&&(zo(i,F0),Vo(i,F0),i.schema=1),t<2&&(iM(i),i.schema=2),t<3&&(aM(i),i.schema=3),t<4&&(sM(i),i.schema=4),t<5&&(lM(i),i.schema=5),t<6&&(cM(i),i.schema=6),t<7&&(uM(i),i.schema=7),t<8&&(i.schema=8),t<9&&(U0(i),i.schema=9),t<10&&(hM(i),i.schema=10),t<11&&(mM(i),i.schema=11),t<12&&(U0(i),i.schema=12),t<13&&(yM(i),i.schema=13),t<14&&(xM(i),i.schema=14),t<15&&(bM(i),i.schema=15),t<16&&(vM(i),i.schema=16),t<17&&(zo(i,k0),Vo(i,k0),i.schema=17),t<18&&(zo(i,j0),Vo(i,j0),i.schema=18),t<19&&(nM(i),i.schema=19),t<20&&(SM(i),PM(i),i.schema=20),t<21&&(OM(i),TM(i),i.schema=21),t<22&&(q0(i),i.schema=22),t<23&&(CM(i),i.schema=23),t<24&&(AM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(gM(i),t<25&&(i.schema=25)),t<26&&(dM(i),i.schema=26),t<27&&(pM(i),i.schema=27),t<28&&(q0(i),i.schema=28),t<29&&(fM(i),i.schema=29),t<30&&(MM(i),i.schema=30),t<31&&(IM(i),i.schema=31),t<33&&(EM(i),i.schema=33),t<34&&(NM(i),i.schema=34),t<35&&(DM(i),i.schema=35),t<36&&(_M(i),i.schema=36),t<37&&(RM(i),i.schema=37),t<38&&(zo(i,H0),Vo(i,H0),i.schema=38),t<39&&(LM(i),i.schema=39),t<40&&(BM(i),i.schema=40),t<41&&(VM(i),i.schema=41),t<42&&(zM(i),i.schema=42),t<43&&(GM(i),i.schema=43),t<99){zo(i,X0),Vo(i,X0),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=hi);let e=at(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=mi,r.insertBefore(null,null,[{id:mi,data:{..._o.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:Dr(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:Dr(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Us.defaultData,...Dr(i.scene.environment,"usePhysics","gravity")},camera:at(i.scene.ownerCamera)??_o.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Lo.TRASH_CAN_ID&&r.move(mi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,gi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function K0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function FM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function jM(i){Array.isArray(at(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ma=180/Math.PI;function Q0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*ma)}function Z0(i){Q0(i),i.type==="Page"&&Q0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ma))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ma),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ma),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ma,t.extrusion.twist*=ma),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(at(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function UM(i){i.shared.variables=Pt({},ue.prototype)}function kM(i){let t=at(i.shared.variables);i.shared.variables=Pt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),be.prototype)}var ao=119;function Lp(i,t){t(i.data);for(let e of i.children)Lp(e,t)}function HM(i){let t=i.schema??104;t!==ao&&(t<105&&(Lp(i.asset,Z0),i.schema=105),t<118&&(Lp(i.asset,J0),i.schema=118))}function WM(i){i.shared.particles=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=Rr.defaultData().particles)}function qM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function $M(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function XM(i){i.scene.objects.traverse((t,e)=>{Array.isArray(at(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function YM(i){i.shared.userAPIs=Pt({},ue.prototype),i.shared.userWebhooks=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=Rr.defaultData().userAPIs,i.shared.lib.userWebhooks=Rr.defaultData().userWebhooks)}function KM(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=vr.defaultData.settings.videoStatic)}function J0(i){i.timelineAnimations=Pt({},ue.prototype)}function ru(i){let t=i.schema??0;if(t!==ao){console.warn("updating from ",t,"to ",ao),Y0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=vr.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(zo(i,K0),Vo(i,K0),i.schema=101),t<102&&(FM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=Rr.defaultData(),i.schema=104),t<105&&(UM(i),i.scene.objects.traverse((e,r)=>{Z0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))HM(e);t<106&&(kM(i),i.schema=106),t<107&&(i.shared.lib.variables=Rr.defaultData().variables,i.schema=107),t<109&&(WM(i),i.schema=109),t<110&&(qM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{jM(r)}),i.schema=111),t<112&&($M(i),i.schema=112),t<113&&(XM(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(YM(i),i.schema=115),t<116&&(KM(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Pt({},ue.prototype),i.scene.objects.traverse((e,r)=>{J0(r)}),i.schema=118),t<119&&(i.scene.publish.settings.videoStatic.format=Bo.defaultData.scene.publish.settings.videoStatic.format,i.scene.publish.settings.videoStatic.imageFormat=Bo.defaultData.scene.publish.settings.videoStatic.imageFormat,i.schema=119)}}var Bo;(c=>{c.defaultData={schema:ao,scene:Lo.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:{...Sr.emptyData(),colors:Sr.defaultColors()}},c.emptyDataForImports=function(){let u=Lo.emptyDataWithPage();return{schema:ao,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:{...Sr.emptyData(),colors:Sr.defaultColors(),images:Sr.defaultImages()}}},c.emptyData=function(){return{schema:ao,scene:Lo.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:Sr.emptyData()}},c.clipboard2dData=function(){return{schema:ao,scene:Lo.emptyData(),frames:new ue,shared:Sr.emptyData()}},c.collabHelper={...Bs,updateSchema(u){return(u.schema??0)<ao?li(u,ru):(u.schema??0)-ao}};function n(u){let d=c.collabHelper.updateSchema(u);return typeof d=="number"?d===0?u:null:d.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:Rr.defaultData()}}}c.withoutLib=a;function s(u,d){let p=u.scene.objects.get(d);if(p&&p.data.type==="Component")return p;{let f=u.shared.lib.components[d];if(f)return f.asset}}c.getComponentData=s;function l(u){let d=Object.values(u.shared.userAPIs);for(let p of d){let f=p.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Bo||(Bo={}));var ou;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ou||(ou={}));var ex;(t=>{function i(e){return!0}t.is=i})(ex||(ex={}));var iu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Wl({position:aa.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:aa.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&aa.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(iu||(iu={}));var Bp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Bp||(Bp={}));var tx;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(tx||(tx={}));var nu;(t=>t.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(yt,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(nu||(nu={}));var on;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,iu.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,d]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=d);return c}n.toOps=o})(on||(on={}));var ks;(t=>t.defaultData={...iu.defaultData,...Bp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})(ks||(ks={}));var ya;(t=>t.defaultData={...ks.defaultData,...nu.defaultData})(ya||(ya={}));var au;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(au||(au={}));var Vp;(t=>t.defaultData={...ya.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Vp||(Vp={}));var ga;(t=>t.defaultData={...ya.defaultData,...au.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(ga||(ga={}));var zp;(t=>t.defaultData={...ya.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(zp||(zp={}));var Gp;(t=>t.defaultData={...ya.defaultData,type:"path2d",path:"",name:"Path"})(Gp||(Gp={}));var rx;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(rx||(rx={}));var Hs;(t=>t.defaultData={...ks.defaultData,name:"Group",type:"group2d"})(Hs||(Hs={}));var Fp;(t=>t.defaultData=()=>({...ks.defaultData,...au.defaultData,...nu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Fp||(Fp={}));var Go;(n=>{function i(a){switch(a){case"rectangle2d":return{...ga.defaultData};case"ellipse2d":return{...Vp.defaultData};case"text2d":return{...zp.defaultData};case"vector2d":return{...ga.defaultData};case"path2d":return{...Gp.defaultData};case"frame2d":return{...Fp.defaultData()};case"group2d":return{...Hs.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(Go||(Go={}));var su;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Qe},e.emptyData=function(){return{type:"scene2d",objects:new Qe}}))(su||(su={}));import{Color as QM}from"three";var Ct=class extends QM{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)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var ad=Is(ix());import{Object3D as fD,Vector3 as hr,Euler as wh,MathUtils as Uv,Matrix4 as wn}from"three";var ZM=.5*(Math.sqrt(3)-1),Ws=(3-Math.sqrt(3))/6,JM=1/3,so=1/6,U6=(Math.sqrt(5)-1)/4,k6=(5-Math.sqrt(5))/20,qs=i=>Math.floor(i)|0,nx=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Up=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function ax(i=Math.random){let t=lx(i),e=new Float64Array(t).map(o=>nx[o%12*2]),r=new Float64Array(t).map(o=>nx[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*ZM,d=qs(n+u),p=qs(a+u),f=(d+p)*Ws,h=d-f,m=p-f,y=n-h,x=a-m,v,w;y>x?(v=1,w=0):(v=0,w=1);let O=y-v+Ws,S=x-w+Ws,T=y-1+2*Ws,M=x-1+2*Ws,g=d&255,D=p&255,E=.5-y*y-x*x;if(E>=0){let _=g+t[D],R=e[_],V=r[_];E*=E,s=E*E*(R*y+V*x)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],R=e[_],V=r[_];I*=I,l=I*I*(R*O+V*S)}let N=.5-T*T-M*M;if(N>=0){let _=g+1+t[D+1],R=e[_],V=r[_];N*=N,c=N*N*(R*T+V*M)}return 70*(s+l+c)}}function sx(i=Math.random){let t=lx(i),e=new Float64Array(t).map(n=>Up[n%12*3]),r=new Float64Array(t).map(n=>Up[n%12*3+1]),o=new Float64Array(t).map(n=>Up[n%12*3+2]);return function(a,s,l){let c,u,d,p,f=(a+s+l)*JM,h=qs(a+f),m=qs(s+f),y=qs(l+f),x=(h+m+y)*so,v=h-x,w=m-x,O=y-x,S=a-v,T=s-w,M=l-O,g,D,E,I,N,_;S>=T?T>=M?(g=1,D=0,E=0,I=1,N=1,_=0):S>=M?(g=1,D=0,E=0,I=1,N=0,_=1):(g=0,D=0,E=1,I=1,N=0,_=1):T<M?(g=0,D=0,E=1,I=0,N=1,_=1):S<M?(g=0,D=1,E=0,I=0,N=1,_=1):(g=0,D=1,E=0,I=1,N=1,_=0);let R=S-g+so,V=T-D+so,U=M-E+so,B=S-I+2*so,q=T-N+2*so,j=M-_+2*so,F=S-1+3*so,H=T-1+3*so,W=M-1+3*so,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-R*R-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+E]];K*=K,u=K*K*(e[$]*R+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)d=0;else{let $=ee+I+t[te+N+t[Y+_]];Z*=Z,d=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)p=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,p=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+d+p)}}function lx(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as eI}from"three";var Lr=new eI,lu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Lr.a.fromBufferAttribute(t,o),Lr.b.fromBufferAttribute(t,o+1),Lr.c.fromBufferAttribute(t,o+2),n*=Lr.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Lr.a.fromBufferAttribute(this.positionAttribute,t*3),Lr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Lr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Lr.a,o).addScaledVector(Lr.b,n).addScaledVector(Lr.c,1-(o+n)),Lr.getNormal(r),this}};import{Object3D as nI}from"three";var dx=Is(ux());import{Object3D as tI,Matrix4 as lo}from"three";var rI=new lo,oI=new lo,iI=new lo,Fo;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(Fo||(Fo={}));var xa=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new lo;this.copyPreviousMatrix=!0;this.hiddenMatrix=new lo;this.matrixWorldRigid=new lo;this.shearScale=new lo;this.shearScaleInv=new lo}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof tI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let 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 a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)Fo.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fo.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,dx.SVD)(o),l=rI.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=oI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=iI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new lo().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof lo?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var kp=class extends xa(nI){},aI=i=>i.type==="Mesh",Br=class extends kp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Br(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return aI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as ME,BufferGeometry as IE,MeshBasicMaterial as EE}from"three";import{Matrix4 as CE,Mesh as AE}from"three";import{Matrix4 as du,Vector3 as hx,Euler as pI,MathUtils as Xs}from"three";import{Box3 as sI,Line3 as lI,Matrix4 as Hp,Vector3 as dr}from"three";var nn=new dr,an=new dr,ba=new Hp,fx=[new dr(-1,1,1),new dr(-1,-1,1),new dr(1,-1,1),new dr(1,1,1),new dr(-1,1,-1),new dr(-1,-1,-1),new dr(1,-1,-1),new dr(1,1,-1)],cI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],uI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],px=(i,t,e)=>{i.updateEntityBoxSize(nn,an),ba.copy(t).multiply(i.matrixWorld),an.x===0&&an.y===0&&an.z===0?e.push(new dr(nn.x,nn.y,nn.z).applyMatrix4(ba)):fx.forEach(r=>{e.push(r.clone().multiply(an).add(nn).applyMatrix4(ba))})},$s=class extends sI{constructor(){super(...arguments);this.matrix=new Hp;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 Hp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new dr);return}px(a,r,n)}}):px(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(ba.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(an).multiplyScalar(.5),this.getCenter(nn),ba.copy(this.matrix).setPosition(nn),this.vertices=fx.map(e=>e.clone().multiply(an).applyMatrix4(ba))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=cI.map(([e,r])=>new lI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new dr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=uI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Vr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as dI,CubicBezierCurve3 as Wp,Vector3 as zr}from"three";var $p=class extends dI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*u/a),p=c.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Xp=.001;function Yp(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=Xp}function qp(i,t){let e=new zr(...i.position),r=new zr(...i.controlNext.position),o=new zr(...t.controlPrevious.position),n=new zr(...t.position);return Yp(e,r,n)&&Yp(e,o,n)}function uu(i){let t=i.points.map(u=>new zr(...u.data.position)),e=[i.points[0]],r=new zr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)Yp(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let d=e[u].data,p=new zr(...d.position),f=new zr(...d.controlPrevious.position),h=new zr(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,x=o&&u==a-1?0:u+1,v=e[y].data,w=e[x].data,O=new zr(...v.position),S=new zr(...w.position),T=O.clone().sub(p).normalize(),M=S.clone().sub(p).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=qp(v,d),D=qp(d,w);if(!g||!D)s[u]={...m,removedLength:0};else{let E=T.clone().add(M).normalize(),I=E.clone().cross(T).length()/T.dot(E);s[u]={...m,tan:I,removedLength:d.roundness/I}}}for(let u=0;u<n;u++){let d=u,p=o&&u===a-1?0:u+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let d=u,p=o&&u===a-1?0:u+1,f=s[d],h=s[p],m=null;if(!qp(e[d].data,e[p].data))f.position.distanceTo(h.position)>Xp&&(m=new Wp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),x=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&x.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(x)>Xp&&(m=new Wp(y,y.clone().lerp(x,.3),x.clone().lerp(y,.3),x))}l[2*u+1]=m}for(let u=0;u<a;u++){let d=s[u];if(d.removedLength===0){l[2*u]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),x=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(x),O=y.clone().multiplyScalar(-m).add(w),S=p.distanceTo(O)/p.distanceTo(x),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Wp(f,g,D,h)}let c=new $p;return l.forEach(u=>{u&&c.add(u)}),c}var De;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(De||(De={}));var va=i=>De.is(i),fI={type:"completeState",isfromEntity:!0},hI=["x","y","z"],Kp=new hx,mI=new hx().set(0,1,0),Sa=i=>class extends xa(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new $s;this._recursiveBBox=new $s;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(De.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(De.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(De.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)rn.toOps(this.data,a.data).forEach(l=>{let c=ra.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=rn.patch(this.data,a),rn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{va(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(De.is(o[n]))return o[n];if(De.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&De.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)va(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{De.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)va(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)va(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)va(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>va(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Xs.RAD2DEG,this.rotation.y*Xs.RAD2DEG,this.rotation.z*Xs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Qn(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,hI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(Kp.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Xs.DEG2RAD),this.rotation.setFromVector3(Kp),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??fi.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)De.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{De.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Qn(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Le(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ze.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:p,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:p,...f}=u;u=f}let d=Ze.removeOverridden(r.path,r.props,u);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,rn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Le(r.path,["overrides"])){let u=[],d=[...r.path];for(u.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)u.push(d[1]),d.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){u[u.length-1]=p;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[p],f.updateState(Zr.apply(f.component.data,f.overrideData),n))}}else{let p=n.scene.findInstance([this.uuid,...u]);if(p){let f=Ze.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=pa.resolve(o.overrides,u),p.updateByOp(r,nt.applySimple(p.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let d;for(let p of no.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(u={...r,props:d})}else for(let d of no.rootOverrideProps)if(Le(r.path,[d])){u=r;break}u!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Zr.filterOp(d.overrideData,u);p&&d.updateByOp(p,nt.applySimple(d.data,p),n,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Zr.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=nt.applySimple(d.data,p),d.updateByOp(p,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!_r.is(r.props.type)&&Vr.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Vr.changeEntityProptotype(this,o,n);for(let a of this.children)De.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Le(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(r.path,["cloner"])!==null){let a=nt.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=uu(c.geometry.path),d=(n+a)%1;n+a===1&&d===0&&(d=1);let p=null;try{p=u.curves.length?u.getPointAt(d):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new du;l.updateMatrixWorld();let h=new du().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new du().extractRotation(l.matrixWorld),x=u.getTangentAt(d).applyMatrix4(y).add(p),v=new du().lookAt(p,x,mI),w=Kp.setFromEuler(new pI().setFromRotationMatrix(v)).multiplyScalar(Xs.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(fI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Vr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Vr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as xI,ConeGeometry as bI,Float32BufferAttribute as vI,MathUtils as SI}from"three";import{BufferGeometry as yx,CylinderGeometry as yI,Float32BufferAttribute as fu,MathUtils as gI,Vector2 as Gr,Vector3 as pu}from"three";var gx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=gI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:d,cornerSegments:p,hollow:f}=i.parameters,h;return l===0?(h=new yx,h.setAttribute("position",new fu([],3))):d||f?h=new Ys(c,u,r,o,n,a,s,l*Math.PI/180,d,d,p,f):h=new yI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function bi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function mx(i){return new Gr(i.y,-i.x)}var Ys=class extends yx{constructor(t,e,r,o,n,a,s,l,c,u,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],x=[],v=0,w=r/2,O=new pu,S=new pu;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new Gr(t,w),M=new Gr(e,-w),g=null,D=null,E=null,I=null,N=T.clone().sub(M),_=0,R=0,V=0;p>0&&(_=Math.min(t,e)*(1-p),R=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-N.angle(),q=N.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=p?H:F,ee=p?H:j;if(c=Math.min(c,(t-R)/W,N.length()/H),u=Math.min(u,(e-V)/ee,N.length()/H),c>0){let Q=c/j;g=T.clone().sub(new Gr(Q,c)),p&&(E=g.clone(),E.x-=_-H*c),T.sub(N.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new Gr(Q,-u)),M.add(N.clone().setLength(Q)),p&&(I=D.clone(),I.x-=_-H*u,U.sub(N.clone().setLength(Q)))}N=T.clone().sub(M);let te=N.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new Gr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=mx(N).normalize();if(bi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=N.clone().multiplyScalar(me).add(M);bi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),x.push(de,.5+S.y/r),$.push(v++)}if(E&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,E,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,R,1),p&&!te){let ae=mx(N).multiplyScalar(-1).normalize();bi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=N.clone().multiplyScalar(-fe).add(U);bi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),x.push(de,.5+S.y/r),$.push(v++)}}p&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&p&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new fu(m,3)),this.setAttribute("normal",new fu(y,3)),this.setAttribute("uv",new fu(x,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<d+1;fe++){let he=fe/d,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Gr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ie).add(ce);bi(C,de,S),m.push(S.x,S.y,S.z),bi(ye,de,O),y.push(O.x,O.y,O.z),x.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new pu,ae=new Gr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),bi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),x.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new Gr(Math.sin(de),Math.cos(de)),ie=new Gr(-Math.cos(de),Math.sin(de)),ce=new pu,ae=Q<0?(he,xe,ye)=>h.push(he,xe,ye):(he,xe,ye)=>h.push(he,ye,xe),me=new Gr((t+e+R+V)/4,0);bi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),x.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ie.x,0,ie.y);let ye=x.slice(he*2,he*2+2);x.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var xx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=SI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:d}=i.parameters,p;return l===0?(p=new xI,p.setAttribute("position",new vI([],3))):c>0||u>0||l<360?p=new Ys(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,d,0,!0):p=new bI(t/2,r,o,n,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as wI,BufferGeometry as PI,Float32BufferAttribute as Qp,Vector3 as Ks}from"three";var bx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new wI(t,e,r,o,n,a):c=new Jp(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},Zp=Math.PI/2,Jp=class extends PI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],d=[],p=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new Qp(u,3)),this.setAttribute("normal",new Qp(d,3)),this.setAttribute("uv",new Qp(p,2));function h(x,v,w,O,S,T,M,g,D,E){let I=(T-2*s)/D,N=(M-2*s)/E,_=T/2-s,R=M/2-s,V=g/2,U=D+1,B=E+1,q=0,j=new Ks;for(let F=0;F<B;F++){let H=F*N-R;for(let W=0;W<U;W++){let ee=W*I-_;j[x]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[x]=0,j[v]=0,j[w]=g>0?1:-1,d.push(j.x,j.y,j.z),p.push(W/D),p.push(1-F/E),q+=1}}for(let F=0;F<E;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(x,v,w,O,S,T,M,g,D,E){let I=(M-2*s)/E,N=M/2-s,_=g/2-s,R=D/2,V=E+1,U=0,B=new Ks,q=new Ks;for(let j=0;j<l+1;j++){let F=j/l*Zp,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(R-W)*T,q[x]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-N;B[x]=re*O,u.push(B.x,B.y,B.z),d.push(q.x,q.y,q.z),p.push(Y/E),p.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<E;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(x,v,w){let O=new Ks,S=new Ks(t/2,e/2,r/2);S.subScalar(s);let T=[],M=x*v*w>0?(D,E,I)=>c.push(D,E,I):(D,E,I)=>c.push(D,I,E);for(let D=0;D<=l;D++){let E=[],I=Zp*(1-D/l),N=Math.cos(I),_=Math.sin(I),R=0;for(let V=0;V<=D;V++){let U=Math.cos(R),B=Math.sin(R);O.x=N*U,O.y=_,O.z=N*B;let q=S.clone().addScaledVector(O,s);u.push(x*q.x,v*q.y,w*q.z),d.push(x*O.x,v*O.y,w*O.z),p.push(0,0),E.push(f++),R+=Zp/D}T.push(E)}let g=T.length-1;for(let D=0;D<g;D++){let E=T[D],I=T[D+1],N=E.length-1;M(E[0],I[1],I[0]);for(let _=1;_<=N;_++)M(E[_-1],E[_],I[_]),M(E[_],I[_+1],I[_])}}}};import{BufferGeometry as OI,Float32BufferAttribute as ef,Triangle as TI,Vector3 as jo,Vector2 as tf}from"three";var vi=class extends OI{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),d(),this.setAttribute("position",new ef(s,3)),this.setAttribute("normal",new ef(c,3)),this.setAttribute("uv",new ef(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new jo,m=h.clone(),y=new TI,x=n*o,v=o-x,w=a+1,O=new jo,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new jo().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let E=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],E.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];E.push(H,W,H+a+2)}}let I=h.clone(),N=h.clone(),_=h.clone(),R=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new jo;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*x;a==0?N.copy(te):N.copy(I).setLength(v+ce),W.push(ce);let ae=[N,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];R.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(R,V).normalize();for(let xe=0;xe<w;xe++){let ye=[le,ie][me]*xe/w;h.copy(R).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([xe==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){R=H[Z+le],V=H[Q+le],$.push(R);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(R,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=E.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function d(){let p=new jo;for(let M=0;M<s.length;M+=3){p.x=s[M+0],p.y=s[M+1],p.z=s[M+2];let g=S(p)/2/Math.PI+.5,D=T(p)/Math.PI+.5;l.push(g,1-D)}let f=new jo,h=new jo,m=new jo,y=new jo,x=new tf,v=new tf,w=new tf,O=(M,g,D,E)=>{E<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),x.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(x,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],E=l[M+4],I=Math.max(g,D,E),N=Math.min(g,D,E);I>.9&&N<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new vi(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as CI}from"three";var vx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new Qs(t*.5,n,a):new CI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},Qs=class extends vi{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-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],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Qs(t.radius,t.corner,t.cornerSides)}};import{Plane as VI,Shape as Lx,Vector2 as Uo,Vector3 as zI,MathUtils as cf,LineCurve as uf,QuadraticBezierCurve as Bx,CubicBezierCurve as gu}from"three";import{CubicBezierCurve as hu,EllipseCurve as AI,LineCurve as mu,LineCurve3 as MI,MathUtils as II,QuadraticBezierCurve as of,SplineCurve as EI,Vector2 as qt,Vector3 as Px}from"three";var Zs=1e-12,wa=class{constructor(t){this.position=new qt;this.startPosition=new qt;this.uuid=II.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 wa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Pa=class extends wa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Pa(this.parent).copy(this)}},Fr=class extends wa{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Pa(this),new Pa(this))}static create(e,r){let o=new Fr(e,new qt(...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 a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Fr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new qt,r=new qt){let[o,n]=this.computeTangents();return o&&n&&(Sx(o,e),Sx(n,r)),[e,r]}computeTangent(e=new qt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new qt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Sx(i,t=new qt){let e=i.length();return t.set(-i.y/e,i.x/e)}var nf=i=>i,Oa=new qt,yu=new qt,NI=new qt,DI=new qt,_I=new qt,RI=new qt,Ox=new Px,Tx=new Px;function Cx(i){let t=new qt;t.addVectors(i.v0,Oa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new qt;return e.addVectors(i.v2,yu.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new hu(i.v0,t,e,i.v2)}function Js(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function LI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function BI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function af(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 Ax(i,t,e){return wx(i,t)&&wx(t,e)&&rf(i.position,t.position,e.position)}function rf(i,t,e){return Oa.copy(t).sub(i).cross(yu.copy(e).sub(i))===0}function Mx(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(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(s+l,a+c),o.set(s-l,a-c),[r,o]}function Ix(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Ex(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),d;return af(t,i,e)>Math.PI&&(u*=-1),Js(c,s)?d=(s+c)*(r/u-.5)*8/3/(a-l):d=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-d*s,t.y+d*a),n.set(e.x+d*c,e.y-d*l),[o,n]}function sf(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function wx(i,t){return rf(i.position,i.controls[1].position,t.position)&&rf(i.position,t.controls[0].position,t.position)}function Nx(i,t,e,r,o=.5){let n=Oa.subVectors(t,i).multiplyScalar(o).add(i),a=yu.subVectors(e,t).multiplyScalar(o).add(t),s=NI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=DI.subVectors(a,n).multiplyScalar(o).add(n),u=_I.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=RI.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,p.x,p.y,u.x,u.y,d.x,d.y,r.x,r.y]}function Dx(i,t,e=12,r=!0){let o=Tx.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=nf(t[l]),u=Oa,d=Si(c,e);s.push(d);for(let p=0;p<=d;p++)if(c instanceof hu||c instanceof of||c instanceof mu){if(c.getPoint(p/d,u),o.set(u.x,u.y,0),n!==void 0&&BI(n,o))continue;n===void 0&&(n=Ox),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function _x(i,t,e,r=12,o=!0){let n=Tx.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=nf(t[l]),d=Oa,p=Si(u,r);s.push(p);for(let f=0;f<=p;f++)if(u instanceof hu||u instanceof of||u instanceof mu){if(u.getPoint(f/p,d),n.set(d.x,d.y,0),c?.equals(n))continue;c===void 0?c=Ox:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function lf(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=Si(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Si(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Si(i[0].roundedCurveCorner,t)*.5),r}function Si(i,t=12){return i&&i instanceof AI?t*2:i&&(i instanceof mu||i instanceof MI)?1:i&&i instanceof EI?t*i.points.length:t}function Rx(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=nf(t[a]),l=Si(s,e),c=Oa;for(let u=0;u<=l;u++)if(s instanceof hu||s instanceof of||s instanceof mu){if(s.getPoint(u/l,c),o!==void 0&&LI(o,c,Zs))continue;o===void 0&&(o=yu),o.copy(c),i.push(c.x,c.y),n++}}return Js(i[0],i[i.length-2],Zs)&&Js(i[1],i[i.length-1],Zs)&&(i.pop(),i.pop()),r&&n>1&&!(Js(i[n-1],i[1],Zs)&&Js(i[n-2],i[0],Zs))&&(i.push(i[0],i[1]),n++),i}var df=new Uo,GI=new Uo,FI=new Uo,jI=new Uo,UI=new Uo,kI=new Uo,je=class extends Lx{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new VI(new zI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=cf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new je;return n.isClosed=e.isClosed,n.points=e.points.map(a=>Fr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>je.createFromState(a)),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 a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=df.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=cf.generateUUID()){let n;e instanceof Uo?n=e:n=new Uo(e,r);let a=new Fr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return Dx(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=lf(this.points,e,!1),this.roundedCurveDivisions=lf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return _x(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Rx(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,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=Si(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(sf(n,a)){let d=n.position.distanceTo(a.position);return n.position.distanceTo(df.set(o.x,o.y))/d}let c=0;for(let d=0;d<e;d++)c+=s[d];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){sf(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(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&Ax(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),x=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(x,v),O=1-w/m,S=w/y,T=d.getPointAt(O,df),M=p.getPointAt(S,GI);this._subSplitCurve(d,f,O,T,void 0),this._subSplitCurve(p,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=af(T,a.position,M)/2,E=Math.tan(D)*T.distanceTo(a.position),[I,N]=Mx(T,M,E,FI,jI),_=Ix(I,N,a.position),[R,V]=Ex(_,T,M,E,UI,kI);g=new gu(T.clone(),R.clone(),V.clone(),M.clone())}else g=new Bx(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof uf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=Nx(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new je(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],d=e.points[n+5],p=e.points[n+6],f=new Fr(cf.generateUUID(),new Uo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new je;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof gu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Bx&&(a[l]=Cx(a[l]));for(l=0,c=a.length;l<c;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof gu?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof uf&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],d=!1;return u instanceof gu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),d=!0):u instanceof uf&&u.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=n(e.curves),e instanceof Lx&&(this.shapeHoles=e.holes.map(a=>{let s=new je;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var ff=Math.PI*2;function pf({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function HI(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),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function Vx(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 WI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),d=Math.pow(n,2),p=Math.pow(a,2),f=Math.pow(s,2),h=u*d-u*f-d*p;h<0&&(h=0),h/=u*f+d*p,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,x=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=Vx(1,0,w,O),g=Vx(w,O,S,T);return!c&&g>0&&(g-=ff),c&&g<0&&(g+=ff),{centerx:x,centery:v,ang1:M,ang2:g}}function zx({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let d=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);d>1&&(o*=Math.sqrt(d),n*=Math.sqrt(d));let p=WI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,x=Math.abs(h)/(ff/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);h/=v;for(let w=0;w<v;w++)l.push(HI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=pf(w[0],o,n,m,y),{x:T,y:M}=pf(w[1],o,n,m,y),{x:g,y:D}=pf(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as wu,BufferGeometry as r3}from"three";var Fe;(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"})(Fe||(Fe={}));var st;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(st||(st={}));function we(i,t){if(!i)throw t||"Assertion Failed!"}var ve=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){we(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){we(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){we(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){we(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 a,s,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)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,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)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),el=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}(),xu=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}(),Ta=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}(),Gx=function(){function i(){var t=new Ta,e=new el,r=new xu(0),o=new xu(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 xu(0),r=new xu(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;we(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 a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;we(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 a=e;do a.Lface=o,a=a.Lnext;while(a!==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,a=t.next;a.prev=n,n.next=a},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,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Ta,e=new Ta,r=new el,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 Ta;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new el;this.makeFace_(a,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 el;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 Ta;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 a=new el;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),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);a=t.prev,s=t.next,s.prev=a,a.next=s},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,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){we(o.prev===n),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(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}(),Fx=function(){function i(){this.handle=null}return i}(),jx=function(){function i(){this.key=null,this.node=0}return i}(),qI=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 Fx,this.handles[r]=new jx;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,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,we(a<=this.max),n=e[a].handle,a>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=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===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=a}},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 Fx;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new jx}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;we(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}(),hf=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}(),Ux=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),$I=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Ux,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 Ux;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}(),XI=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,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){we(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 hf;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 Fe.ODD:return(e&1)!==0;case Fe.NONZERO:return e!==0;case Fe.POSITIVE:return e>0;case Fe.NEGATIVE:return e<0;case Fe.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,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,d=!0;c=r;do we(ve.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,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),d=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.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(ve.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,a;if(we(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,d,p=new Ta,f,h;if(we(!ve.vertEq(c,l)),we(ve.edgeSign(l,t.event,a)<=0),we(ve.edgeSign(c,t.event,s)>=0),we(a!==t.event&&s!==t.event),we(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),d=Math.max(s.t,c.t),u>d))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,p),we(Math.min(a.t,l.t)<=p.t),we(p.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=p.s),we(p.s<=Math.max(s.s,a.s)),ve.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ve.vertEq(p,a)||ve.vertEq(p,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,p)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,p)<=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),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,p)>=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),ve.edgeSign(c,t.event,p)<=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=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,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,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,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,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){we(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.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}we(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(we(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new hf;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.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);we(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new hf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,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 $I(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,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++r===1)),we(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,ve.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 qI(n,ve.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,we(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||!ve.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}(),YI=function(){function i(){this.mesh=new Gx,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=Fe.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,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var x=0;x<3;++x)n=e.coords[x],n<c[x]&&(c[x]=n,h[x]=e),n>l[x]&&(l[x]=n,f[x]=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(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=u[1]*d[2]-u[2]*d[1],p[1]=u[2]*d[0]-u[0]*d[2],p[2]=u[0]*d[1]-u[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.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 a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);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(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.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&&(ve.edgeGoesRight(r.Lprev)||ve.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,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===st.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var d=c.n*o;this.vertices[d+0]=c.coords[0],this.vertices[d+1]=c.coords[1],o>2&&(this.vertices[d+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var p=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[p++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===st.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[p++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Gx),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,a){if(t===void 0&&(t=Fe.ODD),e===void 0&&(e=st.POLYGONS),a===void 0&&(a=!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_(),XI.computeInterior(this,a);var s=this.mesh;return e===st.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===st.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function jr(i){var t=i.windingRule,e=t===void 0?Fe.ODD:t,r=i.elementType,o=r===void 0?st.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,d=i.contours,p=d===void 0?[]:d,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var x=new YI;i.edgeCreateCallback&&(x.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(x.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<p.length;v++)x.addContour(l||2,p[v]);return x.tesselate(e,o,a,l,u,h),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:y?x.mesh:void 0}}}var bq=Fe.ODD,vq=Fe.NONZERO,Sq=Fe.POSITIVE,wq=Fe.NEGATIVE,Pq=Fe.ABS_GEQ_TWO,Oq=st.POLYGONS,Tq=st.CONNECTED_POLYGONS,Cq=st.BOUNDARY_CONTOURS;import{Box2 as JI,BufferAttribute as Su,BufferGeometry as e3,Vector2 as t3}from"three";var bu=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*bu.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*bu.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,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)}},tl=bu;tl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var rl=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function mf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let d=new rl([],(v,w)=>w.max-v.max),p=QI(i),f=new vu(o+l/2,n+c/2,0,i);f.d>p.d&&(p=f);let h=2;function m(v,w,O){let S=new vu(v,w,O,i);if(h++,S.max>p.d+e&&d.push(S),S.d>p.d&&(p=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),p.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;d.length;){let{max:v,x:w,y:O,h:S}=d.pop();if(v-p.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
|
|
3
|
-
best distance: ${p.d}`);let x=[p.x,p.y];return x.distance=p.d,x.distance}function vu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=KI(i,t,r),this.max=this.d+this.h*Math.SQRT2}function KI(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,ZI(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function QI(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],d=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*d,r+=(c[1]+u[1])*d,t+=d*3}let n=new vu(e/t,r/t,0,i);return t===0||n.d<0?new vu(o[0][0],o[0][1],0,i):n}function ZI(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var ol={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},gf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},xf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},yf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),wi=class extends e3{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let N=I.extractShapePointsToFlatArray([],n),_=[];for(let R=N.length-1;R>=1;R-=2){let V=N[R-1],U=N[R-0];_.push(V,U)}return _}),d=[],p=[];for(let I=0;I<c.length;I+=2)p.push([c[I],c[I+1]]);d.push(p);for(let I=0;I<u.length;I++){let N=u[I],_=[];for(let R=0;R<N.length;R+=2)_.push([N[R],N[R+1]]);d.push(_)}let f;e.isText?f=new JI().setFromPoints(e.points.map(N=>N.position)).getSize(new t3).length()*.1:d[0].length===0?f=o:o>0?f=mf(d,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=jr({windingRule:s,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=ol}let m;try{m=jr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=gf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let N=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let I=0;I<m.vertexIndices.length;I++){let N=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let I=0;I<m.vertices.length;I++){let N=m.vertices[I];h.vertices.push(N)}}let x=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,N=h.vertexCount;I<N;I++){let _=I*2,R=h.vertices[_+0],V=h.vertices[_+1];R<x&&(x=R),R>v&&(v=R),V<w&&(w=V),V>O&&(O=V)}this._minX=x,this._minY=w,this._width=v-x,this._height=O-w,this._buffer=new tl(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let N=I>=y,_=I*2,R=h.elements[_+0],V=h.elements[_+1],U=R+V,B={start:R,count:V,normals:[],continuous:[],concave:[]},q=R,j=U-1,F=R+1,H=this._shape.roundedCurves.length;do{let re=q-R,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let xe=h.vertexIndices[q];if(Array.isArray(xe))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let Ne=C===1?0:1,Ve=this._shape.roundedCurves[ye].getTangent(C),_e=this._shape.roundedCurves[ne].getTangent(Ne);B.continuous[re]=Ve.dot(_e)>.95}}N&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==R+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(R*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(R*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],xe=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,Ne=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&N){let Ve=Math.atan2(C,ye),_e=Math.atan2(Ne,ne);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(B.continuous[ae]||N){let St=Ve+Pe/2,Me=Math.cos(St)*Z,bt=Math.sin(St)*Z;Q[2*ie+0]=he+Me*(N?-1:1),Q[2*ie+1]=xe+bt*(N?-1:1),le[ie]=ae,ie++}else{let St=Math.max(1,Math.floor(n/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=St;Me++){let bt=Ve+Pe*(Me/St),wt=Math.cos(bt)*Z,Hi=Math.sin(bt)*Z;Q[2*ie+0]=he+wt,Q[2*ie+1]=xe+Hi,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=xe+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=xe,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=xe+Ne,le[ie]=ae,de[ae]=ie,ie++}let ce=jr({windingRule:Fe.POSITIVE,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],xe=le[(fe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=yf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=yf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ne,Ne,Ve=!1;do{fe=(le||de)/de,ie=yf(le,V);let _e=te(K,ce,ie),Pe=te(Z,ae,ie),St=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(C.topN,ye.topP,Ne.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Ne.bottomP),C=Ne;else if(_e&&Pe)if(ne=this._buildBevelVert(B,K,ce,0,fe),Ne=this._buildBevelVert(B,Z,ae,0,fe),St?(S.push(ye.topN,Ne.topP,C.topN),S.push(ye.topN,ne.topP,Ne.topP),l===!1&&(S.push(Ne.bottomP,ye.bottomN,C.bottomN),S.push(Ne.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP))),ye=ne,C=Ne,_e===Pe)for(let Me=1;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP)),ye=ne,C=Ne;else if(_e>Pe){let Me=_e/Pe,bt=0;for(let wt=1;wt<_e;wt++)ne=this._buildBevelVert(B,K,(ce+wt)%Q,wt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,wt>(bt+1)*Me&&(bt++,Ne=this._buildBevelVert(B,Z,(ae+bt)%$,bt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne)}else{let Me=Pe/_e,bt=0;for(let wt=1;wt<Pe;wt++)Ne=this._buildBevelVert(B,Z,(ae+wt)%$,wt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne,wt>(bt+1)*Me&&(bt++,ne=this._buildBevelVert(B,K,(ce+bt)%Q,bt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),N){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(N){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!N){let re=W[W.length-1],K;try{K=jr({windingRule:W.length>1?Fe.POSITIVE:Fe.ODD,elementType:st.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=xf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new Su(Uint32Array.from(S),1),g=new Su(this._buffer.positions,3),D=new Su(this._buffer.normals,3),E=new Su(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),d=u*3,p=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=c,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,d,p,f;l!==c?(d=l,u=c,f=!1,p=e.continuous[d]&&e.continuous[u]):(u=l,d=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,p=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,x=u*2,v=d*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[x+0],D=e.normals[x+1],E=e.normals[v+0],I=e.normals[v+1];if(f){let U=E-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let N=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),_=N*3,R=N*2,V={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T),p||(this.forPathBevel?(N+=1,_+=3,R+=2):(N+=2,_+=6,R+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new wi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Eo(this.userData),e}};var Ca=class extends r3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Fe.ODD;this.elementType=st.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,d;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,x=n[y+0],v=n[y+1];if(u!==void 0&&x!==u&&(l=!1),d!==void 0&&v!==d&&(c=!1),u=x,d=v,!l&&!c)break}if(!l&&!c)try{s=jr({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=ol}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new wu(new Float32Array(p*3),3),this._normalAttribute=new wu(new Float32Array(p*3),3),this._uvAttribute=new wu(new Float32Array(p*2),2),this._indexAttribute=new wu(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,x=-1/0;for(let O=0,S=p;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>x&&(x=g)}let v=m-h,w=x-y;for(let O=0,S=p;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,E=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,E)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ca(this._shape,this._curveSegments);return e.userData=Eo(this.userData),e}};var Aa=class extends wi{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Aa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Eo(this.userData),e}};var tr=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Fe.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof je?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new je(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new je(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ca(i.shape,o,{windingRule:a}):s=new Aa(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as o3,Float32BufferAttribute as i3,MathUtils as bf,Vector2 as Hx}from"three";var Wx=Math.PI*2,Ia=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=bf.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,d=e*.5,p=n3(c,u,d,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new o3,f.setAttribute("position",new i3([],3))):f=tr.create({shape:c,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function n3(i,t,e,r,o,n){if(r>=Wx)return o>30||o%4===0?(s3(i,t,e,n),Math.round(o/4)):kx(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=zx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?a3(i,a.x,a.y,c,o,t,e,n):kx(i,r,o,t,e,n)}function a3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Ma(t,e));for(let c=0,u=r.length;c<u;c++){let d=r[c],p=i.points[c],f=Ma(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),i.addPoint(f)}return s>0?qx(i,n,a,s):i.addPoint(Ma(0,0)),l}function kx(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Ma(c,u))}return t<Wx?n>0?qx(i,r,o,n):i.addPoint(Ma(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&$x(i,r,o,n)),1}function s3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(Pu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Pu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(Pu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Pu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&$x(i,t,e,r)}function Ma(i,t){return new Fr(bf.generateUUID(),new Hx(i,t))}function Pu(i,t,e,r,o,n){let a=Ma(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function qx(i,t,e,r){Xx(i,t,e,r).forEach(n=>i.addPoint(n))}function $x(i,t,e,r){let o=Xx(i,t,e,r),n=new je;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function Xx(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new Hx(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=bf.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as l3,Float32BufferAttribute as vf,Uint32BufferAttribute as c3,Vector3 as Yx}from"three";var Kx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,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:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:d}=i.parameters,p=new il(!1,t,e,r,o,n,a,s,l,c,u,d);return Object.assign(p,{userData:{...i,type:"HelixGeometry"}})}},Sf=new c3([0,0,0],1),il=class extends l3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new Yx,m=new Yx,y=h(),x=h(),v=h(),w,O,S,T,M,g,D,E,I=h(),N=h(),_=h(),R=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/p,Z=.01,Q=Math.min((1-d/100)*l,l-Z),$=l-Q,de=0,le=2,ie=p*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,xe]=[3,3,2].map(it=>Array(me*it).fill(0)),ye=[],C=n-l;function ne(it,Ke){let Nr=Math.PI/2;g=Ke*ee,E=2*Math.PI*(g%F)/F+Nr,g+=te,D=Math.sin(E)*C,M=Math.cos(E)*C,t?it.set(M,D,g):it.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let Ne=m.distanceTo(y),Ve=f?0:$+Q,_e=Ne*H+2*Ve,Pe=Q,St=_e-Ve;for(let it=0;it<=H;it++){ne(x,it),q.subVectors(x,I).normalize(),I.copy(x),U.copy(x).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Ke=it===0,Nr=it===H,jd=Ke?3*Math.PI/2:K,Ud=Ke?Pe:St,Gl=Ke?Y:ae,Wi=Ke?0:me-Y,ut=q.clone().multiplyScalar(Ke?-$:$).add(x),kd=q.clone().multiplyScalar(Ke?-1:1).normalize();for(let yr=0;yr<Y;yr++){let As=yr*re;if(N.addVectors(m.copy(U).multiplyScalar(l*Math.cos(As)),y.copy(B).multiplyScalar(l*Math.sin(As))),_.copy(N).normalize(),Ke||Nr){f||(de=Wi+yr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=ut.getComponent(Wt),he[de*3+Wt]=kd.getComponent(Wt)}),xe[de*2]=+Nr,xe[de*2+1]=yr/u),y.copy(_).multiplyScalar(Q),v.addVectors(x,y);for(let Wt=0;Wt<p;Wt++){let qi=Wt*K+jd;R.addVectors(m.copy(q).multiplyScalar($*Math.sin(qi)),y.copy(_).multiplyScalar($*Math.cos(qi))),V.copy(R).normalize(),y.addVectors(v,R),R.normalize(),de=Gl+Wt*Y+yr,[0,1,2].forEach(An=>{fe[de*3+An]=y.getComponent(An),he[de*3+An]=V.getComponent(An)});let Fl=+Ke+Math.sin(qi);xe[de*2]=(Ud+$*Fl)/_e,xe[de*2+1]=yr/u}}y.addVectors(x,N),de=ce+it*Y+yr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=y.getComponent(Wt),he[de*3+Wt]=_.getComponent(Wt)}),xe[de*2]=(Ve+it*Ne)/_e,xe[de*2+1]=yr/u}}let Me=W+2*p+le,bt=1,[wt,Hi]=[+f,Me-1];for(let it=wt;it<=Hi-1;it++){let Ke=f&&it===Hi-1;for(let Nr=0;Nr<Y-1;Nr++)w=it*Y+Nr,O=w+1,S=(Ke?Nr:w)+Y,T=(Ke?Nr+1:O)+Y,it===0?ye.push(O,T,S):it===Me-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new vf(fe,3)),this.setAttribute("normal",new vf(he,3)),this.setAttribute("uv",new vf(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,d=u===e;for(let p=0;p<t.radialSegments;p++)n=u*r+p,a=n+1,s=(d?p:n)+r,l=(d?p+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Sf.array=o,Sf.count=o.length,Sf}};import{IcosahedronGeometry as u3}from"three";var Qx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new nl(t*.5,n,a):new u3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},nl=class extends vi{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],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new nl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as d3,Shape as p3}from"three";var Zx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new p3;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 d3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as ab,BufferGeometryLoader as O3,Vector3 as T3,BoxGeometry as sb}from"three";import{BufferGeometry as v3,Vector2 as Tf,Vector3 as nb}from"three";import{Box3 as f3,BufferAttribute as al,BufferGeometry as Jx,Color as Of,EventDispatcher as h3,Float32BufferAttribute as Ea,Matrix3 as eb,Matrix4 as ib,MathUtils as m3,Object3D as y3,Sphere as g3,Vector2 as pr,Vector3 as Gt,Vector4 as x3}from"three";var co=new ib,wf=new y3,Ou=new Gt,Pi=class extends h3{constructor(){super(),this.uuid=m3.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new eb().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return co.makeRotationX(t),this.applyMatrix4(co),this}rotateY(t){return co.makeRotationY(t),this.applyMatrix4(co),this}rotateZ(t){return co.makeRotationZ(t),this.applyMatrix4(co),this}translate(t,e,r){return co.makeTranslation(t,e,r),this.applyMatrix4(co),this}scale(t,e,r){return co.makeScale(t,e,r),this.applyMatrix4(co),this}lookAt(t){return wf.lookAt(t),wf.updateMatrix(),this.applyMatrix4(wf.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<n.count;p++)e.vertices.push(new Gt().fromBufferAttribute(n,p)),s!==void 0&&e.colors.push(new Of().fromBufferAttribute(s,p));function u(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],x=a===void 0?[]:[new Gt().fromBufferAttribute(a,p),new Gt().fromBufferAttribute(a,f),new Gt().fromBufferAttribute(a,h)],v=new Na(p,f,h,x,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new pr().fromBufferAttribute(l,p),new pr().fromBufferAttribute(l,f),new pr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new pr().fromBufferAttribute(c,p),new pr().fromBufferAttribute(c,f),new pr().fromBufferAttribute(c,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,x=h+m;y<x;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)u(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<n.count;p+=3)u(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ou).negate(),this.translate(Ou.x,Ou.y,Ou.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new ib;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Gt,e=new Gt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Gt;if(t){let r=new Gt,o=new Gt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Pi;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Gt,u={a:new Gt,b:new Gt,c:new Gt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new f3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new g3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,d=t.colors;e!==void 0&&(o=new eb().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)u.push(d[p].clone());for(let p=0,f=c.length;p<f;p++){let h=c[p],m,y,x=h.vertexNormals,v=h.vertexColors,w=new Na(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=x.length;O<S;O++)m=x[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let x=h[m],v=[];for(let w=0,O=x.length;w<O;w++)v.push(x[w].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],d=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let d=[u.a,u.b,u.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,d=this.faceVertexUvs.length;u<d;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Gt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,x=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,x),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(d(m.normal)),O){let g=m.vertexNormals;r.push(d(g[0]),d(g[1]),d(g[2]))}if(S&&r.push(p(m.color)),T){let g=m.vertexColors;r.push(p(g[0]),p(g[1]),p(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Pi().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let x=h[m],v=[];for(let w=0,O=x.length;w<O;w++){let S=x[w];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let n=t.morphTargets;for(let p=0,f=n.length;p<f;p++){let h={};if(h.name=n[p].name,n[p].vertices!==void 0){h.vertices=[];for(let m=0,y=n[p].vertices.length;m<y;m++)h.vertices.push(n[p].vertices[m].clone())}if(n[p].normals!==void 0){h.normals=[];for(let m=0,y=n[p].normals.length;m<y;m++)h.normals.push(n[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let x=a[p].vertexNormals[m],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),h.vertexNormals.push(v)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let c=t.lineDistances;for(let p=0,f=c.length;p<f;p++)this.lineDistances.push(c[p]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Pf().fromGeometry(this),e=new Jx,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Tu.call(new al(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Tu.call(new al(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",tb.call(new al(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",rb.call(new al(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",rb.call(new al(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new Ea(c.data.length*3,3);u.name=c.name,n.push(Tu.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new Ea(t.skinIndices.length*4,4);e.setAttribute("skinIndex",ob.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Ea(t.skinWeights.length*4,4);e.setAttribute("skinWeight",ob.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Jx,r=t.geometry;if(t.isPoints||t.isLine){let o=new Ea(r.vertices.length*3,3),n=new Ea(r.colors.length*3,3);if(e.setAttribute("position",Tu.call(o,r.vertices)),e.setAttribute("color",tb.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Ea(r.lineDistances.length,1);e.setAttribute("lineDistance",b3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Pi.prototype.isGeometry=!0;var Pf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let x=0;x<l;x++)c[x]={name:s[x].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,d=u.length,p;if(d>0){p=[];for(let x=0;x<d;x++)p[x]={name:u[x].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][x];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new pr,new pr,new pr))}if(a===!0){let S=o[1][x];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new pr,new pr,new pr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=u[S].vertexNormals[x];p[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Na=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new Of,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function b3(i){return this.array.set(i),this}function tb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new Of),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function rb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new pr),t[e++]=n.x,t[e++]=n.y}return this}function Tu(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new Gt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function ob(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new x3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var S3=["a","b","c"];function w3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Cf(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Af(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],d=e[s];c={a:u,b:d,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function P3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Af(a.a,a.b,i,r,a,e),Af(a.b,a.c,i,r,a,e),Af(a.c,a.a,i,r,a,e)}function Cu(i,t,e,r,o){i.push(new Na(t,e,r,void 0,void 0,o))}function Da(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Au(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Mu=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof v3?t=new Pi().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 nb,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],d=u!==void 0&&u.length>0,p=[],f=new Map;P3(l,c,p,f);let h=[],m,y,x,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),x=new nb,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),x.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[w3(v,S3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),x.add(e),y.newEdge=h.length,h.push(x)}let T,M,g,D,E,I,N,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],E=p[o].edges,r=E.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),N=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=E[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let R=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Tf,re=new Tf,K=new Tf;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Cf(v.a,v.b,f).newEdge)+V,B=Number(Cf(v.b,v.c,f).newEdge)+V,q=Number(Cf(v.c,v.a,f).newEdge)+V,Cu(j,U,B,q,v.materialIndex),Cu(j,v.a,U,q,v.materialIndex),Cu(j,v.b,B,U,v.materialIndex),Cu(j,v.c,q,B,v.materialIndex),d&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Da(W.x,ee.x),Da(W.y,ee.y)),re.set(Da(ee.x,te.x),Da(ee.y,te.y)),K.set(Da(W.x,te.x),Da(W.y,te.y)),Au(F,Y,re,K),Au(F,W,Y,K),Au(F,ee,re,Y),Au(F,te,K,re));t.vertices=R,t.faces=j,d&&(t.faceVertexUvs[0]=F)}};var At=new T3,lb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new ab().copy(new sb(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(At),r={width:At.x,height:At.y,depth:At.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new ab().copy(new sb(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(At)):At.set(a.width,a.height,a.depth),(t!==At.x||e!==At.y||r!==At.z)&&n.scale(At.x===0?1:t/At.x,At.y===0?1:e/At.y,At.z===0?1:r/At.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new Mu(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new O3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(At);let a=100/At.x;Object.assign(n.parameters,{width:100,height:At.y*a,depth:At.z*a}),t(this.build(n))})}};var Iu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,x=d+Math.sin(y)*c,v=p+Math.cos(y)*u;l.addPoint(l.createPoint(x,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=tr.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as C3,Float32BufferAttribute as Mf,Vector2 as uo,Vector3 as Dt}from"three";var cb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new Ef(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function sl(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function If(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function A3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ef=class extends C3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,w=new Dt(0,-f,0),O=new Dt(0,f,0),S=new uo(t,-f),T=new uo(m,-f),M=new uo(0,O.y).sub(T),g=new uo(0,O.y).sub(S),D=new uo(M.y,-M.x).normalize(),E=new uo(g.y,-g.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,N);let _;{let F=new Dt(D.x,D.y,0),H=new Dt(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let R=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new Dt;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),d.push(0,0);let F=p++,H=[],W=S.clone(),ee=R/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new uo(Math.sin(Y),Math.cos(Y));sl(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),d.push(0,0),H.push(p++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new Dt,H=new Dt,W=new Dt,ee=new Dt,te=new Dt,Y=new Dt;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new uo(Math.sin(K),Math.cos(K)),de=new uo(Math.sin(Z),Math.cos(Z)),le=new uo(Math.sin(Q),Math.cos(Q));sl(S,$,H),sl(S,le,W),sl(D,de,F),If(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),If(H,O,W,V,R,te),c.push(te.x,te.y,te.z),If(W,H,O,R,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),d.push(0,0),d.push(0,0),d.push(0,0);let ie=p++,ce=p++,ae=p++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new Dt;sl(E,le,he);let xe=Y.clone().add(ee).multiplyScalar(.5);xe=A3(xe,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(xe,ye,he,_,ee.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new Dt(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}B.concat(fe);{let he=M.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new Dt,ne=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-xe*Ve/s,St=Math.cos(Pe),Me=Math.sin(Pe),bt=Z;for(let wt=0;wt<=Ve;wt++){let Hi=Math.cos(bt),it=Math.sin(bt);F.x=St*it,F.y=Me,F.z=St*Hi,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),d.push(0,0),_e.push(p++),bt+=Math.PI*2/Ve/r}ne.push(_e)}fe.reverse(),ne.push(fe);let Ne=ne.length-1;for(let Ve=0;Ve<Ne;Ve++){let _e=ne[Ve],Pe=ne[Ve+1],St=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=St;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Mf(c,3)),this.setAttribute("normal",new Mf(u,3)),this.setAttribute("uv",new Mf(d,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new Dt,Q=new Dt,$=1,de=p,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),d.push(0,0),ae===0&&le.push(p),p++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new Dt,Z=new Dt;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),xe=(te+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),d.push(0,0),de.push(p++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var _a=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},d={x:c.x,y:c.y};function p(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=d.x,y=d.y,x=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(h,x)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=tr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as M3,Float32BufferAttribute as I3,MathUtils as ub,SphereGeometry as E3}from"three";var db=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=ub.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new M3,u.setAttribute("position",new I3([],3))):u=new E3(.5*t,o,n,a,s,l,c*ub.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as N3}from"three";var pb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new N3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as D3,Float32BufferAttribute as Nf,Vector3 as _3}from"three";var fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Df(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Df=class extends D3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(Z=0,Q=0,$=0)=>new _3(Z,Q,$),h=f(),m=f(),[y,x,v]=[e/2,t/2,r/2],w=-x,O=+x,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-v,I=S.z-u;o<=p?(M.z=Math.min(E,I),M.z==I&&(M.y-=(E-I)/Math.tan(p-o))):T.z=Math.min(T.z-E-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let N=Math.min(h.length(),m.length())*n/100,_=N*Math.tan(o/2),R=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(R).add(T);h.set(0,g(o,!0),D(o,!0)),d.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=p+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),d.push([h.clone(),m.clone()])}d.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=d.length-1,j=d[0][0].distanceTo(d[1][0]),F=d[q-1][0].distanceTo(d[q][0]),H=j+B*a+F;d[0].push(1);for(let Z=0;Z<=a;Z++)d[Z+1].push(1-(j+Z*B)/H);d[q].push(0);let[W,ee,te]=d[0],Y,re,K;for(let Z=1;Z<d.length;Z++)[Y,re,K]=d[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Nf(s,3)),this.setAttribute("normal",new Nf(l,3)),this.setAttribute("uv",new Nf(c,2))}};var Eu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,x=d*r/100,v=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*d,M=h+Math.cos(S)*p;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*d,T=h+Math.sin(y)*p;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*x,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=tr.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as R3}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new R3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as L3,Float32BufferAttribute as B3,MathUtils as V3}from"three";var mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=z3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function z3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let d=V3.clamp(o/360,0,1);if(d===0){let p=new L3;return p.setAttribute("position",new B3([],3)),p}return d===1&&(c=0),new il(!0,i,t,e,r,d,n,a,s,l,c,u)}import{TorusKnotGeometry as G3}from"three";var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new G3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var gb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=tr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as Sb,Vector3 as _t,Matrix3 as Z3,Matrix4 as sn,BufferGeometry as wb,BufferAttribute as Ra,MathUtils as Du}from"three";function xb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function F3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function j3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function U3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function k3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function H3(i,t,e){return(i<<16)+(t<<8)+e}function W3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function q3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var bb={parseRgba:F3,hsvToRgb:j3,rgbToHsv:U3,hexToRgb:k3,rgbToHex:H3,rgbToHexString:W3,hexStringToRgb:q3};function ko(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Nu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=ko();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await Q3(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=bc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?bc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Ze.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Ze.zoom(this.result,t):this.result;if(K3(e))return Object.entries(e);if(Y3(e))return e.map((r,o)=>[o.toString(),r]);throw X3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function $3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function X3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function Y3(i){return Array.isArray(i)}function K3(i){return typeof i=="object"&&i!==null}async function Q3(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=ll(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:ll(JSON.parse(i.integration.behavior),t);a=`{
|
|
1
|
+
var fw=Object.create;var Yl=Object.defineProperty;var hw=Object.getOwnPropertyDescriptor;var mw=Object.getOwnPropertyNames;var yw=Object.getPrototypeOf,gw=Object.prototype.hasOwnProperty;var xw=(i,t,e)=>t in i?Yl(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var Ds=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),bw=(i,t)=>{for(var e in t)Yl(i,e,{get:t[e],enumerable:!0})},vw=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mw(t))!gw.call(i,o)&&o!==e&&Yl(i,o,{get:()=>t[o],enumerable:!(r=hw(t,o))||r.enumerable});return i};var _s=(i,t,e)=>(e=i!=null?fw(yw(i)):{},vw(t||!i||!i.__esModule?Yl(e,"default",{value:i,enumerable:!0}):e,i));var Ki=(i,t,e)=>(xw(i,typeof t!="symbol"?t+"":t,e),e);var c0=Ds((qp,l0)=>{(function(i,t){typeof qp=="object"?l0.exports=t():typeof define=="function"&&define.amd?define(t):i.Alea=t()})(qp,function(){"use strict";return i.importState=function(e){var r=new i;return r.importState(e),r},i;function i(){return function(e){var r=0,o=0,n=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),n=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),n-=s(e[l]),n<0&&(n+=1);s=null;var c=function(){var u=2091639*r+a*23283064365386963e-26;return r=o,o=n,n=u-(a=u|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[r,o,n,a]},c.importState=function(u){r=+u[0]||0,o=+u[1]||0,n=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var n=0;n<o.length;n++){e+=o.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var m0=Ds((hu,h0)=>{(function(i,t){typeof hu=="object"&&typeof h0<"u"?t(hu):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(hu,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 a,s,l,c,u,p,d,f,h,m,y,b,v=t[0].length,w=t.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],M=e==="f"?w:v,g=m=d=0;g<w;g++)S[g]=new Array(M).fill(0);for(g=0;g<v;g++)T[g]=new Array(v).fill(0);var D,N=new Array(v).fill(0);for(g=0;g<w;g++)for(a=0;a<v;a++)S[g][a]=t[g][a];for(g=0;g<v;g++){for(O[g]=d,h=0,l=g+1,a=g;a<w;a++)h+=Math.pow(S[a][g],2);if(h<n)d=0;else for(f=(p=S[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g]=p-d,a=l;a<v;a++){for(h=0,s=g;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(N[g]=d,h=0,a=l;a<v;a++)h+=Math.pow(S[g][a],2);if(h<n)d=0;else{for(f=(p=S[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g+1]=p-d,a=l;a<v;a++)O[a]=S[g][a]/f;for(a=l;a<w;a++){for(h=0,s=l;s<v;s++)h+=S[a][s]*S[g][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+h*O[s]}}m<(y=Math.abs(N[g])+Math.abs(O[g]))&&(m=y)}if(r)for(g=v-1;0<=g;g--){if(d!==0){for(f=S[g][g+1]*d,a=l;a<v;a++)T[a][g]=S[g][a]/f;for(a=l;a<v;a++){for(h=0,s=l;s<v;s++)h+=S[g][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+h*T[s][g]}}for(a=l;a<v;a++)T[g][a]=0,T[a][g]=0;T[g][g]=1,d=O[g],l=g}if(e){if(e==="f")for(g=v;g<w;g++){for(a=v;a<w;a++)S[g][a]=0;S[g][g]=1}for(g=v-1;0<=g;g--){for(l=g+1,d=N[g],a=l;a<M;a++)S[g][a]=0;if(d!==0){for(f=S[g][g]*d,a=l;a<M;a++){for(h=0,s=l;s<w;s++)h+=S[s][g]*S[s][a];for(p=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+p*S[s][g]}for(a=g;a<w;a++)S[a][g]=S[a][g]/d}else for(a=g;a<w;a++)S[a][g]=0;S[g][g]=S[g][g]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(D=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){D=!0;break}if(Math.abs(N[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(p=h*O[g],O[g]=u*O[g],!(Math.abs(p)<=o));g++)if(d=N[g],N[g]=Math.sqrt(p*p+d*d),u=d/(f=N[g]),h=-p/f,e)for(a=0;a<w;a++)y=S[a][c],b=S[a][g],S[a][c]=y*u+b*h,S[a][g]=-y*h+b*u}if(b=N[s],l===s){if(b<0&&(N[s]=-b,r))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-b)*(y+b)+((d=O[s-1])-(f=O[s]))*(d+f))/(2*f*y),d=Math.sqrt(p*p+1),p=((m-b)*(m+b)+f*(y/(p<0?p-d:p+d)-f))/m,g=l+(h=u=1);g<s+1;g++){if(d=O[g],y=N[g],f=h*d,d*=u,b=Math.sqrt(p*p+f*f),p=m*(u=p/(O[g-1]=b))+d*(h=f/b),d=-m*h+d*u,f=y*h,y*=u,r)for(a=0;a<v;a++)m=T[a][g-1],b=T[a][g],T[a][g-1]=m*u+b*h,T[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(N[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<w;a++)y=S[a][g-1],b=S[a][g],S[a][g-1]=y*u+b*h,S[a][g]=-y*h+b*u}O[l]=0,O[s]=p,N[s]=m}for(g=0;g<v;g++)N[g]<o&&(N[g]=0);return{u:S,q:N,v:T}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var E1=Ds((Cce,N1)=>{"use strict";function f_(i,t){function e(){this.constructor=i}e.prototype=t.prototype,i.prototype=new e}function Cn(i,t,e,r){this.message=i,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Cn)}f_(Cn,Error);Cn.buildMessage=function(i,t){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?n(c.parts[p][0])+"-"+n(c.parts[p][1]):n(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function o(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function n(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+o(c)+'"':"end of input"}return"Expected "+s(i)+" but "+l(t)+" found."};function h_(i,t){t=t!==void 0?t:{};var e={},r={svg_path:Es},o=Es,n=function(x){if(!x)return[];for(var P=[],R=0;R<x.length;R++)P=P.concat.apply(P,x[R]);var A=P[0];return A&&A.code=="m"&&(delete A.relative,A.code="M"),P},a=function(x,P){return pw(x,P)},s=/^[Mm]/,l=Qe(["M","m"],!1,!1),c=function(x,P,R){var A=Dn(x,[P]);return R&&(A=A.concat(Dn(x=="M"?"L":"l",R[1]))),A},u=/^[Zz]/,p=Qe(["Z","z"],!1,!1),d=function(){return Dn("Z")},f=/^[Ll]/,h=Qe(["L","l"],!1,!1),m=function(x,P){return Dn(x,P)},y=/^[Hh]/,b=Qe(["H","h"],!1,!1),v=function(x,P){return Dn(x,P.map(function(R){return{x:R}}))},w=/^[Vv]/,O=Qe(["V","v"],!1,!1),S=function(x,P){return Dn(x,P.map(function(R){return{y:R}}))},T=/^[Cc]/,M=Qe(["C","c"],!1,!1),g=function(x,P,R){return{x1:x.x,y1:x.y,x2:P.x,y2:P.y,x:R.x,y:R.y}},D=/^[Ss]/,N=Qe(["S","s"],!1,!1),I=function(x,P){return{x2:x.x,y2:x.y,x:P.x,y:P.y}},E=/^[Qq]/,_=Qe(["Q","q"],!1,!1),L=function(x,P){return{x1:x.x,y1:x.y,x:P.x,y:P.y}},V=/^[Tt]/,U=Qe(["T","t"],!1,!1),B=/^[Aa]/,q=Qe(["A","a"],!1,!1),j=function(x,P,R,A,z,oe){return{rx:x,ry:P,xAxisRotation:R,largeArc:A,sweep:z,x:oe.x,y:oe.y}},F=function(x,P){return{x,y:P}},H=function(x){return x*1},W=function(x){return x.join("")*1},ee=/^[01]/,te=Qe(["0","1"],!1,!1),Y=function(x){return x=="1"},re=function(){return""},K=",",Z=nt(",",!1),Q=function(x){return x.join("")},$=".",de=nt(".",!1),le=/^[eE]/,ie=Qe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Qe(["+","-"],!1,!1),me=/^[0-9]/,fe=Qe([["0","9"]],!1,!1),he=function(x){return x.join("")},xe=/^[ \t\n\r]/,ye=Qe([" "," ",`
|
|
2
|
+
`,"\r"],!1,!1),C=0,ne=0,De=[{line:1,column:1}],ze=0,Le=[],Oe=0,wt;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Ie(){return i.substring(ne,C)}function vt(){return $i(ne,C)}function Pt(x,P){throw P=P!==void 0?P:$i(ne,C),gr([$d(x)],i.substring(ne,C),P)}function qi(x,P){throw P=P!==void 0?P:$i(ne,C),Xd(x,P)}function nt(x,P){return{type:"literal",text:x,ignoreCase:P}}function Qe(x,P,R){return{type:"class",parts:x,inverted:P,ignoreCase:R}}function Dr(){return{type:"any"}}function qd(){return{type:"end"}}function $d(x){return{type:"other",description:x}}function Hl(x){var P=De[x],R;if(P)return P;for(R=x-1;!De[R];)R--;for(P=De[R],P={line:P.line,column:P.column};R<x;)i.charCodeAt(R)===10?(P.line++,P.column=1):P.column++,R++;return De[x]=P,P}function $i(x,P){var R=Hl(x),A=Hl(P);return{start:{offset:x,line:R.line,column:R.column},end:{offset:P,line:A.line,column:A.column}}}function dt(x){C<ze||(C>ze&&(ze=C,Le=[]),Le.push(x))}function Xd(x,P){return new Cn(x,null,null,P)}function gr(x,P,R){return new Cn(Cn.buildMessage(x,P),x,P,R)}function Es(){var x,P,R,A,z;for(x=C,P=[],R=Ge();R!==e;)P.push(R),R=Ge();if(P!==e)if(R=Wt(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(ne=x,P=n(R),x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;return x}function Wt(){var x,P,R,A,z,oe;if(x=C,P=Xi(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Xi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Xi(){var x,P,R,A,z,oe;if(x=C,P=Nn(),P!==e){for(R=[],A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();for(z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(R.push(A),A=C,z=[],oe=Ge();oe!==e;)z.push(oe),oe=Ge();z!==e?(oe=Wl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Wl(){var x;return x=QS(),x===e&&(x=ZS(),x===e&&(x=JS(),x===e&&(x=ew(),x===e&&(x=tw(),x===e&&(x=ow(),x===e&&(x=nw(),x===e&&(x=sw(),x===e&&(x=cw())))))))),x}function Nn(){var x,P,R,A,z,oe,_n;if(x=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(l)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=$t(),A!==e?(z=C,oe=rt(),oe===e&&(oe=null),oe!==e?(_n=mm(),_n!==e?(oe=[oe,_n],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=x,P=c(P,A,z),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function QS(){var x,P;return x=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(p)),P!==e&&(ne=x,P=d()),x=P,x}function ZS(){var x,P,R,A;if(x=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(h)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=mm(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function mm(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function JS(){var x,P,R,A;if(x=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(b)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=v(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function ym(){var x,P,R,A,z,oe;if(x=C,P=En(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function ew(){var x,P,R,A;if(x=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(O)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=ym(),A!==e?(ne=x,P=S(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function tw(){var x,P,R,A;if(x=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(M)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=rw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function rw(){var x,P,R,A,z,oe;if(x=C,P=Yd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Yd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Yd(){var x,P,R,A,z,oe;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(ne=x,P=g(P,A,oe),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function ow(){var x,P,R,A;if(x=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(N)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=iw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function iw(){var x,P,R,A,z,oe;if(x=C,P=Kd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Kd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=I(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function nw(){var x,P,R,A;if(x=C,E.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(_)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=aw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function aw(){var x,P,R,A,z,oe;if(x=C,P=Qd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Qd(){var x,P,R,A;return x=C,P=$t(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=$t(),A!==e?(ne=x,P=L(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function sw(){var x,P,R,A;if(x=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(U)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=lw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function lw(){var x,P,R,A,z,oe;if(x=C,P=$t(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function cw(){var x,P,R,A;if(x=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(q)),P!==e){for(R=[],A=Ge();A!==e;)R.push(A),A=Ge();R!==e?(A=uw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function uw(){var x,P,R,A,z,oe;if(x=C,P=Zd(),P!==e){for(R=[],A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)R.push(A),A=C,z=rt(),z===e&&(z=null),z!==e?(oe=Zd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);R!==e?(ne=x,P=a(P,R),x=P):(C=x,x=e)}else C=x,x=e;return x}function Zd(){var x,P,R,A,z,oe,_n,ep,$l,tp,Xl,rp;return x=C,P=gm(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=gm(),A!==e?(z=rt(),z===e&&(z=null),z!==e?(oe=En(),oe!==e?(_n=rt(),_n!==e?(ep=xm(),ep!==e?($l=rt(),$l===e&&($l=null),$l!==e?(tp=xm(),tp!==e?(Xl=rt(),Xl===e&&(Xl=null),Xl!==e?(rp=$t(),rp!==e?(ne=x,P=j(P,A,oe,ep,tp,rp),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function $t(){var x,P,R,A;return x=C,P=En(),P!==e?(R=rt(),R===e&&(R=null),R!==e?(A=En(),A!==e?(ne=x,P=F(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function gm(){var x,P;return x=C,P=vm(),P===e&&(P=Yi()),P!==e&&(ne=x,P=H(P)),x=P,x}function En(){var x,P,R,A;return x=C,P=C,R=Jd(),R===e&&(R=null),R!==e?(A=vm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Jd(),R===e&&(R=null),R!==e?(A=Yi(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=W(P)),x=P,x}function xm(){var x,P;return x=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(te)),P!==e&&(ne=x,P=Y(P)),x=P,x}function rt(){var x,P,R,A,z;if(x=C,P=[],R=Ge(),R!==e)for(;R!==e;)P.push(R),R=Ge();else P=e;if(P!==e)if(R=bm(),R===e&&(R=null),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(P=[P,R,A],x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;if(x===e){if(x=C,P=C,R=bm(),R!==e){for(A=[],z=Ge();z!==e;)A.push(z),z=Ge();A!==e?(R=[R,A],P=R):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=x,P=re()),x=P}return x}function bm(){var x;return i.charCodeAt(C)===44?(x=K,C++):(x=e,Oe===0&&dt(Z)),x}function vm(){var x,P,R,A;return x=C,P=C,R=dw(),R!==e?(A=Sm(),A===e&&(A=null),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(A=Sm(),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function dw(){var x,P,R,A,z;return x=C,P=C,R=Yi(),R===e&&(R=null),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,R=Yi(),R!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Oe===0&&dt(de)),A!==e?(R=[R,A],P=R):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function Sm(){var x,P,R,A,z;return x=C,P=C,le.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(ie)),R!==e?(A=Jd(),A===e&&(A=null),A!==e?(z=Yi(),z!==e?(R=[R,A,z],P=R):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=x,P=Q(P)),x=P,x}function Jd(){var x;return ce.test(i.charAt(C))?(x=i.charAt(C),C++):(x=e,Oe===0&&dt(ae)),x}function Yi(){var x,P,R;if(x=C,P=[],me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe)),R!==e)for(;R!==e;)P.push(R),me.test(i.charAt(C))?(R=i.charAt(C),C++):(R=e,Oe===0&&dt(fe));else P=e;return P!==e&&(ne=x,P=he(P)),x=P,x}function Ge(){var x,P;return x=C,xe.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Oe===0&&dt(ye)),P!==e&&(ne=x,P=re()),x=P,x}function pw(x,P){if(!P)return[x];for(var R=[x],A=0,z=P.length;A<z;A++)R[A+1]=P[A][1];return R}var ql={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var wm in ql)ql[wm.toUpperCase()]=ql[wm];function Dn(x,P){P||(P=[{}]);for(var R=P.length;R--;){var A={code:x,command:ql[x]};x==x.toLowerCase()&&(A.relative=!0);for(var z in P[R])A[z]=P[R][z];P[R]=A}return P}if(wt=o(),wt!==e&&C===i.length)return wt;throw wt!==e&&C<i.length&&dt(qd()),gr(Le,ze<i.length?i.charAt(ze):null,ze<i.length?$i(ze,ze+1):$i(ze,ze))}N1.exports={SyntaxError:Cn,parse:h_}});var Uh=Ds((Ace,D1)=>{var Od=E1().parse;Od.parseSVG=Od;Od.makeAbsolute=m_;D1.exports=Od;function m_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var XS=Ds((Xye,$S)=>{$S.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as gR,Loader as xR}from"three";function Kl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Ot(i,t){return Object.setPrototypeOf(i,t),i}function Ql(i){return Array.isArray(i)?i:[i]}function Zl(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 Sw=typeof global=="object"&&global&&global.Object===Object&&global,Jl=Sw;var ww=typeof self=="object"&&self&&self.Object===Object&&self,Pw=Jl||ww||Function("return this")(),pt=Pw;var Ow=pt.Symbol,Et=Ow;var Pm=Object.prototype,Tw=Pm.hasOwnProperty,Cw=Pm.toString,Ls=Et?Et.toStringTag:void 0;function Aw(i){var t=Tw.call(i,Ls),e=i[Ls];try{i[Ls]=void 0;var r=!0}catch{}var o=Cw.call(i);return r&&(t?i[Ls]=e:delete i[Ls]),o}var Om=Aw;var Mw=Object.prototype,Iw=Mw.toString;function Nw(i){return Iw.call(i)}var Tm=Nw;var Ew="[object Null]",Dw="[object Undefined]",Cm=Et?Et.toStringTag:void 0;function _w(i){return i==null?i===void 0?Dw:Ew:Cm&&Cm in Object(i)?Om(i):Tm(i)}var ur=_w;function Lw(i){return i!=null&&typeof i=="object"}var zt=Lw;var Rw="[object Symbol]";function Bw(i){return typeof i=="symbol"||zt(i)&&ur(i)==Rw}var oi=Bw;function Vw(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 ec=Vw;var zw=Array.isArray,ft=zw;var Gw=1/0,Am=Et?Et.prototype:void 0,Mm=Am?Am.toString:void 0;function Im(i){if(typeof i=="string")return i;if(ft(i))return ec(i,Im)+"";if(oi(i))return Mm?Mm.call(i):"";var t=i+"";return t=="0"&&1/i==-Gw?"-0":t}var Nm=Im;var Fw=/\s/;function jw(i){for(var t=i.length;t--&&Fw.test(i.charAt(t)););return t}var Em=jw;var Uw=/^\s+/;function kw(i){return i&&i.slice(0,Em(i)+1).replace(Uw,"")}var Dm=kw;function Hw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ht=Hw;var _m=0/0,Ww=/^[-+]0x[0-9a-f]+$/i,qw=/^0b[01]+$/i,$w=/^0o[0-7]+$/i,Xw=parseInt;function Yw(i){if(typeof i=="number")return i;if(oi(i))return _m;if(ht(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ht(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Dm(i);var e=qw.test(i);return e||$w.test(i)?Xw(i.slice(2),e?2:8):Ww.test(i)?_m:+i}var op=Yw;function Kw(i){return i}var Lm=Kw;var Qw="[object AsyncFunction]",Zw="[object Function]",Jw="[object GeneratorFunction]",e2="[object Proxy]";function t2(i){if(!ht(i))return!1;var t=ur(i);return t==Zw||t==Jw||t==Qw||t==e2}var tc=t2;var r2=pt["__core-js_shared__"],rc=r2;var Rm=function(){var i=/[^.]+$/.exec(rc&&rc.keys&&rc.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function o2(i){return!!Rm&&Rm in i}var Bm=o2;var i2=Function.prototype,n2=i2.toString;function a2(i){if(i!=null){try{return n2.call(i)}catch{}try{return i+""}catch{}}return""}var Co=a2;var s2=/[\\^$.*+?()[\]{}|]/g,l2=/^\[object .+?Constructor\]$/,c2=Function.prototype,u2=Object.prototype,d2=c2.toString,p2=u2.hasOwnProperty,f2=RegExp("^"+d2.call(p2).replace(s2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function h2(i){if(!ht(i)||Bm(i))return!1;var t=tc(i)?f2:l2;return t.test(Co(i))}var Vm=h2;function m2(i,t){return i?.[t]}var zm=m2;function y2(i,t){var e=zm(i,t);return Vm(e)?e:void 0}var Jt=y2;var g2=Jt(pt,"WeakMap"),oc=g2;var Gm=Object.create,x2=function(){function i(){}return function(t){if(!ht(t))return{};if(Gm)return Gm(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Fm=x2;function b2(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 jm=b2;function v2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Um=v2;var S2=800,w2=16,P2=Date.now;function O2(i){var t=0,e=0;return function(){var r=P2(),o=w2-(r-e);if(e=r,o>0){if(++t>=S2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var km=O2;function T2(i){return function(){return i}}var Hm=T2;var C2=function(){try{var i=Jt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ln=C2;var A2=Ln?function(i,t){return Ln(i,"toString",{configurable:!0,enumerable:!1,value:Hm(t),writable:!0})}:Lm,Wm=A2;var M2=km(Wm),qm=M2;function I2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var $m=I2;var N2=9007199254740991,E2=/^(?:0|[1-9]\d*)$/;function D2(i,t){var e=typeof i;return t=t??N2,!!t&&(e=="number"||e!="symbol"&&E2.test(i))&&i>-1&&i%1==0&&i<t}var Rn=D2;function _2(i,t,e){t=="__proto__"&&Ln?Ln(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var ic=_2;function L2(i,t){return i===t||i!==i&&t!==t}var Bn=L2;var R2=Object.prototype,B2=R2.hasOwnProperty;function V2(i,t,e){var r=i[t];(!(B2.call(i,t)&&Bn(r,e))||e===void 0&&!(t in i))&&ic(i,t,e)}var Vn=V2;function z2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?ic(e,s,l):Vn(e,s,l)}return e}var Qr=z2;var Xm=Math.max;function G2(i,t,e){return t=Xm(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Xm(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),jm(i,this,s)}}var Ym=G2;var F2=9007199254740991;function j2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=F2}var zn=j2;function U2(i){return i!=null&&zn(i.length)&&!tc(i)}var nc=U2;var k2=Object.prototype;function H2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||k2;return i===e}var Gn=H2;function W2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Km=W2;var q2="[object Arguments]";function $2(i){return zt(i)&&ur(i)==q2}var ip=$2;var Qm=Object.prototype,X2=Qm.hasOwnProperty,Y2=Qm.propertyIsEnumerable,K2=ip(function(){return arguments}())?ip:function(i){return zt(i)&&X2.call(i,"callee")&&!Y2.call(i,"callee")},Fn=K2;function Q2(){return!1}var Zm=Q2;var ty=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jm=ty&&typeof module=="object"&&module&&!module.nodeType&&module,Z2=Jm&&Jm.exports===ty,ey=Z2?pt.Buffer:void 0,J2=ey?ey.isBuffer:void 0,eP=J2||Zm,Qi=eP;var tP="[object Arguments]",rP="[object Array]",oP="[object Boolean]",iP="[object Date]",nP="[object Error]",aP="[object Function]",sP="[object Map]",lP="[object Number]",cP="[object Object]",uP="[object RegExp]",dP="[object Set]",pP="[object String]",fP="[object WeakMap]",hP="[object ArrayBuffer]",mP="[object DataView]",yP="[object Float32Array]",gP="[object Float64Array]",xP="[object Int8Array]",bP="[object Int16Array]",vP="[object Int32Array]",SP="[object Uint8Array]",wP="[object Uint8ClampedArray]",PP="[object Uint16Array]",OP="[object Uint32Array]",ot={};ot[yP]=ot[gP]=ot[xP]=ot[bP]=ot[vP]=ot[SP]=ot[wP]=ot[PP]=ot[OP]=!0;ot[tP]=ot[rP]=ot[hP]=ot[oP]=ot[mP]=ot[iP]=ot[nP]=ot[aP]=ot[sP]=ot[lP]=ot[cP]=ot[uP]=ot[dP]=ot[pP]=ot[fP]=!1;function TP(i){return zt(i)&&zn(i.length)&&!!ot[ur(i)]}var ry=TP;function CP(i){return function(t){return i(t)}}var jn=CP;var oy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Rs=oy&&typeof module=="object"&&module&&!module.nodeType&&module,AP=Rs&&Rs.exports===oy,np=AP&&Jl.process,MP=function(){try{var i=Rs&&Rs.require&&Rs.require("util").types;return i||np&&np.binding&&np.binding("util")}catch{}}(),Ao=MP;var iy=Ao&&Ao.isTypedArray,IP=iy?jn(iy):ry,ac=IP;var NP=Object.prototype,EP=NP.hasOwnProperty;function DP(i,t){var e=ft(i),r=!e&&Fn(i),o=!e&&!r&&Qi(i),n=!e&&!r&&!o&&ac(i),a=e||r||o||n,s=a?Km(i.length,String):[],l=s.length;for(var c in i)(t||EP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Rn(c,l)))&&s.push(c);return s}var sc=DP;function _P(i,t){return function(e){return i(t(e))}}var lc=_P;var LP=lc(Object.keys,Object),ny=LP;var RP=Object.prototype,BP=RP.hasOwnProperty;function VP(i){if(!Gn(i))return ny(i);var t=[];for(var e in Object(i))BP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ay=VP;function zP(i){return nc(i)?sc(i):ay(i)}var Un=zP;function GP(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var sy=GP;var FP=Object.prototype,jP=FP.hasOwnProperty;function UP(i){if(!ht(i))return sy(i);var t=Gn(i),e=[];for(var r in i)r=="constructor"&&(t||!jP.call(i,r))||e.push(r);return e}var ly=UP;function kP(i){return nc(i)?sc(i,!0):ly(i)}var kn=kP;var HP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WP=/^\w*$/;function qP(i,t){if(ft(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||oi(i)?!0:WP.test(i)||!HP.test(i)||t!=null&&i in Object(t)}var cy=qP;var $P=Jt(Object,"create"),Mo=$P;function XP(){this.__data__=Mo?Mo(null):{},this.size=0}var uy=XP;function YP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var dy=YP;var KP="__lodash_hash_undefined__",QP=Object.prototype,ZP=QP.hasOwnProperty;function JP(i){var t=this.__data__;if(Mo){var e=t[i];return e===KP?void 0:e}return ZP.call(t,i)?t[i]:void 0}var py=JP;var eO=Object.prototype,tO=eO.hasOwnProperty;function rO(i){var t=this.__data__;return Mo?t[i]!==void 0:tO.call(t,i)}var fy=rO;var oO="__lodash_hash_undefined__";function iO(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mo&&t===void 0?oO:t,this}var hy=iO;function Hn(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])}}Hn.prototype.clear=uy;Hn.prototype.delete=dy;Hn.prototype.get=py;Hn.prototype.has=fy;Hn.prototype.set=hy;var ap=Hn;function nO(){this.__data__=[],this.size=0}var my=nO;function aO(i,t){for(var e=i.length;e--;)if(Bn(i[e][0],t))return e;return-1}var ii=aO;var sO=Array.prototype,lO=sO.splice;function cO(i){var t=this.__data__,e=ii(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():lO.call(t,e,1),--this.size,!0}var yy=cO;function uO(i){var t=this.__data__,e=ii(t,i);return e<0?void 0:t[e][1]}var gy=uO;function dO(i){return ii(this.__data__,i)>-1}var xy=dO;function pO(i,t){var e=this.__data__,r=ii(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var by=pO;function Wn(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])}}Wn.prototype.clear=my;Wn.prototype.delete=yy;Wn.prototype.get=gy;Wn.prototype.has=xy;Wn.prototype.set=by;var ni=Wn;var fO=Jt(pt,"Map"),ai=fO;function hO(){this.size=0,this.__data__={hash:new ap,map:new(ai||ni),string:new ap}}var vy=hO;function mO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var Sy=mO;function yO(i,t){var e=i.__data__;return Sy(t)?e[typeof t=="string"?"string":"hash"]:e.map}var si=yO;function gO(i){var t=si(this,i).delete(i);return this.size-=t?1:0,t}var wy=gO;function xO(i){return si(this,i).get(i)}var Py=xO;function bO(i){return si(this,i).has(i)}var Oy=bO;function vO(i,t){var e=si(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Ty=vO;function qn(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])}}qn.prototype.clear=vy;qn.prototype.delete=wy;qn.prototype.get=Py;qn.prototype.has=Oy;qn.prototype.set=Ty;var Zi=qn;var SO="Expected a function";function sp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(SO);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 a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(sp.Cache||Zi),e}sp.Cache=Zi;var Cy=sp;var wO=500;function PO(i){var t=Cy(i,function(r){return e.size===wO&&e.clear(),r}),e=t.cache;return t}var Ay=PO;var OO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,TO=/\\(\\)?/g,CO=Ay(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(OO,function(e,r,o,n){t.push(o?n.replace(TO,"$1"):r||e)}),t}),My=CO;function AO(i){return i==null?"":Nm(i)}var Iy=AO;function MO(i,t){return ft(i)?i:cy(i,t)?[i]:My(Iy(i))}var xr=MO;var IO=1/0;function NO(i){if(typeof i=="string"||oi(i))return i;var t=i+"";return t=="0"&&1/i==-IO?"-0":t}var li=NO;function EO(i,t){t=xr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[li(t[e++])];return e&&e==r?i:void 0}var cc=EO;function DO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var $n=DO;var Ny=Et?Et.isConcatSpreadable:void 0;function _O(i){return ft(i)||Fn(i)||!!(Ny&&i&&i[Ny])}var Ey=_O;function Dy(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Ey),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Dy(s,t-1,e,r,o):$n(o,s):r||(o[o.length]=s)}return o}var _y=Dy;function LO(i){var t=i==null?0:i.length;return t?_y(i,1):[]}var Ly=LO;function RO(i){return qm(Ym(i,void 0,Ly),i+"")}var uc=RO;var BO=lc(Object.getPrototypeOf,Object),Xn=BO;var VO="[object Object]",zO=Function.prototype,GO=Object.prototype,Ry=zO.toString,FO=GO.hasOwnProperty,jO=Ry.call(Object);function UO(i){if(!zt(i)||ur(i)!=VO)return!1;var t=Xn(i);if(t===null)return!0;var e=FO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ry.call(e)==jO}var By=UO;function kO(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 Vy=kO;function HO(){this.__data__=new ni,this.size=0}var zy=HO;function WO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Gy=WO;function qO(i){return this.__data__.get(i)}var Fy=qO;function $O(i){return this.__data__.has(i)}var jy=$O;var XO=200;function YO(i,t){var e=this.__data__;if(e instanceof ni){var r=e.__data__;if(!ai||r.length<XO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Zi(r)}return e.set(i,t),this.size=e.size,this}var Uy=YO;function Yn(i){var t=this.__data__=new ni(i);this.size=t.size}Yn.prototype.clear=zy;Yn.prototype.delete=Gy;Yn.prototype.get=Fy;Yn.prototype.has=jy;Yn.prototype.set=Uy;var Kn=Yn;function KO(i,t){return i&&Qr(t,Un(t),i)}var ky=KO;function QO(i,t){return i&&Qr(t,kn(t),i)}var Hy=QO;var Xy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wy=Xy&&typeof module=="object"&&module&&!module.nodeType&&module,ZO=Wy&&Wy.exports===Xy,qy=ZO?pt.Buffer:void 0,$y=qy?qy.allocUnsafe:void 0;function JO(i,t){if(t)return i.slice();var e=i.length,r=$y?$y(e):new i.constructor(e);return i.copy(r),r}var Yy=JO;function eT(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Ky=eT;function tT(){return[]}var dc=tT;var rT=Object.prototype,oT=rT.propertyIsEnumerable,Qy=Object.getOwnPropertySymbols,iT=Qy?function(i){return i==null?[]:(i=Object(i),Ky(Qy(i),function(t){return oT.call(i,t)}))}:dc,Qn=iT;function nT(i,t){return Qr(i,Qn(i),t)}var Zy=nT;var aT=Object.getOwnPropertySymbols,sT=aT?function(i){for(var t=[];i;)$n(t,Qn(i)),i=Xn(i);return t}:dc,pc=sT;function lT(i,t){return Qr(i,pc(i),t)}var Jy=lT;function cT(i,t,e){var r=t(i);return ft(i)?r:$n(r,e(i))}var fc=cT;function uT(i){return fc(i,Un,Qn)}var Bs=uT;function dT(i){return fc(i,kn,pc)}var hc=dT;var pT=Jt(pt,"DataView"),mc=pT;var fT=Jt(pt,"Promise"),yc=fT;var hT=Jt(pt,"Set"),gc=hT;var eg="[object Map]",mT="[object Object]",tg="[object Promise]",rg="[object Set]",og="[object WeakMap]",ig="[object DataView]",yT=Co(mc),gT=Co(ai),xT=Co(yc),bT=Co(gc),vT=Co(oc),Ji=ur;(mc&&Ji(new mc(new ArrayBuffer(1)))!=ig||ai&&Ji(new ai)!=eg||yc&&Ji(yc.resolve())!=tg||gc&&Ji(new gc)!=rg||oc&&Ji(new oc)!=og)&&(Ji=function(i){var t=ur(i),e=t==mT?i.constructor:void 0,r=e?Co(e):"";if(r)switch(r){case yT:return ig;case gT:return eg;case xT:return tg;case bT:return rg;case vT:return og}return t});var Io=Ji;var ST=Object.prototype,wT=ST.hasOwnProperty;function PT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&wT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ng=PT;var OT=pt.Uint8Array,Zn=OT;function TT(i){var t=new i.constructor(i.byteLength);return new Zn(t).set(new Zn(i)),t}var Jn=TT;function CT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var ag=CT;var AT=/\w*$/;function MT(i){var t=new i.constructor(i.source,AT.exec(i));return t.lastIndex=i.lastIndex,t}var sg=MT;var lg=Et?Et.prototype:void 0,cg=lg?lg.valueOf:void 0;function IT(i){return cg?Object(cg.call(i)):{}}var ug=IT;function NT(i,t){var e=t?Jn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var dg=NT;var ET="[object Boolean]",DT="[object Date]",_T="[object Map]",LT="[object Number]",RT="[object RegExp]",BT="[object Set]",VT="[object String]",zT="[object Symbol]",GT="[object ArrayBuffer]",FT="[object DataView]",jT="[object Float32Array]",UT="[object Float64Array]",kT="[object Int8Array]",HT="[object Int16Array]",WT="[object Int32Array]",qT="[object Uint8Array]",$T="[object Uint8ClampedArray]",XT="[object Uint16Array]",YT="[object Uint32Array]";function KT(i,t,e){var r=i.constructor;switch(t){case GT:return Jn(i);case ET:case DT:return new r(+i);case FT:return ag(i,e);case jT:case UT:case kT:case HT:case WT:case qT:case $T:case XT:case YT:return dg(i,e);case _T:return new r;case LT:case VT:return new r(i);case RT:return sg(i);case BT:return new r;case zT:return ug(i)}}var pg=KT;function QT(i){return typeof i.constructor=="function"&&!Gn(i)?Fm(Xn(i)):{}}var fg=QT;var ZT="[object Map]";function JT(i){return zt(i)&&Io(i)==ZT}var hg=JT;var mg=Ao&&Ao.isMap,eC=mg?jn(mg):hg,yg=eC;var tC="[object Set]";function rC(i){return zt(i)&&Io(i)==tC}var gg=rC;var xg=Ao&&Ao.isSet,oC=xg?jn(xg):gg,bg=oC;var iC=1,nC=2,aC=4,vg="[object Arguments]",sC="[object Array]",lC="[object Boolean]",cC="[object Date]",uC="[object Error]",Sg="[object Function]",dC="[object GeneratorFunction]",pC="[object Map]",fC="[object Number]",wg="[object Object]",hC="[object RegExp]",mC="[object Set]",yC="[object String]",gC="[object Symbol]",xC="[object WeakMap]",bC="[object ArrayBuffer]",vC="[object DataView]",SC="[object Float32Array]",wC="[object Float64Array]",PC="[object Int8Array]",OC="[object Int16Array]",TC="[object Int32Array]",CC="[object Uint8Array]",AC="[object Uint8ClampedArray]",MC="[object Uint16Array]",IC="[object Uint32Array]",et={};et[vg]=et[sC]=et[bC]=et[vC]=et[lC]=et[cC]=et[SC]=et[wC]=et[PC]=et[OC]=et[TC]=et[pC]=et[fC]=et[wg]=et[hC]=et[mC]=et[yC]=et[gC]=et[CC]=et[AC]=et[MC]=et[IC]=!0;et[uC]=et[Sg]=et[xC]=!1;function xc(i,t,e,r,o,n){var a,s=t&iC,l=t&nC,c=t&aC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ht(i))return i;var u=ft(i);if(u){if(a=ng(i),!s)return Um(i,a)}else{var p=Io(i),d=p==Sg||p==dC;if(Qi(i))return Yy(i,s);if(p==wg||p==vg||d&&!o){if(a=l||d?{}:fg(i),!s)return l?Jy(i,Hy(a,i)):Zy(i,ky(a,i))}else{if(!et[p])return o?i:{};a=pg(i,p,s)}}n||(n=new Kn);var f=n.get(i);if(f)return f;n.set(i,a),bg(i)?i.forEach(function(y){a.add(xc(y,t,e,y,i,n))}):yg(i)&&i.forEach(function(y,b){a.set(b,xc(y,t,e,b,i,n))});var h=c?l?hc:Bs:l?kn:Un,m=u?void 0:h(i);return $m(m||i,function(y,b){m&&(b=y,y=i[b]),Vn(a,b,xc(y,t,e,b,i,n))}),a}var bc=xc;var NC=1,EC=4;function DC(i){return bc(i,NC|EC)}var No=DC;var _C="__lodash_hash_undefined__";function LC(i){return this.__data__.set(i,_C),this}var Pg=LC;function RC(i){return this.__data__.has(i)}var Og=RC;function vc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Zi;++t<e;)this.add(i[t])}vc.prototype.add=vc.prototype.push=Pg;vc.prototype.has=Og;var Tg=vc;function BC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var Cg=BC;function VC(i,t){return i.has(t)}var Ag=VC;var zC=1,GC=2;function FC(i,t,e,r,o,n){var a=e&zC,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var p=-1,d=!0,f=e&GC?new Tg:void 0;for(n.set(i,t),n.set(t,i);++p<s;){var h=i[p],m=t[p];if(r)var y=a?r(m,h,p,t,i,n):r(h,m,p,i,t,n);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!Cg(t,function(b,v){if(!Ag(f,v)&&(h===b||o(h,b,e,r,n)))return f.push(v)})){d=!1;break}}else if(!(h===m||o(h,m,e,r,n))){d=!1;break}}return n.delete(i),n.delete(t),d}var Sc=FC;function jC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var Mg=jC;function UC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Ig=UC;var kC=1,HC=2,WC="[object Boolean]",qC="[object Date]",$C="[object Error]",XC="[object Map]",YC="[object Number]",KC="[object RegExp]",QC="[object Set]",ZC="[object String]",JC="[object Symbol]",eA="[object ArrayBuffer]",tA="[object DataView]",Ng=Et?Et.prototype:void 0,lp=Ng?Ng.valueOf:void 0;function rA(i,t,e,r,o,n,a){switch(e){case tA:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case eA:return!(i.byteLength!=t.byteLength||!n(new Zn(i),new Zn(t)));case WC:case qC:case YC:return Bn(+i,+t);case $C:return i.name==t.name&&i.message==t.message;case KC:case ZC:return i==t+"";case XC:var s=Mg;case QC:var l=r&kC;if(s||(s=Ig),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=HC,a.set(i,t);var u=Sc(s(i),s(t),r,o,n,a);return a.delete(i),u;case JC:if(lp)return lp.call(i)==lp.call(t)}return!1}var Eg=rA;var oA=1,iA=Object.prototype,nA=iA.hasOwnProperty;function aA(i,t,e,r,o,n){var a=e&oA,s=Bs(i),l=s.length,c=Bs(t),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in t:nA.call(t,d)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++p<l;){d=s[p];var b=i[d],v=t[d];if(r)var w=a?r(v,b,d,t,i,n):r(b,v,d,i,t,n);if(!(w===void 0?b===v||o(b,v,e,r,n):w)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Dg=aA;var sA=1,_g="[object Arguments]",Lg="[object Array]",wc="[object Object]",lA=Object.prototype,Rg=lA.hasOwnProperty;function cA(i,t,e,r,o,n){var a=ft(i),s=ft(t),l=a?Lg:Io(i),c=s?Lg:Io(t);l=l==_g?wc:l,c=c==_g?wc:c;var u=l==wc,p=c==wc,d=l==c;if(d&&Qi(i)){if(!Qi(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new Kn),a||ac(i)?Sc(i,t,e,r,o,n):Eg(i,t,l,e,r,o,n);if(!(e&sA)){var f=u&&Rg.call(i,"__wrapped__"),h=p&&Rg.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new Kn),o(m,y,e,r,n)}}return d?(n||(n=new Kn),Dg(i,t,e,r,o,n)):!1}var Bg=cA;function Vg(i,t,e,r,o){return i===t?!0:i==null||t==null||!zt(i)&&!zt(t)?i!==i&&t!==t:Bg(i,t,e,r,Vg,o)}var zg=Vg;function uA(i,t){return i!=null&&t in Object(i)}var Gg=uA;function dA(i,t,e){t=xr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=li(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&zn(o)&&Rn(a,o)&&(ft(i)||Fn(i)))}var Fg=dA;function pA(i,t){return i!=null&&Fg(i,t,Gg)}var jg=pA;var fA=function(){return pt.Date.now()},Pc=fA;var hA="Expected a function",mA=Math.max,yA=Math.min;function gA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof i!="function")throw new TypeError(hA);t=op(t)||0,ht(e)&&(u=!!e.leading,p="maxWait"in e,n=p?mA(op(e.maxWait)||0,t):n,d="trailing"in e?!!e.trailing:d);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(b,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return p?yA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||p&&g>=n}function b(){var T=Pc();if(y(T))return v(T);s=setTimeout(b,m(T))}function v(T){return s=void 0,d&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(Pc())}function S(){var T=Pc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,t),f(l)}return s===void 0&&(s=setTimeout(b,t)),a}return S.cancel=w,S.flush=O,S}var Oc=gA;function xA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Ug=xA;function bA(i,t){return t.length<2?i:cc(i,Vy(t,0,-1))}var kg=bA;function vA(i,t){return zg(i,t)}var cp=vA;function SA(i,t){return t=xr(t,i),i=kg(i,t),i==null||delete i[li(Ug(t))]}var Hg=SA;function wA(i){return By(i)?void 0:i}var Wg=wA;var PA=1,OA=2,TA=4,CA=uc(function(i,t){var e={};if(i==null)return e;var r=!1;t=ec(t,function(n){return n=xr(n,i),r||(r=n.length>1),n}),Qr(i,hc(i),e),r&&(e=bc(e,PA|OA|TA,Wg));for(var o=t.length;o--;)Hg(e,t[o]);return e}),ea=CA;function AA(i,t,e,r){if(!ht(i))return i;t=xr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=li(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ht(u)?u:Rn(t[o+1])?[]:{})}Vn(s,l,c),s=s[l]}return i}var qg=AA;function MA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=cc(i,a);e(s,a)&&qg(n,xr(a,i),s)}return n}var $g=MA;function IA(i,t){return $g(i,t,function(e,r){return jg(i,r)})}var Xg=IA;var NA=uc(function(i,t){return i==null?{}:Xg(i,t)}),_r=NA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Vs(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"&&Vs(r)}return Object.freeze(i)}function Yg(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 ta=class extends Error{};function Tc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Zr(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 a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function ra(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 Kg(){return typeof process<"u"}function Qg(i,t){for(let e of i)t(e.id,e.data)!==!0&&Qg(e.children,t)}function Zg(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)Zg(e,t)}var Ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Zg(o,r)}}traverse(e){Qg(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),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Ze.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((d,f)=>d.fi-f.fi),e.localIndex=c.indexOf(u),{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),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,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 f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new ta("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=r,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,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(a=>a.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(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Yg(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),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Zr(0,o,o);{let a=n[0].fi;return Zr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Zr(l,l+o,o)}else return Zr(a.fi,s.fi,o)}}};var oa;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(oa||(oa={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Vs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,be.prototype);let r=e;return Kg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,p)=>u.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Zr(0,r,r);{let n=o[0].fi;return Zr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Zr(s,s+r,r)}else return Zr(n.fi,a.fi,r)}}};function ia(i){return i&&typeof i=="object"&&i instanceof We}var We=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ia(r))return null;o+=1}r=r?Tc(r):new We;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Tc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=Tc(l);c[t.path[o-1]]=r,r=c}else{let c=new We;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,We.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Jr;(r=>{function i(o,n){return zs(o,n)??o}r.apply=i;function t(o,n){return dp(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Je.zoomOnce(l,s[a]),l===void 0)return n;if(!ia(l))return;a+=1}if(l===void 0)return n;if(!!ia(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=up([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Jr||(Jr={}));function up(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=up(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function EA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=zs(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function zs(i,t){if(!ia(t))return t;if(i instanceof Ze){let e=up(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof be)return EA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=zs(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof We)return dp(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=zs(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function dp(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!ia(t))return t;if(!ia(i))return Jr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new We;for(let o of e){let n=dp(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function Jg(i,t){let e={cur:[],result:[],len:0};return i=Gs(i,t,e)??i,[i,e.result]}function Cc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function Ac(i){i&&(i.len-=1)}function DA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function ex(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=ex(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function _A(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Gs(n.data,t,Cc(e,a));return Ac(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Gs(i,t,e){if(i instanceof Ze){let r=ex(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof be)return _A(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Gs(n,t,Cc(e,a));return Ac(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!ra(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Gs(a,t,Cc(e,n));Ac(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&DA(e),r}else return}}var na;(t=>{function i(e,r){let o=Je.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(na||(na={}));var at;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof We&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Ze||l instanceof be||l instanceof ue?d=l.runOp(c):d=oa.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let b=u[y],v=p[y];if(v instanceof Ze){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof be){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof ue){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof We){let w={...v,[b]:m};m=Object.setPrototypeOf(w,We.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let w=m;m=[...v],m[b]=w}else m={...v,[b]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let f=u[p.length],h;if(l instanceof Ze){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof be){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(at||(at={}));var Fs;(l=>{function i(){return[]}l.empty=i;function t(c,u){let p=[];for(let d of c){let[f,...h]=d.path;f===u&&p.push({...d,path:h})}return p}l.removePrefix=t;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(d=>!u.some(f=>at.subsumed(d,f))),...u]}l.compress=o;function n(c,u){return c.every(p=>u.every(d=>at.commutative(p,d)))}l.commutative=n;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,b;if(h.type===3?(m=Je.zoom(p,[...h.path,h.id]),b=at.apply(p,{...h,type:2})):(m=Je.zoom(p,[...h.path,h.id,"value"]),b=at.apply(p,h)),b!==null){p=b.data;let[v,w]=Jg(p,{[h.id]:m});p=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let N=w[D],I=N[N.length-1];if(typeof I=="number"&&Je.equal(S,N.slice(0,N.length-1)))M.push(I),w.splice(D,1);else break}let g=Je.zoom(p,S);y=g.map((D,N)=>M.includes(N)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Je.zoom(p,S.slice(0,S.length-2)),D=g.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:M}}:N);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=at.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof ta)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Fs||(Fs={}));var tx=Symbol(),LA=Symbol(),Ic=Symbol(),en=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof Mc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ic];r&&r(),delete this._children[t]}}}},fp=class extends en{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 if(this._current instanceof We){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,We.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,oa.runOp(this._current,t),t.path)}},hp=class extends en{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},rx={get(i,t){if(t===Ic)return()=>{i._parent=null};if(t===tx)return i._current;if(t===LA)return i;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],a=Nc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):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]}}},RA={...rx,set(i,t,e){let r={type:0,props:{[t]:st(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},BA={...rx,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}},aa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):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 a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},sa=class extends en{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ic]=()=>{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,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Nc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):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 pp(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Je.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Mc=class extends en{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){pp(this.ts,e,t),pp(this.actual,r,t),pp(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Nc(i,t,e){return e instanceof Ze?new aa(i,t,e):e instanceof be?new sa(i,t,e):e instanceof ue?new Proxy(new hp(i,t,e),BA):e!==null&&typeof e=="object"?ra(e)?e:new Proxy(new fp(i,t,e),RA):e}function mp(i){let t=new Mc(i);return[Nc(t,"",i),t]}function ci(i,t){let[e,r]=mp(i);return t(e),r.result()}function st(i){return i instanceof aa||i instanceof sa?i._current:i!==null&&typeof i=="object"?i[tx]:i}var Je;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Ze||n instanceof aa)&&typeof a=="string")return n.data(a);if((n instanceof be||n instanceof sa)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Je||(Je={}));function ox(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Be(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Ec=class{},js=class extends Ec{constructor(e){super();this.id=e}},Us=class extends Ec{constructor(e){super();this.data=e}};var gp;try{gp=new TextDecoder}catch{}var pe,di,G=0;var dx=[],xp=dx,bp=0,er={},He,ui,br=0,eo=0,dr,Eo,Xt=[],$e,ix={useRecords:!1,mapsAsObjects:!0},ks=class{},Sp=new ks;Sp.name="MessagePack 0xC1";var la=!1,to=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(pe)return yx(()=>(_c(),this?this.unpack(t,e):to.prototype.unpack.call(ix,t,e)));di=e>-1?e:t.length,G=0,bp=0,eo=0,ui=null,xp=dx,dr=null,pe=t;try{$e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=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 to){if(er=this,this.structures)return He=this.structures,Dc();(!He||He.length>0)&&(He=[])}else er=ix,(!He||He.length>0)&&(He=[]);return Dc()}unpackMultiple(t,e){let r,o=0;try{la=!0;let n=t.length,a=this?this.unpack(t,n):Bc.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Dc())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Dc());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{la=!1,_c()}}_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 Dc(){try{if(!er.trusted&&!la){let t=He.sharedLength||0;t<He.length&&(He.length=t)}let i=mt();if(G==di)He.restoreStructures&&nx(),He=null,pe=null,Eo&&(Eo=null);else if(G>di){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!la)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw He.restoreStructures&&nx(),_c(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function nx(){for(let i in He.restoreStructures)He[i]=He.restoreStructures[i];He.restoreStructures=null}function mt(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=He[i&63]||er.getStructures&&px()[i&63];return t?(t.read||(t.read=wp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}else if(i<192){let t=i-160;if(eo>=G)return ui.slice(G-br,(G+=t)-br);if(eo==0&&di<140){let e=t<16?Pp(t):fx(t);if(e!=null)return e}return vp(t)}else{let t;switch(i){case 192:return null;case 193:return dr?(t=mt(),t>0?dr[1].slice(dr.position1,dr.position1+=t):dr[0].slice(dr.position0,dr.position0-=t)):Sp;case 194:return!1;case 195:return!0;case 196:return yp(pe[G++]);case 197:return t=$e.getUint16(G),G+=2,yp(t);case 198:return t=$e.getUint32(G),G+=4,yp(t);case 199:return tn(pe[G++]);case 200:return t=$e.getUint16(G),G+=2,tn(t);case 201:return t=$e.getUint32(G),G+=4,tn(t);case 202:if(t=$e.getFloat32(G),er.useFloat32>2){let e=Rc[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=$e.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=$e.getUint16(G),G+=2,t;case 206:return t=$e.getUint32(G),G+=4,t;case 207:return er.int64AsNumber?(t=$e.getUint32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigUint64(G),G+=8,t;case 208:return $e.getInt8(G++);case 209:return t=$e.getInt16(G),G+=2,t;case 210:return t=$e.getInt32(G),G+=4,t;case 211:return er.int64AsNumber?(t=$e.getInt32(G)*4294967296,t+=$e.getUint32(G+4)):t=$e.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return ux(pe[G++]&63);{let e=Xt[t];if(e)return e.read?(G++,e.read(mt())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,ux(pe[G++]&63,pe[G++])):tn(2);case 214:return tn(4);case 215:return tn(8);case 216:return tn(16);case 217:return t=pe[G++],eo>=G?ui.slice(G-br,(G+=t)-br):zA(t);case 218:return t=$e.getUint16(G),G+=2,eo>=G?ui.slice(G-br,(G+=t)-br):GA(t);case 219:return t=$e.getUint32(G),G+=4,eo>=G?ui.slice(G-br,(G+=t)-br):FA(t);case 220:return t=$e.getUint16(G),G+=2,sx(t);case 221:return t=$e.getUint32(G),G+=4,sx(t);case 222:return t=$e.getUint16(G),G+=2,lx(t);case 223:return t=$e.getUint32(G),G+=4,lx(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 VA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>VA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(mt);return i.highByte===0&&(i.read=ax(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=mt()}return r}return e.count=0,i.highByte===0?ax(t,e):e}var ax=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=He[r]||px()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=wp(o,i)),o.read()};function px(){let i=yx(()=>(pe=null,er.getStructures()));return He=er._mergeStructures(i,He)}var vp=Lc,zA=Lc,GA=Lc,FA=Lc;function Lc(i){let t;if(i<16&&(t=Pp(i)))return t;if(i>64&&gp)return gp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Dt.apply(String,r),r.length=0)}return r.length>0&&(t+=Dt.apply(String,r)),t}function sx(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=mt();return t}function lx(i){if(er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[hx()]=mt();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(mt(),mt());return t}}var Dt=String.fromCharCode;function fx(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Dt.apply(String,e)}function Pp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Dt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Dt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Dt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Dt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Dt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Dt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Dt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Dt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Dt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Dt(t,e,r,o,n,a,s,l,c,u);let p=pe[G++];if((p&128)>0){G-=11;return}return Dt(t,e,r,o,n,a,s,l,c,u,p)}else{let c=pe[G++],u=pe[G++],p=pe[G++],d=pe[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(i<14){if(i===12)return Dt(t,e,r,o,n,a,s,l,c,u,p,d);{let f=pe[G++];if((f&128)>0){G-=13;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Dt(t,e,r,o,n,a,s,l,c,u,p,d,f,h,m)}}}}}function yp(i){return er.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function tn(i){let t=pe[G++];if(Xt[t])return Xt[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var cx=new Array(4096);function hx(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,eo>=G)return ui.slice(G-br,(G+=i)-br);if(!(eo==0&&di<180))return vp(i)}else return G--,mt();let t=(i<<5^(i>1?$e.getUint16(G):i>0?pe[G]:0))&4095,e=cx[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=$e.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],cx[t]=e,e.bytes=i;r<o;)n=$e.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?Pp(i):fx(i);return s!=null?e.string=s:e.string=vp(i)}var ux=(i,t)=>{var e=mt();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=He[i];return o&&o.isShared&&((He.restoreStructures||(He.restoreStructures=[]))[i]=o),He[i]=e,e.read=wp(e,r),e.read()},mx=typeof self=="object"?self:global;Xt[0]=()=>{};Xt[0].noBuffer=!0;Xt[101]=()=>{let i=mt();return(mx[i[0]]||Error)(i[1])};Xt[105]=i=>{let t=$e.getUint32(G-4);Eo||(Eo=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Eo.set(t,o);let n=mt();return o.used?Object.assign(r,n):(o.target=n,n)};Xt[112]=i=>{let t=$e.getUint32(G-4),e=Eo.get(t);return e.used=!0,e.target};Xt[115]=()=>new Set(mt());var Op=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Xt[116]=i=>{let t=i[0],e=Op[t];if(!e)throw new Error("Could not find typed array for code "+t);return new mx[e](Uint8Array.prototype.slice.call(i,1).buffer)};Xt[120]=()=>{let i=mt();return new RegExp(i[0],i[1])};Xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,dr=[mt(),mt()],dr.position0=0,dr.position1=0;let r=G;G=e;try{return mt()}finally{G=r}};Xt[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 yx(i){let t=di,e=G,r=bp,o=br,n=eo,a=ui,s=xp,l=Eo,c=dr,u=new Uint8Array(pe.slice(0,di)),p=He,d=He.slice(0,He.length),f=er,h=la,m=i();return di=t,G=e,bp=r,br=o,eo=n,ui=a,xp=s,Eo=l,dr=c,pe=u,la=h,He=p,He.splice(0,He.length,...d),er=f,$e=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function _c(){pe=null,Eo=null,He=null}function gx(i){i.unpack?Xt[i.type]=i.unpack:Xt[i.type]=i}var Rc=new Array(147);for(let i=0;i<256;i++)Rc[i]=+("1e"+Math.floor(45.15-i*.30103));var Bc=new to({useRecords:!1}),jA=Bc.unpack,UA=Bc.unpackMultiple,kA=Bc.unpack,Vc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},HA=new Float32Array(1),J4=new Uint8Array(HA.buffer,0,4);var zc;try{zc=new TextEncoder}catch{}var Gc,Cp,Fc=typeof Buffer<"u",Tp=Fc?Buffer.allocUnsafeSlow:Uint8Array,Sx=Fc?Buffer:Uint8Array,xx=Fc?4294967296:2144337920,X,yt,k=0,ro,oo=null,WA=/[\u0080-\uFFFF]/,Hs=Symbol("record-id"),rn=class extends to{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=Sx.prototype.utf8Write?function(g,D,N){return X.utf8Write(g,D,N)}:zc&&zc.encodeInto?function(g,D){return zc.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,b=f+h+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new Tp(8192),yt=new DataView(X.buffer,0,8192),k=0),ro=X.length-10,ro-k<2048?(X=new Tp(X.length),yt=new DataView(X.buffer,0,X.length),ro=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(oo=["",""],X[k++]=214,X[k++]=98,oo.position=k-r,k+=4):oo=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let E=o[I];if(!E)continue;let _,L=o.transitions;for(let V=0,U=E.length;V<U;V++){let B=E[V];_=L[B],_||(_=L[B]=Object.create(null)),L=_}L[Hs]=I+64}l=N}p||(o.nextId=N+64)}n&&(n=!1),a=o||[];try{if(S(g),oo){yt.setUint32(oo.position+r,k-oo.position-r);let N=oo;oo=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>ro&&M(k),u.offset=k;let N=$A(X.subarray(r,k),s.idsToInsert);return s=null,N}return D&Px?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Hs]=0;v=[]}if(n&&u.saveStructures){let N=o.sharedLength||f;o.length>N&&(o=o.slice(0,N));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=N,I)}}D&eM&&(k=r)}};let S=g=>{k>ro&&(X=M(k));var D=typeof g,N;if(D==="string"){let I=g.length;if(oo&&I>=8&&I<4096){let L=WA.test(g);oo[L?0:1]+=g,X[k++]=193,S(L?-I:I);return}let E;I<32?E=1:I<256?E=2:I<65536?E=3:E=5;let _=I*3;if(k+_>ro&&(X=M(k+_)),I<64||!c){let L,V,U,B=k+E;for(L=0;L<I;L++)V=g.charCodeAt(L),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(L+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),L++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);N=B-k-E}else N=c(g,k+E,_);N<32?X[k++]=160|N:N<256?(E<2&&X.copyWithin(k+2,k+1,k+1+N),X[k++]=217,X[k++]=N):N<65536?(E<3&&X.copyWithin(k+3,k+2,k+2+N),X[k++]=218,X[k++]=N>>8,X[k++]=N&255):(E<5&&X.copyWithin(k+5,k+3,k+3+N),X[k++]=219,yt.setUint32(k,N),k+=4),k+=N}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,yt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,yt.setInt16(k,g),k+=2):(X[k++]=210,yt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,yt.setFloat32(k,g);let E;if(I<4||(E=g*Rc[(X[k]&127)<<1|X[k+1]>>7])>>0===E){k+=4;return}else k--}X[k++]=203,yt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let E=s.get(g);if(E){if(!E.id){let _=s.idsToInsert||(s.idsToInsert=[]);E.id=_.push(E)}X[k++]=214,X[k++]=112,yt.setUint32(k,E.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){N=g.length,N<16?X[k++]=144|N:N<65536?(X[k++]=220,X[k++]=N>>8,X[k++]=N&255):(X[k++]=221,yt.setUint32(k,N),k+=4);for(let E=0;E<N;E++)S(g[E])}else if(I===Map){N=g.size,N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,yt.setUint32(k,N),k+=4);for(let[E,_]of g)S(E),S(_)}else{for(let E=0,_=Gc.length;E<_;E++){let L=Cp[E];if(g instanceof L){let V=Gc[E];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=yt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>ro&&M(k),{target:X,targetView:yt,position:k-F}),S)}finally{U&&(X=U,yt=B,k=q,ro=X.length-10)}j&&(j.length+k>ro&&M(j.length+k),k=qA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,yt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,yt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,yt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),N=D.length;N<16?X[k++]=128|N:N<65536?(X[k++]=222,X[k++]=N>>8,X[k++]=N&255):(X[k++]=223,yt.setUint32(k,N),k+=4);let I;for(let E=0;E<N;E++)S(I=D[E]),S(g[I])}:(g,D)=>{X[k++]=222;let N=k-r;k+=2;let I=0;for(let E in g)(D||g.hasOwnProperty(E))&&(S(E),S(g[E]),I++);X[N+++r]=I>>8,X[N+r]=I&255}:g=>{let D=Object.keys(g),N,I=a.transitions||(a.transitions=Object.create(null)),E=0;for(let L=0,V=D.length;L<V;L++){let U=D[L];N=I[U],N||(N=I[U]=Object.create(null),E++),I=N}let _=I[Hs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let L=D.highByte=_>=96&&m?_-96>>5:-1;I[Hs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,L>=0?(X[k++]=(_&31)+96,X[k++]=L):X[k++]=_):(L>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=L):(X[k++]=212,X[k++]=114,X[k++]=_),E&&(w+=O*E),v.length>=h&&(v.shift()[Hs]=0),v.push(I),S(D))}for(let L=0,V=D.length;L<V;L++)S(g[D[L]])},M=g=>{let D;if(g>16777216){if(g-r>xx)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(xx,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let N=new Tp(D);return yt=new DataView(N.buffer,0,D),X.copy?X.copy(N,0,r,g):N.set(X.slice(r,g)),k-=r,r=0,ro=N.length-10,X=N}}useBuffer(t){X=t,yt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};Cp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ks];Gc=[{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:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+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?bx(i,16,t):vx(Fc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Sx&&this.structuredClone?bx(i,Op.indexOf(e.name),t):vx(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function bx(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function vx(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 qA(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 $A(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function pi(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)");Cp.unshift(i.Class),Gc.unshift(i)}gx(i)}var wx=new rn({useRecords:!1}),XA=wx.pack,YA=wx.pack;var{NEVER:KA,ALWAYS:QA,DECIMAL_ROUND:ZA,DECIMAL_FIT:JA}=Vc,Px=512,eM=1024;var Ox=new rn({structuredClone:!0});pi({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});pi({Class:be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,be.prototype),i}});pi({Class:Ze.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ze.prototype),i}});pi({Class:js.prototype.constructor,type:4,write(i){return i.id},read(i){return new js(i)}});pi({Class:Us.prototype.constructor,type:5,write(i){return i.data},read(i){return new Us(i)}});pi({Class:We.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,We.prototype),i}});function tM(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function Ap(i){if(ra(i))return i;if(Array.isArray(i))return i.map(Ap);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=Ap(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var jc;(r=>{function i(o){return Ox.pack(o)}r.serialize=i;function t(o){return Ox.unpack(o)}r.deserialize=t;function e(o){return tM(i(Ap(o))).toString()}r.checksum=e})(jc||(jc={}));var mi="personal camera",yi="a218fcc3-276b-49b9-b485-49037fd14f5f",Nx=2960946,gt=5526619;var ca;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let b=f.sub(m,h),v=f.sub(y,h),w=f.dot(b,v)/f.dot(b,b),O=f.scalarMultiply(b,w);return f.add(h,O)}f.projectionOnto=u;function p(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=p;function d(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=d})(ca||(ca={}));var fi;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(fi||(fi={}));var Tx;(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})(Tx||(Tx={}));var Cx;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(Cx||(Cx={}));var hi;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(hi||(hi={}));var Tt;(d=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}d.isRGB=i,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}d.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}d.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}d.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}d.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}d.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}d.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}d.lerp=u;function p(f){return ht(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}d.is=p})(Tt||(Tt={}));var Ne;(u=>{u.white={...Tt.white,a:1};function t(p){return ht(p)?"r"in p&&"g"in p&&"b"in p&&"a"in p:!1}u.is=t,u.transparent={...Tt.white,a:0};function r(p){return{r:p[0],g:p[1],b:p[2],a:p[3]}}u.from0to1=r;function o(p,d){return{...Tt.fromHex(p),a:d}}u.fromHexAndA=o;function n(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:p.a}}u.toRgb255a1=n;function a(p,d){return Tt.equals(p,d)&&p.a===d.a}u.equals=a;function s(p,d){return Tt.equalsFixed(p,d)&&p.a.toFixed(2)===d.a.toFixed(2)}u.equalsFixed=s;function l(p,d,f){return{r:p.r+(d.r-p.r)*f,g:p.g+(d.g-p.g)*f,b:p.b+(d.b-p.b)*f,a:p.a+(d.a-p.a)*f}}u.lerp=l;function c({r:p,g:d,b:f,a:h}=u.white){return`rgba(${p*255}, ${d*255}, ${f*255}, ${h})`}u.toStyle=c})(Ne||(Ne={}));var Uc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Uc||(Uc={}));var Ax;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ax||(Ax={}));var Mx;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(Mx||(Mx={}));var Ix;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(Ix||(Ix={}));function Mp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var Lr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Lr||(Lr={}));var gi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(gi||(gi={}));var io;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(rM.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;oM.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;iM.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;nM.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;aM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;sM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(io||(io={}));var kc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(kc||(kc={}));var rM=["count"],oM=["radius","start","end","position","scale","rotation"],iM=["position","scale","rotation"],nM=["count","size"],aM=["count","position","scale","rotation"],sM=["strength","scale","rotation","position","movement","seed","freqScale"];var Hc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Hc||(Hc={}));var Wc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ne.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ne.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Wc||(Wc={}));var ua;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(ua||(ua={}));var xi;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(xi||(xi={}));var Ip;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ip||(Ip={}));var Np;(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})(Np||(Np={}));var qc;(t=>t.defaultData={...Np.defaultData,...Ip.defaultData})(qc||(qc={}));var Ex;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(Ex||(Ex={}));var da;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(da||(da={}));var Dx;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(Dx||(Dx={}));function Lx(i){return i.type!=="displace"}var _x;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(_x||(_x={}));var Rx=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Bx=["wrapping","image","video","name","minFilter","magFilter"],St;(o=>{function i(n,a){let{texture:s,...l}=a;if(Object.assign(n,l),s){let c=n.texture;c&&Object.assign(c,s)}}o.patch=i;function t(n,a){return n==="light"&&a?e(a):r(n)}o.defaultData=t;function e(n){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(n){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(n){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(n){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:da.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:Tt.fromHex(gt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ne.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ne.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ne.fromHexAndA(0,1),contourColor:Ne.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Tt.fromHex(0),a:1},colorB:{...Tt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(St||(St={}));var Ct;(c=>{function i(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=i;function t(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([f,h])=>{p+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>p+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${h}`})}),p}c.getHash=t;function e(){return{layers:new be}}c.defaultEmptyData=e;function r(u="layer1",p="layer2"){return n("phong",u,p)}c.defaultData=r;function o(u,p){return{...u,name:p}}c.withName=o;function n(u,p="layer1",d="layer2"){let f=new be;return f.push({fi:0,data:St.defaultData("light",u),id:p}),f.push({fi:1,data:St.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=n;function a(u){let p=St.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new be;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...St.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...St.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=St.defaultData("texture");Object.assign(h.texture,{image:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:St.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=St.defaultData("video");Object.assign(h.texture,{video:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:St.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Ct||(Ct={}));var pa;(t=>{function i(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(pa||(pa={}));var fa;(t=>{function i(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(fa||(fa={}));var Ep={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var $c;(t=>{function i(e,r){let o={...e};return lM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})($c||($c={}));var Xc={shape:Ep,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},lM=["depth","offset","angle","twist","startScale","endScale"];var Ws;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(Ws||(Ws={}));var Yc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,$c.merge(o.extrusion,r.extrusion))),o}t.merge=i})(Yc||(Yc={}));var no;(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==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:fa.defaultData(),extrusion:Xc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:pa.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(no||(no={}));var Kc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Tt.white,near:.1,far:2e3})(Kc||(Kc={}));var Qc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(Qc||(Qc={}));var Dp;(t=>t.defaultData={softShadowQuality:"low"})(Dp||(Dp={}));var _p;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(_p||(_p={}));var Lp;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Lp||(Lp={}));var qs;(t=>t.defaultData={usePhysics:!1,gravity:-10})(qs||(qs={}));var Rp;(t=>t.defaultData={playCamera:mi,gameControlObject:null})(Rp||(Rp={}));var Zc;(t=>t.defaultData={backgroundColor:Ne.fromHexAndA(Nx,1),postprocessing:Qc.defaultData,fog:Kc.defaultData,globalPhysics:qs.defaultData,ambient:_p.defaultData,ao:Lp.defaultData,shadow:Dp.defaultData,publish:Rp.defaultData})(Zc||(Zc={}));var Jc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Jc||(Jc={}));var Vx;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(Vx||(Vx={}));var ha;(o=>{o.identity={...Uc.identity,hiddenMatrix:hi.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Kl({position:fi.isEqual(n.position,a.position)?void 0:a.position,rotation:fi.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:fi.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:hi.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ha||(ha={}));var xt;(t=>t.defaultData={states:new be,events:new be,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:xi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ha.identity,cloner:null})(xt||(xt={}));var eu;(t=>t.defaultData={type:"Empty",...xt.defaultData})(eu||(eu={}));var zx;(t=>t.defaultData={type:"ParticleCollider",...Jc.defaultData,...xt.defaultData})(zx||(zx={}));var Gx;(t=>t.defaultData={type:"Component",...xt.defaultData})(Gx||(Gx={}));var Fx;(t=>t.defaultData={type:"Particle",...xt.defaultData,...ua.defaultData})(Fx||(Fx={}));var Do;(t=>t.defaultData={type:"Mesh",...xt.defaultData,...qc.defaultData})(Do||(Do={}));var on;(t=>t.defaultData={...xt.defaultData,...ha.identity,position:[0,0,gi.DefaultTargetOffset],...gi.defaultData})(on||(on={}));var tu;(e=>{function i(r){return{...xt.defaultData,...Wc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(tu||(tu={}));var ma;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(ma||(ma={}));var ao;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...xt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=ha.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(ao||(ao={}));var _o;(e=>{e.defaultData={type:"Page",...xt.defaultData,physics:{...xi.defaultData,fusedBody:!1},...Zc.defaultData,camera:on.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(_o||(_o={}));var ru;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:hi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:xi.defaultData,states:new be,events:new be,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...gi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("RectangleGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("BooleanGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("ShapeBlendGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("TextGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...xt.defaultData,...Do.defaultData,geometry:no.defaultData("InputGeometry"),material:Ct.defaultTwoLayerData("phong","layer1","layer2")}))(ru||(ru={}));var nn;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new We}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new We})))):Lr.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=ci(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&St.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=ci(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let f=l[c]?.layers?.data(p);f&&St.patch(f,d)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[f,h]of Object.entries(d.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let b={path:[...p,"layers",f,"texture"],props:m,type:0};l.push(b)}if(Object.keys(y).length>0){let b={path:[...p,"layers",f],props:y,type:0};l.push(b)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...kc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[f,h]of Object.entries(d))u(["materials",f],h);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let f={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(f),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let f={path:[p],props:d,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,ha.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Lr.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Yc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:io.merge(s.cloner,a.cloner)});else if(Hc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Tt.clone(l.color))}return s}o.patch=r})(nn||(nn={}));var ya;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(ya||(ya={}));var Sr;(t=>t.defaultData={orbitControls:ya.defaultData,playPage:yi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,format:"mp4",imageFormat:"jpg",activeTimeline:null},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(Sr||(Sr={}));var Bp;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bp||(Bp={}));var Vp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Vp||(Vp={}));var Lo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Vp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Lo||(Lo={}));var jx;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Bo.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(jx||(jx={}));var Ro;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:tu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=ru.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),d.push(...p);let h=new Ze;return h.push({fi:1,id:yi,data:{..._o.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Sr.defaultData,styles:Lo.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ze,publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Sr.defaultData,styles:Lo.defaultData()}},c.emptyData=function(){return{objects:new Ze,publish:{...Sr.defaultData},styles:Lo.defaultData()}};function s(u){return{...c.defaultData,objects:Ot(u,Ze.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ro||(Ro={}));var ga;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ga||(ga={}));var ou;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(ou||(ou={}));var Ux;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new be,queries:new be,autoStart:!0}))(Ux||(Ux={}));var bi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(bi||(bi={}));var zp;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(zp||(zp={}));var kx;(t=>t.all=[...zp.all,"components"])(kx||(kx={}));var Hx;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Hx||(Hx={}));var Rr;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Rr||(Rr={}));var wr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ot(a,ue.prototype)}n.defaultColors=i;function t(){return Ot({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new be,userAPIs:new ue,userWebhooks:new ue,lib:Rr.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(wr||(wr={}));import{MathUtils as au}from"three";var iu;(t=>t.list=["idle","move","jump","run"])(iu||(iu={}));var nu;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ne.fromHexAndA(3728051,1)}}))(nu||(nu={}));function Wx(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={..._r(st(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...st(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Vo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function zo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Ct.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Ct.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==We.prototype&&t(o.material)})})}function cM(i){Object.assign(i.scene.publish,{orbitControls:{...ya.defaultData,...st(i.scene.publish.orbitControls)}})}function uM(i){Object.assign(i.scene.publish.settings,{video:{...Sr.defaultData.settings.video,...st(i.scene.publish.settings.video)}})}function dM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((Rx.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(Bx.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function pM(i){i.scene.publish.withBackground=!0}function fM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function hM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function mM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function yM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=st(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=st(e).booleanExclude!==!0)}})}function gM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function xM(i){function t(r){Object.setPrototypeOf(r,We.prototype),r.texture&&Object.setPrototypeOf(r.texture,We.prototype)}function e(r){Object.setPrototypeOf(r,We.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=st(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=st(l).layers;e(c),l.layers=c}})})}function qx(i){i.layers===void 0&&Object.assign(i,Ct.defaultTwoLayerData("lambert"))}function Gp(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...st(t),colors:e,steps:r};Object.assign(t,o)}})}function bM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function $x(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Gp(r)}):"material"in e&&typeof e.material!="string"&&Gp(e.material)}),Object.values(i.shared.materials).forEach(t=>Gp(t))}function vM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function SM(i){i.shared.audios=Ot({},ue.prototype)}function wM(i){i.shared.videos=Ot({},ue.prototype)}function PM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function OM(i){Object.entries(st(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(st(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function TM(i){i.scene.publish.settings.web.preload=!1}function Xx(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Yx(i){i.layers&&i.layers.forEach(t=>{Lx(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function CM(i){i.shared.fonts=Ot({},ue.prototype)}function AM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function MM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Ct.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=AM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...xt.defaultData,...Do.defaultData,flatShading:!1,wireframe:!1,geometry:{...no.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:st(o.states),events:st(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=st(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function IM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new be,move:new be,jump:new be}});else{let n=new be;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:au.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,_r(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new be({fi:0,id:au.generateUUID(),data:c},{fi:1,id:au.generateUUID(),data:d})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function NM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let p;s.push(c),l.interaction==="play"?p={..._r(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={..._r(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:au.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Kx(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=St.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Qx(i){Vo(i,Kx),zo(i,Kx)}function EM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function DM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function _M(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ct.defaultTwoLayerData("phong"))})}function LM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function RM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function BM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function VM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function GM(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function FM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=nu.defaultDataThirdPerson.navmesh)})})}function jM(i){i.scene.styles||(i.scene.styles=Lo.defaultData())}function Zx(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function UM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),zo(i,Zx),Vo(i,Zx)}function kM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new be})})})}function HM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Jx(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function e0(i,t){if(t<1&&(zo(i,Wx),Vo(i,Wx),i.schema=1),t<2&&(cM(i),i.schema=2),t<3&&(dM(i),i.schema=3),t<4&&(pM(i),i.schema=4),t<5&&(fM(i),i.schema=5),t<6&&(hM(i),i.schema=6),t<7&&(mM(i),i.schema=7),t<8&&(i.schema=8),t<9&&($x(i),i.schema=9),t<10&&(bM(i),i.schema=10),t<11&&(vM(i),i.schema=11),t<12&&($x(i),i.schema=12),t<13&&(SM(i),i.schema=13),t<14&&(PM(i),i.schema=14),t<15&&(OM(i),i.schema=15),t<16&&(TM(i),i.schema=16),t<17&&(zo(i,Xx),Vo(i,Xx),i.schema=17),t<18&&(zo(i,qx),Vo(i,qx),i.schema=18),t<19&&(uM(i),i.schema=19),t<20&&(CM(i),MM(i),i.schema=20),t<21&&(IM(i),NM(i),i.schema=21),t<22&&(Qx(i),i.schema=22),t<23&&(EM(i),i.schema=23),t<24&&(DM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(wM(i),t<25&&(i.schema=25)),t<26&&(yM(i),i.schema=26),t<27&&(gM(i),i.schema=27),t<28&&(Qx(i),i.schema=28),t<29&&(xM(i),i.schema=29),t<30&&(_M(i),i.schema=30),t<31&&(LM(i),i.schema=31),t<33&&(RM(i),i.schema=33),t<34&&(BM(i),i.schema=34),t<35&&(VM(i),i.schema=35),t<36&&(zM(i),i.schema=36),t<37&&(GM(i),i.schema=37),t<38&&(zo(i,Yx),Vo(i,Yx),i.schema=38),t<39&&(FM(i),i.schema=39),t<40&&(jM(i),i.schema=40),t<41&&(UM(i),i.schema=41),t<42&&(kM(i),i.schema=42),t<43&&(HM(i),i.schema=43),t<99){zo(i,Jx),Vo(i,Jx),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=mi);let e=st(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=yi,r.insertBefore(null,null,[{id:yi,data:{..._o.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:_r(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:_r(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...qs.defaultData,..._r(i.scene.environment,"usePhysics","gravity")},camera:st(i.scene.ownerCamera)??_o.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ro.TRASH_CAN_ID&&r.move(yi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,xi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function t0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function WM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function qM(i){Array.isArray(st(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var xa=180/Math.PI;function r0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*xa)}function o0(i){r0(i),i.type==="Page"&&r0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*xa))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*xa),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*xa),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=xa,t.extrusion.twist*=xa),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(st(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function $M(i){i.shared.variables=Ot({},ue.prototype)}function XM(i){let t=st(i.shared.variables);i.shared.variables=Ot(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),be.prototype)}var so=119;function Fp(i,t){t(i.data);for(let e of i.children)Fp(e,t)}function YM(i){let t=i.schema??104;t!==so&&(t<105&&(Fp(i.asset,o0),i.schema=105),t<118&&(Fp(i.asset,i0),i.schema=118))}function KM(i){i.shared.particles=Ot({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=Rr.defaultData().particles)}function QM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function ZM(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function JM(i){i.scene.objects.traverse((t,e)=>{Array.isArray(st(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function eI(i){i.shared.userAPIs=Ot({},ue.prototype),i.shared.userWebhooks=Ot({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=Rr.defaultData().userAPIs,i.shared.lib.userWebhooks=Rr.defaultData().userWebhooks)}function tI(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=Sr.defaultData.settings.videoStatic)}function i0(i){i.timelineAnimations=Ot({},ue.prototype)}function su(i){let t=i.schema??0;if(t!==so){console.warn("updating from ",t,"to ",so),e0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=Sr.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(zo(i,t0),Vo(i,t0),i.schema=101),t<102&&(WM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=Rr.defaultData(),i.schema=104),t<105&&($M(i),i.scene.objects.traverse((e,r)=>{o0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))YM(e);t<106&&(XM(i),i.schema=106),t<107&&(i.shared.lib.variables=Rr.defaultData().variables,i.schema=107),t<109&&(KM(i),i.schema=109),t<110&&(QM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{qM(r)}),i.schema=111),t<112&&(ZM(i),i.schema=112),t<113&&(JM(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(eI(i),i.schema=115),t<116&&(tI(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Ot({},ue.prototype),i.scene.objects.traverse((e,r)=>{i0(r)}),i.schema=118),t<119&&(i.scene.publish.settings.videoStatic.format=Bo.defaultData.scene.publish.settings.videoStatic.format,i.scene.publish.settings.videoStatic.imageFormat=Bo.defaultData.scene.publish.settings.videoStatic.imageFormat,i.schema=119)}}var Bo;(c=>{c.defaultData={schema:so,scene:Ro.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors()}},c.emptyDataForImports=function(){let u=Ro.emptyDataWithPage();return{schema:so,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:{...wr.emptyData(),colors:wr.defaultColors(),images:wr.defaultImages()}}},c.emptyData=function(){return{schema:so,scene:Ro.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ga.defaultData),shared:wr.emptyData()}},c.clipboard2dData=function(){return{schema:so,scene:Ro.emptyData(),frames:new ue,shared:wr.emptyData()}},c.collabHelper={...Fs,updateSchema(u){return(u.schema??0)<so?ci(u,su):(u.schema??0)-so}};function n(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:Rr.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let f=u.shared.lib.components[p];if(f)return f.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let f=d.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Bo||(Bo={}));var lu;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(lu||(lu={}));var n0;(t=>{function i(e){return!0}t.is=i})(n0||(n0={}));var cu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Kl({position:ca.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:ca.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&ca.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(cu||(cu={}));var jp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(jp||(jp={}));var a0;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(a0||(a0={}));var uu;(t=>t.defaultData={opacity:1,fill:{color:Ne.fromHexAndA(gt,1),enabled:!0},stroke:{color:Ne.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ne.from0to1([0,0,0,1]),enabled:!1,spread:0}})(uu||(uu={}));var an;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,cu.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}n.toOps=o})(an||(an={}));var $s;(t=>t.defaultData={...cu.defaultData,...jp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})($s||($s={}));var ba;(t=>t.defaultData={...$s.defaultData,...uu.defaultData})(ba||(ba={}));var du;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(du||(du={}));var Up;(t=>t.defaultData={...ba.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Up||(Up={}));var va;(t=>t.defaultData={...ba.defaultData,...du.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(va||(va={}));var kp;(t=>t.defaultData={...ba.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(kp||(kp={}));var Hp;(t=>t.defaultData={...ba.defaultData,type:"path2d",path:"",name:"Path"})(Hp||(Hp={}));var s0;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(s0||(s0={}));var Xs;(t=>t.defaultData={...$s.defaultData,name:"Group",type:"group2d"})(Xs||(Xs={}));var Wp;(t=>t.defaultData=()=>({...$s.defaultData,...du.defaultData,...uu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ne.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ne.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Wp||(Wp={}));var Go;(n=>{function i(a){switch(a){case"rectangle2d":return{...va.defaultData};case"ellipse2d":return{...Up.defaultData};case"text2d":return{...kp.defaultData};case"vector2d":return{...va.defaultData};case"path2d":return{...Hp.defaultData};case"frame2d":return{...Wp.defaultData()};case"group2d":return{...Xs.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(Go||(Go={}));var pu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ze},e.emptyData=function(){return{type:"scene2d",objects:new Ze}}))(pu||(pu={}));import{Color as rI}from"three";var At=class extends rI{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)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var dd=_s(c0());import{Object3D as bD,Vector3 as mr,Euler as Ah,MathUtils as $v,Matrix4 as Tn}from"three";var oI=.5*(Math.sqrt(3)-1),Ys=(3-Math.sqrt(3))/6,iI=1/3,lo=1/6,X6=(Math.sqrt(5)-1)/4,Y6=(5-Math.sqrt(5))/20,Ks=i=>Math.floor(i)|0,u0=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),$p=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function d0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(o=>u0[o%12*2]),r=new Float64Array(t).map(o=>u0[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*oI,p=Ks(n+u),d=Ks(a+u),f=(p+d)*Ys,h=p-f,m=d-f,y=n-h,b=a-m,v,w;y>b?(v=1,w=0):(v=0,w=1);let O=y-v+Ys,S=b-w+Ys,T=y-1+2*Ys,M=b-1+2*Ys,g=p&255,D=d&255,N=.5-y*y-b*b;if(N>=0){let _=g+t[D],L=e[_],V=r[_];N*=N,s=N*N*(L*y+V*b)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],L=e[_],V=r[_];I*=I,l=I*I*(L*O+V*S)}let E=.5-T*T-M*M;if(E>=0){let _=g+1+t[D+1],L=e[_],V=r[_];E*=E,c=E*E*(L*T+V*M)}return 70*(s+l+c)}}function p0(i=Math.random){let t=f0(i),e=new Float64Array(t).map(n=>$p[n%12*3]),r=new Float64Array(t).map(n=>$p[n%12*3+1]),o=new Float64Array(t).map(n=>$p[n%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*iI,h=Ks(a+f),m=Ks(s+f),y=Ks(l+f),b=(h+m+y)*lo,v=h-b,w=m-b,O=y-b,S=a-v,T=s-w,M=l-O,g,D,N,I,E,_;S>=T?T>=M?(g=1,D=0,N=0,I=1,E=1,_=0):S>=M?(g=1,D=0,N=0,I=1,E=0,_=1):(g=0,D=0,N=1,I=1,E=0,_=1):T<M?(g=0,D=0,N=1,I=0,E=1,_=1):S<M?(g=0,D=1,N=0,I=0,E=1,_=1):(g=0,D=1,N=0,I=1,E=1,_=0);let L=S-g+lo,V=T-D+lo,U=M-N+lo,B=S-I+2*lo,q=T-E+2*lo,j=M-_+2*lo,F=S-1+3*lo,H=T-1+3*lo,W=M-1+3*lo,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-L*L-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+N]];K*=K,u=K*K*(e[$]*L+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)p=0;else{let $=ee+I+t[te+E+t[Y+_]];Z*=Z,p=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)d=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,d=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+p+d)}}function f0(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as nI}from"three";var Br=new nI,fu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Br.a.fromBufferAttribute(t,o),Br.b.fromBufferAttribute(t,o+1),Br.c.fromBufferAttribute(t,o+2),n*=Br.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Br.a.fromBufferAttribute(this.positionAttribute,t*3),Br.b.fromBufferAttribute(this.positionAttribute,t*3+1),Br.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Br.a,o).addScaledVector(Br.b,n).addScaledVector(Br.c,1-(o+n)),Br.getNormal(r),this}};import{Object3D as uI}from"three";var y0=_s(m0());import{Object3D as aI,Matrix4 as co}from"three";var sI=new co,lI=new co,cI=new co,Fo;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(Fo||(Fo={}));var Sa=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new co;this.copyPreviousMatrix=!0;this.hiddenMatrix=new co;this.matrixWorldRigid=new co;this.shearScale=new co;this.shearScaleInv=new co}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof aI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let 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 a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)Fo.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fo.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,y0.SVD)(o),l=sI.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=lI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=cI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new co().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof co?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Xp=class extends Sa(uI){},dI=i=>i.type==="Mesh",Vr=class extends Xp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Vr(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return dI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as _N,BufferGeometry as LN,MeshBasicMaterial as RN}from"three";import{Matrix4 as EN,Mesh as DN}from"three";import{Matrix4 as yu,Vector3 as b0,Euler as gI,MathUtils as Zs}from"three";import{Box3 as pI,Line3 as fI,Matrix4 as Yp,Vector3 as pr}from"three";var sn=new pr,ln=new pr,wa=new Yp,x0=[new pr(-1,1,1),new pr(-1,-1,1),new pr(1,-1,1),new pr(1,1,1),new pr(-1,1,-1),new pr(-1,-1,-1),new pr(1,-1,-1),new pr(1,1,-1)],hI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],g0=(i,t,e)=>{i.updateEntityBoxSize(sn,ln),wa.copy(t).multiply(i.matrixWorld),ln.x===0&&ln.y===0&&ln.z===0?e.push(new pr(sn.x,sn.y,sn.z).applyMatrix4(wa)):x0.forEach(r=>{e.push(r.clone().multiply(ln).add(sn).applyMatrix4(wa))})},Qs=class extends pI{constructor(){super(...arguments);this.matrix=new Yp;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 Yp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new pr);return}g0(a,r,n)}}):g0(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(wa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(ln).multiplyScalar(.5),this.getCenter(sn),wa.copy(this.matrix).setPosition(sn),this.vertices=x0.map(e=>e.clone().multiply(ln).applyMatrix4(wa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hI.map(([e,r])=>new fI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new pr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var zr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as yI,CubicBezierCurve3 as Kp,Vector3 as Gr}from"three";var Zp=class extends yI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(t*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Jp=.001;function ef(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=Jp}function Qp(i,t){let e=new Gr(...i.position),r=new Gr(...i.controlNext.position),o=new Gr(...t.controlPrevious.position),n=new Gr(...t.position);return ef(e,r,n)&&ef(e,o,n)}function mu(i){let t=i.points.map(u=>new Gr(...u.data.position)),e=[i.points[0]],r=new Gr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)ef(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Gr(...p.position),f=new Gr(...p.controlPrevious.position),h=new Gr(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,b=o&&u==a-1?0:u+1,v=e[y].data,w=e[b].data,O=new Gr(...v.position),S=new Gr(...w.position),T=O.clone().sub(d).normalize(),M=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=Qp(v,p),D=Qp(p,w);if(!g||!D)s[u]={...m,removedLength:0};else{let N=T.clone().add(M).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!Qp(e[p].data,e[d].data))f.position.distanceTo(h.position)>Jp&&(m=new Kp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),b=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&b.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(b)>Jp&&(m=new Kp(y,y.clone().lerp(b,.3),b.clone().lerp(y,.3),b))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,f=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),h=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),b=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(b),O=y.clone().multiplyScalar(-m).add(w),S=d.distanceTo(O)/d.distanceTo(b),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(f)).add(d),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Kp(f,g,D,h)}let c=new Zp;return l.forEach(u=>{u&&c.add(u)}),c}var _e;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(_e||(_e={}));var Pa=i=>_e.is(i),xI={type:"completeState",isfromEntity:!0},bI=["x","y","z"],tf=new b0,vI=new b0().set(0,1,0),Oa=i=>class extends Sa(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Qs;this._recursiveBBox=new Qs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(_e.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(_e.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(_e.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)nn.toOps(this.data,a.data).forEach(l=>{let c=na.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=nn.patch(this.data,a),nn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{Pa(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(_e.is(o[n]))return o[n];if(_e.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&_e.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)Pa(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{_e.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Pa(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Pa(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>Pa(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Zs.RAD2DEG,this.rotation.y*Zs.RAD2DEG,this.rotation.z*Zs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ea(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,bI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(tf.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Zs.DEG2RAD),this.rotation.setFromVector3(tf),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??hi.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)_e.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{_e.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ea(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Be(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let p={...r.props};if(delete p.name,Object.values(r.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=Je.zoom(d,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...r,props:p,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=Je.removeOverridden(r.path,r.props,u);l={...r,props:p}}}if(this.updateByPatchedOpBase(l,nn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Be(r.path,["overrides"])){let u=[],p=[...r.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let d of Object.keys(r.props)){u[u.length-1]=d;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[d],f.updateState(Jr.apply(f.component.data,f.overrideData),n))}}else{let d=n.scene.findInstance([this.uuid,...u]);if(d){let f=Je.zoom(d.component.data,p);if(r={...r,path:p},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}d.overrideData=ma.resolve(o.overrides,u),d.updateByOp(r,at.applySimple(d.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let p;for(let d of ao.rootOverrideProps)d in r.props&&(p===void 0&&(p={}),p[d]=r.props[d]);p&&(u={...r,props:p})}else for(let p of ao.rootOverrideProps)if(Be(r.path,[p])){u=r;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,u);d&&p.updateByOp(d,at.applySimple(p.data,d),n,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=Jr.filterOp(p.overrideData,r);if(d){let f;s===p.data&&r===d?f=o:f=at.applySimple(p.data,d),p.updateByOp(d,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Lr.is(r.props.type)&&zr.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){zr.changeEntityProptotype(this,o,n);for(let a of this.children)_e.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Be(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Be(r.path,["cloner"])!==null){let a=at.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=mu(c.geometry.path),p=(n+a)%1;n+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let f=this.parent?this.parent?.matrixWorld:new yu;l.updateMatrixWorld();let h=new yu().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new yu().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),v=new yu().lookAt(d,b,vI),w=tf.setFromEuler(new gI().setFromRotationMatrix(v)).multiplyScalar(Zs.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(xI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof zr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new zr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as PI,ConeGeometry as OI,Float32BufferAttribute as TI,MathUtils as CI}from"three";import{BufferGeometry as S0,CylinderGeometry as SI,Float32BufferAttribute as xu,MathUtils as wI,Vector2 as Fr,Vector3 as gu}from"three";var w0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=wI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=i.parameters,h;return l===0?(h=new S0,h.setAttribute("position",new xu([],3))):p||f?h=new Js(c,u,r,o,n,a,s,l*Math.PI/180,p,p,d,f):h=new SI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function vi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function v0(i){return new Fr(i.y,-i.x)}var Js=class extends S0{constructor(t,e,r,o,n,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],v=0,w=r/2,O=new gu,S=new gu;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new Fr(t,w),M=new Fr(e,-w),g=null,D=null,N=null,I=null,E=T.clone().sub(M),_=0,L=0,V=0;d>0&&(_=Math.min(t,e)*(1-d),L=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-E.angle(),q=E.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=d?H:F,ee=d?H:j;if(c=Math.min(c,(t-L)/W,E.length()/H),u=Math.min(u,(e-V)/ee,E.length()/H),c>0){let Q=c/j;g=T.clone().sub(new Fr(Q,c)),d&&(N=g.clone(),N.x-=_-H*c),T.sub(E.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new Fr(Q,-u)),M.add(E.clone().setLength(Q)),d&&(I=D.clone(),I.x-=_-H*u,U.sub(E.clone().setLength(Q)))}E=T.clone().sub(M);let te=E.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new Fr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=v0(E).normalize();if(vi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=E.clone().multiplyScalar(me).add(M);vi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}if(N&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,N,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,L,1),d&&!te){let ae=v0(E).multiplyScalar(-1).normalize();vi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=E.clone().multiplyScalar(-fe).add(U);vi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}}d&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&d&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new xu(m,3)),this.setAttribute("normal",new xu(y,3)),this.setAttribute("uv",new xu(b,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<p+1;fe++){let he=fe/p,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Fr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ie).add(ce);vi(C,de,S),m.push(S.x,S.y,S.z),vi(ye,de,O),y.push(O.x,O.y,O.z),b.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new gu,ae=new Fr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),vi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),b.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new Fr(Math.sin(de),Math.cos(de)),ie=new Fr(-Math.cos(de),Math.sin(de)),ce=new gu,ae=Q<0?(he,xe,ye)=>h.push(he,xe,ye):(he,xe,ye)=>h.push(he,ye,xe),me=new Fr((t+e+L+V)/4,0);vi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),b.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ie.x,0,ie.y);let ye=b.slice(he*2,he*2+2);b.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var P0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=CI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=i.parameters,d;return l===0?(d=new PI,d.setAttribute("position",new TI([],3))):c>0||u>0||l<360?d=new Js(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,p,0,!0):d=new OI(t/2,r,o,n,a),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as AI,BufferGeometry as MI,Float32BufferAttribute as rf,Vector3 as el}from"three";var O0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new AI(t,e,r,o,n,a):c=new nf(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},of=Math.PI/2,nf=class extends MI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new rf(u,3)),this.setAttribute("normal",new rf(p,3)),this.setAttribute("uv",new rf(d,2));function h(b,v,w,O,S,T,M,g,D,N){let I=(T-2*s)/D,E=(M-2*s)/N,_=T/2-s,L=M/2-s,V=g/2,U=D+1,B=N+1,q=0,j=new el;for(let F=0;F<B;F++){let H=F*E-L;for(let W=0;W<U;W++){let ee=W*I-_;j[b]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[b]=0,j[v]=0,j[w]=g>0?1:-1,p.push(j.x,j.y,j.z),d.push(W/D),d.push(1-F/N),q+=1}}for(let F=0;F<N;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(b,v,w,O,S,T,M,g,D,N){let I=(M-2*s)/N,E=M/2-s,_=g/2-s,L=D/2,V=N+1,U=0,B=new el,q=new el;for(let j=0;j<l+1;j++){let F=j/l*of,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(L-W)*T,q[b]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-E;B[b]=re*O,u.push(B.x,B.y,B.z),p.push(q.x,q.y,q.z),d.push(Y/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(b,v,w){let O=new el,S=new el(t/2,e/2,r/2);S.subScalar(s);let T=[],M=b*v*w>0?(D,N,I)=>c.push(D,N,I):(D,N,I)=>c.push(D,I,N);for(let D=0;D<=l;D++){let N=[],I=of*(1-D/l),E=Math.cos(I),_=Math.sin(I),L=0;for(let V=0;V<=D;V++){let U=Math.cos(L),B=Math.sin(L);O.x=E*U,O.y=_,O.z=E*B;let q=S.clone().addScaledVector(O,s);u.push(b*q.x,v*q.y,w*q.z),p.push(b*O.x,v*O.y,w*O.z),d.push(0,0),N.push(f++),L+=of/D}T.push(N)}let g=T.length-1;for(let D=0;D<g;D++){let N=T[D],I=T[D+1],E=N.length-1;M(N[0],I[1],I[0]);for(let _=1;_<=E;_++)M(N[_-1],N[_],I[_]),M(N[_],I[_+1],I[_])}}}};import{BufferGeometry as II,Float32BufferAttribute as af,Triangle as NI,Vector3 as jo,Vector2 as sf}from"three";var Si=class extends II{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new af(s,3)),this.setAttribute("normal",new af(c,3)),this.setAttribute("uv",new af(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new jo,m=h.clone(),y=new NI,b=n*o,v=o-b,w=a+1,O=new jo,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new jo().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let N=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],N.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];N.push(H,W,H+a+2)}}let I=h.clone(),E=h.clone(),_=h.clone(),L=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new jo;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*b;a==0?E.copy(te):E.copy(I).setLength(v+ce),W.push(ce);let ae=[E,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];L.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(L,V).normalize();for(let xe=0;xe<w;xe++){let ye=[le,ie][me]*xe/w;h.copy(L).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([xe==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){L=H[Z+le],V=H[Q+le],$.push(L);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(L,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=N.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new jo;for(let M=0;M<s.length;M+=3){d.x=s[M+0],d.y=s[M+1],d.z=s[M+2];let g=S(d)/2/Math.PI+.5,D=T(d)/Math.PI+.5;l.push(g,1-D)}let f=new jo,h=new jo,m=new jo,y=new jo,b=new sf,v=new sf,w=new sf,O=(M,g,D,N)=>{N<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=N/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),b.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(b,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],N=l[M+4],I=Math.max(g,D,N),E=Math.min(g,D,N);I>.9&&E<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),N<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new Si(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as EI}from"three";var T0=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new tl(t*.5,n,a):new EI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},tl=class extends Si{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-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],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new tl(t.radius,t.corner,t.cornerSides)}};import{Plane as UI,Shape as F0,Vector2 as Uo,Vector3 as kI,MathUtils as hf,LineCurve as mf,QuadraticBezierCurve as j0,CubicBezierCurve as wu}from"three";import{CubicBezierCurve as bu,EllipseCurve as DI,LineCurve as vu,LineCurve3 as _I,MathUtils as LI,QuadraticBezierCurve as cf,SplineCurve as RI,Vector2 as qt,Vector3 as M0}from"three";var rl=1e-12,Ta=class{constructor(t){this.position=new qt;this.startPosition=new qt;this.uuid=LI.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 Ta(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ca=class extends Ta{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ca(this.parent).copy(this)}},jr=class extends Ta{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ca(this),new Ca(this))}static create(e,r){let o=new jr(e,new qt(...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 a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new jr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new qt,r=new qt){let[o,n]=this.computeTangents();return o&&n&&(C0(o,e),C0(n,r)),[e,r]}computeTangent(e=new qt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new qt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function C0(i,t=new qt){let e=i.length();return t.set(-i.y/e,i.x/e)}var uf=i=>i,Aa=new qt,Su=new qt,BI=new qt,VI=new qt,zI=new qt,GI=new qt,I0=new M0,N0=new M0;function E0(i){let t=new qt;t.addVectors(i.v0,Aa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new qt;return e.addVectors(i.v2,Su.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new bu(i.v0,t,e,i.v2)}function ol(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function FI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function jI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function df(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 D0(i,t,e){return A0(i,t)&&A0(t,e)&&lf(i.position,t.position,e.position)}function lf(i,t,e){return Aa.copy(t).sub(i).cross(Su.copy(e).sub(i))===0}function _0(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(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(s+l,a+c),o.set(s-l,a-c),[r,o]}function L0(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function R0(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return df(t,i,e)>Math.PI&&(u*=-1),ol(c,s)?p=(s+c)*(r/u-.5)*8/3/(a-l):p=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-p*s,t.y+p*a),n.set(e.x+p*c,e.y-p*l),[o,n]}function pf(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function A0(i,t){return lf(i.position,i.controls[1].position,t.position)&&lf(i.position,t.controls[0].position,t.position)}function B0(i,t,e,r,o=.5){let n=Aa.subVectors(t,i).multiplyScalar(o).add(i),a=Su.subVectors(e,t).multiplyScalar(o).add(t),s=BI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=VI.subVectors(a,n).multiplyScalar(o).add(n),u=zI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=GI.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,r.x,r.y]}function V0(i,t,e=12,r=!0){let o=N0.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=uf(t[l]),u=Aa,p=wi(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof bu||c instanceof cf||c instanceof vu){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),n!==void 0&&jI(n,o))continue;n===void 0&&(n=I0),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function z0(i,t,e,r=12,o=!0){let n=N0.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=uf(t[l]),p=Aa,d=wi(u,r);s.push(d);for(let f=0;f<=d;f++)if(u instanceof bu||u instanceof cf||u instanceof vu){if(u.getPoint(f/d,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=I0:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function ff(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=wi(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=wi(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=wi(i[0].roundedCurveCorner,t)*.5),r}function wi(i,t=12){return i&&i instanceof DI?t*2:i&&(i instanceof vu||i instanceof _I)?1:i&&i instanceof RI?t*i.points.length:t}function G0(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=uf(t[a]),l=wi(s,e),c=Aa;for(let u=0;u<=l;u++)if(s instanceof bu||s instanceof cf||s instanceof vu){if(s.getPoint(u/l,c),o!==void 0&&FI(o,c,rl))continue;o===void 0&&(o=Su),o.copy(c),i.push(c.x,c.y),n++}}return ol(i[0],i[i.length-2],rl)&&ol(i[1],i[i.length-1],rl)&&(i.pop(),i.pop()),r&&n>1&&!(ol(i[n-1],i[1],rl)&&ol(i[n-2],i[0],rl))&&(i.push(i[0],i[1]),n++),i}var yf=new Uo,HI=new Uo,WI=new Uo,qI=new Uo,$I=new Uo,XI=new Uo,Ue=class extends F0{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new UI(new kI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=hf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ue;return n.isClosed=e.isClosed,n.points=e.points.map(a=>jr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>Ue.createFromState(a)),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 a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=yf.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=hf.generateUUID()){let n;e instanceof Uo?n=e:n=new Uo(e,r);let a=new jr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return V0(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ff(this.points,e,!1),this.roundedCurveDivisions=ff(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return z0(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),G0(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,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=wi(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(pf(n,a)){let p=n.position.distanceTo(a.position);return n.position.distanceTo(yf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){pf(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(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&D0(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),b=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(b,v),O=1-w/m,S=w/y,T=p.getPointAt(O,yf),M=d.getPointAt(S,HI);this._subSplitCurve(p,f,O,T,void 0),this._subSplitCurve(d,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=df(T,a.position,M)/2,N=Math.tan(D)*T.distanceTo(a.position),[I,E]=_0(T,M,N,WI,qI),_=L0(I,E,a.position),[L,V]=R0(_,T,M,N,$I,XI);g=new wu(T.clone(),L.clone(),V.clone(),M.clone())}else g=new j0(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof mf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=B0(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new Ue(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],p=e.points[n+5],d=e.points[n+6],f=new jr(hf.generateUUID(),new Uo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ue;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof wu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof j0&&(a[l]=E0(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],f=l>0?a[l-1]:null,h;d instanceof wu?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof mf&&(h=this.createPoint(d.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],p=!1;return u instanceof wu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof mf&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=n(e.curves),e instanceof F0&&(this.shapeHoles=e.holes.map(a=>{let s=new Ue;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var xf=Math.PI*2;function gf({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function YI(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),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function U0(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 KI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(n,2),d=Math.pow(a,2),f=Math.pow(s,2),h=u*p-u*f-p*d;h<0&&(h=0),h/=u*f+p*d,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,b=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=U0(1,0,w,O),g=U0(w,O,S,T);return!c&&g>0&&(g-=xf),c&&g<0&&(g+=xf),{centerx:b,centery:v,ang1:M,ang2:g}}function k0({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let d=KI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(xf/4);Math.abs(1-b)<1e-7&&(b=1);let v=Math.max(Math.ceil(b),1);h/=v;for(let w=0;w<v;w++)l.push(YI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=gf(w[0],o,n,m,y),{x:T,y:M}=gf(w[1],o,n,m,y),{x:g,y:D}=gf(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as Au,BufferGeometry as s3}from"three";var je;(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"})(je||(je={}));var lt;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(lt||(lt={}));function Pe(i,t){if(!i)throw t||"Assertion Failed!"}var ve=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){Pe(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){Pe(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){Pe(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){Pe(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 a,s,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)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,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)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),il=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}(),Pu=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}(),Ma=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}(),H0=function(){function i(){var t=new Ma,e=new il,r=new Pu(0),o=new Pu(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 Pu(0),r=new Pu(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;Pe(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 a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;Pe(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 a=e;do a.Lface=o,a=a.Lnext;while(a!==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,a=t.next;a.prev=n,n.next=a},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,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Ma,e=new Ma,r=new il,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 Ma;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new il;this.makeFace_(a,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 il;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 Ma;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 a=new il;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),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);a=t.prev,s=t.next,s.prev=a,a.next=s},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,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){Pe(o.prev===n),l=o.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Pe(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Pe(a.prev===s),l=a.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Pe(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),W0=function(){function i(){this.handle=null}return i}(),q0=function(){function i(){this.key=null,this.node=0}return i}(),QI=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 W0,this.handles[r]=new q0;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,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,Pe(a<=this.max),n=e[a].handle,a>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=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===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=a}},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 W0;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new q0}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;Pe(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}(),bf=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}(),$0=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),ZI=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new $0,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 $0;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}(),JI=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,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){Pe(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 bf;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 je.ODD:return(e&1)!==0;case je.NONZERO:return e!==0;case je.POSITIVE:return e>0;case je.NEGATIVE:return e<0;case je.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,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,p=!0;c=r;do Pe(ve.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,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.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(ve.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,a;if(Pe(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,p,d=new Ma,f,h;if(Pe(!ve.vertEq(c,l)),Pe(ve.edgeSign(l,t.event,a)<=0),Pe(ve.edgeSign(c,t.event,s)>=0),Pe(a!==t.event&&s!==t.event),Pe(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,d),Pe(Math.min(a.t,l.t)<=d.t),Pe(d.t<=Math.max(s.t,c.t)),Pe(Math.min(c.s,l.s)<=d.s),Pe(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,d)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,d)<=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),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,d)>=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),ve.edgeSign(c,t.event,d)<=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=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,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,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,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,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){Pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.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}Pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(Pe(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new bf;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.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);Pe(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new bf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,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 ZI(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,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++r===1)),Pe(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,ve.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 QI(n,ve.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,Pe(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||!ve.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}(),e3=function(){function i(){this.mesh=new H0,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=je.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,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)n=e.coords[b],n<c[b]&&(c[b]=n,h[b]=e),n>l[b]&&(l[b]=n,f[b]=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(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.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 a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);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(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.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&&(ve.edgeGoesRight(r.Lprev)||ve.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,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===lt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[d++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1;if(e===lt.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[d++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new H0),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,a){if(t===void 0&&(t=je.ODD),e===void 0&&(e=lt.POLYGONS),a===void 0&&(a=!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_(),JI.computeInterior(this,a);var s=this.mesh;return e===lt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===lt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function Ur(i){var t=i.windingRule,e=t===void 0?je.ODD:t,r=i.elementType,o=r===void 0?lt.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,p=i.contours,d=p===void 0?[]:p,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new e3;i.edgeCreateCallback&&(b.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(b.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)b.addContour(l||2,d[v]);return b.tesselate(e,o,a,l,u,h),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:y?b.mesh:void 0}}}var Tq=je.ODD,Cq=je.NONZERO,Aq=je.POSITIVE,Mq=je.NEGATIVE,Iq=je.ABS_GEQ_TWO,Nq=lt.POLYGONS,Eq=lt.CONNECTED_POLYGONS,Dq=lt.BOUNDARY_CONTOURS;import{Box2 as i3,BufferAttribute as Cu,BufferGeometry as n3,Vector2 as a3}from"three";var Ou=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*Ou.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*Ou.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,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)}},nl=Ou;nl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var al=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function vf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let p=new al([],(v,w)=>w.max-v.max),d=r3(i),f=new Tu(o+l/2,n+c/2,0,i);f.d>d.d&&(d=f);let h=2;function m(v,w,O){let S=new Tu(v,w,O,i);if(h++,S.max>d.d+e&&p.push(S),S.d>d.d&&(d=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),d.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;p.length;){let{max:v,x:w,y:O,h:S}=p.pop();if(v-d.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
|
|
3
|
+
best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Tu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=t3(i,t,r),this.max=this.d+this.h*Math.SQRT2}function t3(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,o3(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function r3(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,r+=(c[1]+u[1])*p,t+=p*3}let n=new Tu(e/t,r/t,0,i);return t===0||n.d<0?new Tu(o[0][0],o[0][1],0,i):n}function o3(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var sl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},wf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Pf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Sf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),Pi=class extends n3{constructor(e,r,o=0,n=12,a=3,s=je.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let E=I.extractShapePointsToFlatArray([],n),_=[];for(let L=E.length-1;L>=1;L-=2){let V=E[L-1],U=E[L-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let E=u[I],_=[];for(let L=0;L<E.length;L+=2)_.push([E[L],E[L+1]]);p.push(_)}let f;e.isText?f=new i3().setFromPoints(e.points.map(E=>E.position)).getSize(new a3).length()*.1:p[0].length===0?f=o:o>0?f=vf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Ur({windingRule:s,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=sl}let m;try{m=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=wf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let E=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(E+_)}for(let I=0;I<m.vertexIndices.length;I++){let E=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(E+_)}for(let I=0;I<m.vertices.length;I++){let E=m.vertices[I];h.vertices.push(E)}}let b=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,E=h.vertexCount;I<E;I++){let _=I*2,L=h.vertices[_+0],V=h.vertices[_+1];L<b&&(b=L),L>v&&(v=L),V<w&&(w=V),V>O&&(O=V)}this._minX=b,this._minY=w,this._width=v-b,this._height=O-w,this._buffer=new nl(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let E=I>=y,_=I*2,L=h.elements[_+0],V=h.elements[_+1],U=L+V,B={start:L,count:V,normals:[],continuous:[],concave:[]},q=L,j=U-1,F=L+1,H=this._shape.roundedCurves.length;do{let re=q-L,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let xe=h.vertexIndices[q];if(Array.isArray(xe))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let De=C===1?0:1,ze=this._shape.roundedCurves[ye].getTangent(C),Le=this._shape.roundedCurves[ne].getTangent(De);B.continuous[re]=ze.dot(Le)>.95}}E&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==L+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(L*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(L*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],xe=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,De=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&E){let ze=Math.atan2(C,ye),Le=Math.atan2(De,ne);Le>ze&&(Le-=Math.PI*2);let Oe=Le-ze;if(B.continuous[ae]||E){let wt=ze+Oe/2,Ie=Math.cos(wt)*Z,vt=Math.sin(wt)*Z;Q[2*ie+0]=he+Ie*(E?-1:1),Q[2*ie+1]=xe+vt*(E?-1:1),le[ie]=ae,ie++}else{let wt=Math.max(1,Math.floor(n/4*Math.abs(Oe)/Math.PI));for(let Ie=0;Ie<=wt;Ie++){let vt=ze+Oe*(Ie/wt),Pt=Math.cos(vt)*Z,qi=Math.sin(vt)*Z;Q[2*ie+0]=he+Pt,Q[2*ie+1]=xe+qi,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=xe+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=xe,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=xe+De,le[ie]=ae,de[ae]=ie,ie++}let ce=Ur({windingRule:je.POSITIVE,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],xe=le[(fe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=Sf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=Sf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ne,De,ze=!1;do{fe=(le||de)/de,ie=Sf(le,V);let Le=te(K,ce,ie),Oe=te(Z,ae,ie),wt=ze;if(ze=!1,Le&&!Oe){for(let Ie=0;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;ze=!0}else if(!Le&&Oe)for(let Ie=0;Ie<Oe;Ie++)De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(C.topN,ye.topP,De.topP),l===!1&&S.push(ye.bottomP,C.bottomN,De.bottomP),C=De;else if(Le&&Oe)if(ne=this._buildBevelVert(B,K,ce,0,fe),De=this._buildBevelVert(B,Z,ae,0,fe),wt?(S.push(ye.topN,De.topP,C.topN),S.push(ye.topN,ne.topP,De.topP),l===!1&&(S.push(De.bottomP,ye.bottomN,C.bottomN),S.push(De.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP))),ye=ne,C=De,Le===Oe)for(let Ie=1;Ie<Le;Ie++)ne=this._buildBevelVert(B,K,(ce+Ie)%Q,Ie/(Le-1),fe),De=this._buildBevelVert(B,Z,(ae+Ie)%$,Ie/(Oe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,De.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,De.bottomP)),ye=ne,C=De;else if(Le>Oe){let Ie=Le/Oe,vt=0;for(let Pt=1;Pt<Le;Pt++)ne=this._buildBevelVert(B,K,(ce+Pt)%Q,Pt/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,Pt>(vt+1)*Ie&&(vt++,De=this._buildBevelVert(B,Z,(ae+vt)%$,vt/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De)}else{let Ie=Oe/Le,vt=0;for(let Pt=1;Pt<Oe;Pt++)De=this._buildBevelVert(B,Z,(ae+Pt)%$,Pt/(Oe-1),fe),S.push(C.topN,ne.topP,De.topP),l===!1&&S.push(ne.bottomP,C.bottomN,De.bottomP),C=De,Pt>(vt+1)*Ie&&(vt++,ne=this._buildBevelVert(B,K,(ce+vt)%Q,vt/(Le-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+Le)%Q,ae=(ae+Oe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),E){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(E){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!E){let re=W[W.length-1],K;try{K=Ur({windingRule:W.length>1?je.POSITIVE:je.ODD,elementType:lt.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=Pf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new Cu(Uint32Array.from(S),1),g=new Cu(this._buffer.positions,3),D=new Cu(this._buffer.normals,3),N=new Cu(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,N.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",N),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,p,d,f;l!==c?(p=l,u=c,f=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,b=u*2,v=p*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[b+0],D=e.normals[b+1],N=e.normals[v+0],I=e.normals[v+1];if(f){let U=N-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let E=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=E*3,L=E*2,V={i:o,fi:u,topP:E+0,topN:E+0,bottomP:E+1,bottomN:E+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T),d||(this.forPathBevel?(E+=1,_+=3,L+=2):(E+=2,_+=6,L+=4),V.topP=E+0,V.bottomP=E+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=T,this._buffer.uvs[L+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=M,this._buffer.uvs[L+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new Pi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var Ia=class extends s3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=je.ODD;this.elementType=lt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,b=n[y+0],v=n[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=b,p=v,!l&&!c)break}if(!l&&!c)try{s=Ur({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=sl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Au(new Float32Array(d*3),3),this._normalAttribute=new Au(new Float32Array(d*3),3),this._uvAttribute=new Au(new Float32Array(d*2),2),this._indexAttribute=new Au(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>b&&(b=g)}let v=m-h,w=b-y;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,N=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,N)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ia(this._shape,this._curveSegments);return e.userData=No(this.userData),e}};var Na=class extends Pi{constructor(e,r,o=0,n=12,a=3,s=je.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Na(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=No(this.userData),e}};var tr=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:je.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ue?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ue(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new Ue(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ia(i.shape,o,{windingRule:a}):s=new Na(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as l3,Float32BufferAttribute as c3,MathUtils as Of,Vector2 as Y0}from"three";var K0=Math.PI*2,Da=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=Of.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,p=e*.5,d=u3(c,u,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new l3,f.setAttribute("position",new c3([],3))):f=tr.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function u3(i,t,e,r,o,n){if(r>=K0)return o>30||o%4===0?(p3(i,t,e,n),Math.round(o/4)):X0(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=k0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?d3(i,a.x,a.y,c,o,t,e,n):X0(i,r,o,t,e,n)}function d3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Ea(t,e));for(let c=0,u=r.length;c<u;c++){let p=r[c],d=i.points[c],f=Ea(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),i.addPoint(f)}return s>0?Q0(i,n,a,s):i.addPoint(Ea(0,0)),l}function X0(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Ea(c,u))}return t<K0?n>0?Q0(i,r,o,n):i.addPoint(Ea(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Z0(i,r,o,n)),1}function p3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(Mu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Mu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(Mu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Mu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&Z0(i,t,e,r)}function Ea(i,t){return new jr(Of.generateUUID(),new Y0(i,t))}function Mu(i,t,e,r,o,n){let a=Ea(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function Q0(i,t,e,r){J0(i,t,e,r).forEach(n=>i.addPoint(n))}function Z0(i,t,e,r){let o=J0(i,t,e,r),n=new Ue;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function J0(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new Y0(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=Of.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as f3,Float32BufferAttribute as Tf,Uint32BufferAttribute as h3,Vector3 as eb}from"three";var tb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,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:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=i.parameters,d=new ll(!1,t,e,r,o,n,a,s,l,c,u,p);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},Cf=new h3([0,0,0],1),ll=class extends f3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=t&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new eb,m=new eb,y=h(),b=h(),v=h(),w,O,S,T,M,g,D,N,I=h(),E=h(),_=h(),L=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,de=0,le=2,ie=d*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,xe]=[3,3,2].map(nt=>Array(me*nt).fill(0)),ye=[],C=n-l;function ne(nt,Qe){let Dr=Math.PI/2;g=Qe*ee,N=2*Math.PI*(g%F)/F+Dr,g+=te,D=Math.sin(N)*C,M=Math.cos(N)*C,t?nt.set(M,D,g):nt.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let De=m.distanceTo(y),ze=f?0:$+Q,Le=De*H+2*ze,Oe=Q,wt=Le-ze;for(let nt=0;nt<=H;nt++){ne(b,nt),q.subVectors(b,I).normalize(),I.copy(b),U.copy(b).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Qe=nt===0,Dr=nt===H,qd=Qe?3*Math.PI/2:K,$d=Qe?Oe:wt,Hl=Qe?Y:ae,$i=Qe?0:me-Y,dt=q.clone().multiplyScalar(Qe?-$:$).add(b),Xd=q.clone().multiplyScalar(Qe?-1:1).normalize();for(let gr=0;gr<Y;gr++){let Es=gr*re;if(E.addVectors(m.copy(U).multiplyScalar(l*Math.cos(Es)),y.copy(B).multiplyScalar(l*Math.sin(Es))),_.copy(E).normalize(),Qe||Dr){f||(de=$i+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=dt.getComponent(Wt),he[de*3+Wt]=Xd.getComponent(Wt)}),xe[de*2]=+Dr,xe[de*2+1]=gr/u),y.copy(_).multiplyScalar(Q),v.addVectors(b,y);for(let Wt=0;Wt<d;Wt++){let Xi=Wt*K+qd;L.addVectors(m.copy(q).multiplyScalar($*Math.sin(Xi)),y.copy(_).multiplyScalar($*Math.cos(Xi))),V.copy(L).normalize(),y.addVectors(v,L),L.normalize(),de=Hl+Wt*Y+gr,[0,1,2].forEach(Nn=>{fe[de*3+Nn]=y.getComponent(Nn),he[de*3+Nn]=V.getComponent(Nn)});let Wl=+Qe+Math.sin(Xi);xe[de*2]=($d+$*Wl)/Le,xe[de*2+1]=gr/u}}y.addVectors(b,E),de=ce+nt*Y+gr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=y.getComponent(Wt),he[de*3+Wt]=_.getComponent(Wt)}),xe[de*2]=(ze+nt*De)/Le,xe[de*2+1]=gr/u}}let Ie=W+2*d+le,vt=1,[Pt,qi]=[+f,Ie-1];for(let nt=Pt;nt<=qi-1;nt++){let Qe=f&&nt===qi-1;for(let Dr=0;Dr<Y-1;Dr++)w=nt*Y+Dr,O=w+1,S=(Qe?Dr:w)+Y,T=(Qe?Dr+1:O)+Y,nt===0?ye.push(O,T,S):nt===Ie-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new Tf(fe,3)),this.setAttribute("normal",new Tf(he,3)),this.setAttribute("uv",new Tf(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,p=u===e;for(let d=0;d<t.radialSegments;d++)n=u*r+d,a=n+1,s=(p?d:n)+r,l=(p?d+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Cf.array=o,Cf.count=o.length,Cf}};import{IcosahedronGeometry as m3}from"three";var rb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new cl(t*.5,n,a):new m3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},cl=class extends Si{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],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new cl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as y3,Shape as g3}from"three";var ob=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new g3;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 y3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as db,BufferGeometryLoader as I3,Vector3 as N3,BoxGeometry as pb}from"three";import{BufferGeometry as T3,Vector2 as Nf,Vector3 as ub}from"three";import{Box3 as x3,BufferAttribute as ul,BufferGeometry as ib,Color as If,EventDispatcher as b3,Float32BufferAttribute as _a,Matrix3 as nb,Matrix4 as cb,MathUtils as v3,Object3D as S3,Sphere as w3,Vector2 as fr,Vector3 as Gt,Vector4 as P3}from"three";var uo=new cb,Af=new S3,Iu=new Gt,Oi=class extends b3{constructor(){super(),this.uuid=v3.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new nb().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return uo.makeRotationX(t),this.applyMatrix4(uo),this}rotateY(t){return uo.makeRotationY(t),this.applyMatrix4(uo),this}rotateZ(t){return uo.makeRotationZ(t),this.applyMatrix4(uo),this}translate(t,e,r){return uo.makeTranslation(t,e,r),this.applyMatrix4(uo),this}scale(t,e,r){return uo.makeScale(t,e,r),this.applyMatrix4(uo),this}lookAt(t){return Af.lookAt(t),Af.updateMatrix(),this.applyMatrix4(Af.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new Gt().fromBufferAttribute(n,d)),s!==void 0&&e.colors.push(new If().fromBufferAttribute(s,d));function u(d,f,h,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[h].clone()],b=a===void 0?[]:[new Gt().fromBufferAttribute(a,d),new Gt().fromBufferAttribute(a,f),new Gt().fromBufferAttribute(a,h)],v=new La(d,f,h,b,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new fr().fromBufferAttribute(l,d),new fr().fromBufferAttribute(l,f),new fr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new fr().fromBufferAttribute(c,d),new fr().fromBufferAttribute(c,f),new fr().fromBufferAttribute(c,h)])}let p=t.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],h=f.start,m=f.count;for(let y=h,b=h+m;y<b;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)u(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Iu).negate(),this.translate(Iu.x,Iu.y,Iu.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cb;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Gt,e=new Gt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Gt;if(t){let r=new Gt,o=new Gt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Oi;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Gt,u={a:new Gt,b:new Gt,c:new Gt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new x3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new w3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,p=t.colors;e!==void 0&&(o=new nb().getNormalMatrix(e));for(let d=0,f=s.length;d<f;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,f=p.length;d<f;d++)u.push(p[d].clone());for(let d=0,f=c.length;d<f;d++){let h=c[d],m,y,b=h.vertexNormals,v=h.vertexColors,w=new La(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=b.length;O<S;O++)m=b[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++)v.push(b[w].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Gt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,b),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(p(m.normal)),O){let g=m.vertexNormals;r.push(p(g[0]),p(g[1]),p(g[2]))}if(S&&r.push(d(m.color)),T){let g=m.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function d(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Oi().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++){let S=b[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,f=n.length;d<f;d++){let h={};if(h.name=n[d].name,n[d].vertices!==void 0){h.vertices=[];for(let m=0,y=n[d].vertices.length;m<y;m++)h.vertices.push(n[d].vertices[m].clone())}if(n[d].normals!==void 0){h.normals=[];for(let m=0,y=n[d].normals.length;m<y;m++)h.normals.push(n[d].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let d=0,f=a.length;d<f;d++){let h={};if(a[d].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let b=a[d].vertexNormals[m],v={};v.a=b.a.clone(),v.b=b.b.clone(),v.c=b.c.clone(),h.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)h.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=t.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=t.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Mf().fromGeometry(this),e=new ib,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Nu.call(new ul(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Nu.call(new ul(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",ab.call(new ul(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",sb.call(new ul(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",sb.call(new ul(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new _a(c.data.length*3,3);u.name=c.name,n.push(Nu.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new _a(t.skinIndices.length*4,4);e.setAttribute("skinIndex",lb.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new _a(t.skinWeights.length*4,4);e.setAttribute("skinWeight",lb.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new ib,r=t.geometry;if(t.isPoints||t.isLine){let o=new _a(r.vertices.length*3,3),n=new _a(r.colors.length*3,3);if(e.setAttribute("position",Nu.call(o,r.vertices)),e.setAttribute("color",ab.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new _a(r.lineDistances.length,1);e.setAttribute("lineDistance",O3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Oi.prototype.isGeometry=!0;var Mf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let b=0;b<l;b++)c[b]={name:s[b].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,p=u.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:u[b].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let v=e[b];this.vertices.push(r[v.a],r[v.b],r[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][b];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new fr,new fr,new fr))}if(a===!0){let S=o[1][b];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new fr,new fr,new fr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[b];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},La=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new If,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function O3(i){return this.array.set(i),this}function ab(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new If),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function sb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new fr),t[e++]=n.x,t[e++]=n.y}return this}function Nu(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new Gt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function lb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new P3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var C3=["a","b","c"];function A3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ef(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Df(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function M3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Df(a.a,a.b,i,r,a,e),Df(a.b,a.c,i,r,a,e),Df(a.c,a.a,i,r,a,e)}function Eu(i,t,e,r,o){i.push(new La(t,e,r,void 0,void 0,o))}function Ra(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Du(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var _u=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof T3?t=new Oi().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 ub,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;M3(l,c,d,f);let h=[],m,y,b,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new ub,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),b.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[A3(v,C3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),b.add(e),y.newEdge=h.length,h.push(b)}let T,M,g,D,N,I,E,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],N=d[o].edges,r=N.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),E=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=N[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),E.add(e),_.push(E)}let L=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Nf,re=new Nf,K=new Nf;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Ef(v.a,v.b,f).newEdge)+V,B=Number(Ef(v.b,v.c,f).newEdge)+V,q=Number(Ef(v.c,v.a,f).newEdge)+V,Eu(j,U,B,q,v.materialIndex),Eu(j,v.a,U,q,v.materialIndex),Eu(j,v.b,B,U,v.materialIndex),Eu(j,v.c,q,B,v.materialIndex),p&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Ra(W.x,ee.x),Ra(W.y,ee.y)),re.set(Ra(ee.x,te.x),Ra(ee.y,te.y)),K.set(Ra(W.x,te.x),Ra(W.y,te.y)),Du(F,Y,re,K),Du(F,W,Y,K),Du(F,ee,re,Y),Du(F,te,K,re));t.vertices=L,t.faces=j,p&&(t.faceVertexUvs[0]=F)}};var Mt=new N3,fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new db().copy(new pb(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Mt),r={width:Mt.x,height:Mt.y,depth:Mt.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new db().copy(new pb(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Mt)):Mt.set(a.width,a.height,a.depth),(t!==Mt.x||e!==Mt.y||r!==Mt.z)&&n.scale(Mt.x===0?1:t/Mt.x,Mt.y===0?1:e/Mt.y,Mt.z===0?1:r/Mt.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new _u(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new I3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Mt);let a=100/Mt.x;Object.assign(n.parameters,{width:100,height:Mt.y*a,depth:Mt.z*a}),t(this.build(n))})}};var Lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,p=0,d=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,b=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=tr.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as E3,Float32BufferAttribute as _f,Vector2 as po,Vector3 as _t}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new Rf(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function dl(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Lf(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function D3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Rf=class extends E3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,b=(r-2)*Math.PI/r,v=Math.PI-b,w=new _t(0,-f,0),O=new _t(0,f,0),S=new po(t,-f),T=new po(m,-f),M=new po(0,O.y).sub(T),g=new po(0,O.y).sub(S),D=new po(M.y,-M.x).normalize(),N=new po(g.y,-g.x).normalize(),E=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,E);let _;{let F=new _t(D.x,D.y,0),H=new _t(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let L=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new _t;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],W=S.clone(),ee=L/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new po(Math.sin(Y),Math.cos(Y));dl(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new _t,H=new _t,W=new _t,ee=new _t,te=new _t,Y=new _t;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new po(Math.sin(K),Math.cos(K)),de=new po(Math.sin(Z),Math.cos(Z)),le=new po(Math.sin(Q),Math.cos(Q));dl(S,$,H),dl(S,le,W),dl(D,de,F),Lf(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),Lf(H,O,W,V,L,te),c.push(te.x,te.y,te.z),Lf(W,H,O,L,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ie=d++,ce=d++,ae=d++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new _t;dl(N,le,he);let xe=Y.clone().add(ee).multiplyScalar(.5);xe=D3(xe,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(xe,ye,he,_,ee.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new _t(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}B.concat(fe);{let he=M.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new _t,ne=[];for(let ze=0;ze<s;ze++){let Le=[],Oe=Math.PI/2-xe*ze/s,wt=Math.cos(Oe),Ie=Math.sin(Oe),vt=Z;for(let Pt=0;Pt<=ze;Pt++){let qi=Math.cos(vt),nt=Math.sin(vt);F.x=wt*nt,F.y=Ie,F.z=wt*qi,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),Le.push(d++),vt+=Math.PI*2/ze/r}ne.push(Le)}fe.reverse(),ne.push(fe);let De=ne.length-1;for(let ze=0;ze<De;ze++){let Le=ne[ze],Oe=ne[ze+1],wt=Le.length-1;l.push(Oe[1],Le[0],Oe[0]);for(let Ie=1;Ie<=wt;Ie++)l.push(Le[Ie],Le[Ie-1],Oe[Ie]),l.push(Oe[Ie+1],Le[Ie],Oe[Ie])}}}}}this.setIndex(l),this.setAttribute("position",new _f(c,3)),this.setAttribute("normal",new _f(u,3)),this.setAttribute("uv",new _f(p,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new _t,Q=new _t,$=1,de=d,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new _t,Z=new _t;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),xe=(te+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),de.push(d++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var Ba=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=p.x,y=p.y,b=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,b)),t.addPoint(t.createPoint(h,b)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=tr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as _3,Float32BufferAttribute as L3,MathUtils as mb,SphereGeometry as R3}from"three";var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=mb.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new _3,u.setAttribute("position",new L3([],3))):u=new R3(.5*t,o,n,a,s,l,c*mb.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as B3}from"three";var gb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new B3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as V3,Float32BufferAttribute as Bf,Vector3 as z3}from"three";var xb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Vf(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Vf=class extends V3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new z3(Z,Q,$),h=f(),m=f(),[y,b,v]=[e/2,t/2,r/2],w=-b,O=+b,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(M.z=Math.min(N,I),M.z==I&&(M.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let E=Math.min(h.length(),m.length())*n/100,_=E*Math.tan(o/2),L=E/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(L).add(T);h.set(0,g(o,!0),D(o,!0)),p.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),p.push([h.clone(),m.clone()])}p.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[q-1][0].distanceTo(p[q][0]),H=j+B*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*B)/H);p[q].push(0);let[W,ee,te]=p[0],Y,re,K;for(let Z=1;Z<p.length;Z++)[Y,re,K]=p[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Bf(s,3)),this.setAttribute("normal",new Bf(l,3)),this.setAttribute("uv",new Bf(c,2))}};var Ru=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,p=t*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*r/100,v=d*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*p,M=h+Math.cos(S)*d;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*p,T=h+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*b,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=tr.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as G3}from"three";var bb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new G3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as F3,Float32BufferAttribute as j3,MathUtils as U3}from"three";var vb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=k3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function k3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let p=U3.clamp(o/360,0,1);if(p===0){let d=new F3;return d.setAttribute("position",new j3([],3)),d}return p===1&&(c=0),new ll(!0,i,t,e,r,p,n,a,s,l,c,u)}import{TorusKnotGeometry as H3}from"three";var Sb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new H3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var wb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ue?i.shape:new Ue,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=tr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as Cb,Vector3 as Lt,Matrix3 as oN,Matrix4 as cn,BufferGeometry as Ab,BufferAttribute as Va,MathUtils as Vu}from"three";function Pb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function W3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function q3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function $3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function X3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function Y3(i,t,e){return(i<<16)+(t<<8)+e}function K3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function Q3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var Ob={parseRgba:W3,hsvToRgb:q3,rgbToHsv:$3,hexToRgb:X3,rgbToHex:Y3,rgbToHexString:K3,hexStringToRgb:Q3};function ko(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Bu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=ko();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await rN(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Oc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Oc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Je.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Je.zoom(this.result,t):this.result;if(tN(e))return Object.entries(e);if(eN(e))return e.map((r,o)=>[o.toString(),r]);throw J3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function Z3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function J3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function eN(i){return Array.isArray(i)}function tN(i){return typeof i=="object"&&i!==null}async function rN(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=pl(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:pl(JSON.parse(i.integration.behavior),t);a=`{
|
|
4
4
|
"model": "${i.integration.model}",
|
|
5
5
|
"messages": [${i.integration.useBehavior?`
|
|
6
6
|
{
|
|
@@ -12,20 +12,20 @@ best distance: ${p.d}`);let x=[p.x,p.y];return x.distance=p.d,x.distance}functio
|
|
|
12
12
|
"content": "${l}"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
15
|
-
}`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=
|
|
16
|
-
`:"")+ll(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return vb(o,t)}}return""}).join("");var J3=new sn,eE=new sn;function tE(i,t,e){let r=[new _t,new _t,new _t],o=[new _t,new _t,new _t];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Du.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new sn().makeBasis(r[0],r[1],r[2])}var Pb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Ia.create({parameters:Cp}).userData.shape;return{path:i.path??ua.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...kc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new _f(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new wb,{userData:{...i,type:"PathGeometry"}})}},_f=class extends wb{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!xb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],d=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),d.push(r[F].clone())}let p=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),d[j]=tE(d[j],d[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,p(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,p(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),d[j].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:x,bevelSides:v}=this.inputs.parameters.extrusion,w=x>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new wi(this.inputs.shapeData,2*x,x,O,v,void 0,!0),g=D.getAttribute("position").count);let E=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=E,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,E=I});let N=I*c,_,R=0;if(this._isOpenEnded()&&w==="flat"){try{_=jr({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=xf}R=_.vertexCount}let V=N+2*R+g*2,U=N+2*R,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,d,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,q,B,d[0],u[0],!1),this._closeEnd(_,N+R,q,B,d[d.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new Ra(B.positions,3)),this.setAttribute("normal",new Ra(B.normals,3)),this.setAttribute("uv",new Ra(B.uvs,2)),this.setIndex(q);let H=J3;H.copy(d[d.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(d[0]).setPosition(u[0]).multiply(eE.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Ra(B.positions,3)),this.setAttribute("normal",new Ra(B.normals,3)),this.setAttribute("uv",new Ra(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=uu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new _t,s=new _t,l=new _t,c=new _t,u=new _t(0,1,0);for(let y=0;y<o;y++){let x=e[y],v;y===0?v=n?e[e.length-2]:x.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:x.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=x.clone().sub(v).normalize(),S=w.clone().sub(x).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new sn().makeBasis(M,g,T);r.push(D)}let d=n?s:l,p=n?a:new _t(0,1,0),f=d.clone().cross(c).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let x=new sn().makeRotationZ(h*y/r.length);r[y].multiply(x)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new sn,d=new sn;return e.forEach((p,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Du.lerp(a,a+s,h)*Du.DEG2RAD);let m=Du.lerp(l,c,h);d.makeScale(m,m,m),p.multiply(u).multiply(d)}),e}_computeShapePoints(e=12,r=Fe.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),x=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];x.push(w,O)}return x}),s;try{s=jr({windingRule:r,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=ol}let l;try{l=jr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=gf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],x=m%2===0?s.vertexCount:0;s.elements.push(y+x)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],x=s.vertexCount;s.vertexIndices.push(y+x)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let x=m*2,v=s.vertices[x+0],w=s.vertices[x+1];v<u&&(u=v),v>d&&(d=v),w<p&&(p=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,x=m*2,v=s.elements[x+0],w=s.elements[x+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let E=T-v,I=s.vertices[M*2+0],N=s.vertices[M*2+1],_=s.vertices[T*2+0],R=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=R-N,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=R-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[E*2+0]=-H,S.normals[E*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[E]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[E]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[E]=Z.dot(Q)>.95}}y&&(S.normals[E*2+0]*=-1,S.normals[E*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new _t,u=new _t,d=new _t,p=new _t,f=new Sb;o.forEach((m,y)=>{let x=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),d.copy(c).applyMatrix4(m).add(x),e.continuous[w])p.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,d,p,f),v++,!e.continuous[w]||w===0){if(w===0)p.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,v,d,p,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,x=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=x+O,g=x+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new _t(0,0,l?-1:1).applyMatrix4(a),d=new _t,p=new Sb;for(let h=0;h<c;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,d,u,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,x=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,x,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new Z3().getNormalMatrix(e).elements,s,l,c,u,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,x=o*m;y<x;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Ob,BufferGeometry as Rf}from"three";import{mergeBufferGeometries as oE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Tb(){let i=new Rf;return i.setAttribute("position",new Ob(new Float32Array([]),3)),i.setIndex(new Ob(new Uint16Array([]),1)),i}var iE=Tb().attributes,nE=12,aE=1,ln=class extends Rf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,iE),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:d}=e,p=xi.getDisplayedValue(u),f=d===2?p.toUpperCase():d===3?p.toLowerCase():p,h=sE(e,o,f,r),{shapes:m,charWidths:y,charCoords:x}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new je().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>tr.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Fe.NONZERO:Fe.ODD,subdivisions:this.isLowResolution&&s>0?aE:nE}})),T=S.length?oE(S):Tb();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=x,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Pt(new Rf,ln.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function sE(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
|
|
15
|
+
}`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=pl(JSON.parse(i.body),t)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else i.integration?.type==="OpenAI"?r=a:i.method==="POST"&&i.body&&(r=pl(JSON.parse(i.body),t));let s=await fetch(o,{method:n?"GET":i.method,headers:n?void 0:Z3(i),signal:e.signal,body:r});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(i.integration?.type==="OpenAI"){let l=await s.json();return n&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return n&&(l=l.response),l}}var Tb=(i,t)=>{if(typeof i=="string"){let e=t.getVariable(i);if(e)return Tb(e,t)}return bi.isBoolean(i)?bi.getDisplayedValue(i).toLowerCase():bi.getDisplayedValue(i)},pl=(i,t)=>i.map((e,r)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(r>0?`
|
|
16
|
+
`:"")+pl(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return Tb(o,t)}}return""}).join("");var iN=new cn,nN=new cn;function aN(i,t,e){let r=[new Lt,new Lt,new Lt],o=[new Lt,new Lt,new Lt];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Vu.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new cn().makeBasis(r[0],r[1],r[2])}var Mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Da.create({parameters:Ep}).userData.shape;return{path:i.path??fa.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...Xc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new zf(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new Ab,{userData:{...i,type:"PathGeometry"}})}},zf=class extends Ab{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Pb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(r[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=aN(p[j],p[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,d(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:v}=this.inputs.parameters.extrusion,w=b>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new Pi(this.inputs.shapeData,2*b,b,O,v,void 0,!0),g=D.getAttribute("position").count);let N=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,N=I});let E=I*c,_,L=0;if(this._isOpenEnded()&&w==="flat"){try{_=Ur({windingRule:je.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Pf}L=_.vertexCount}let V=E+2*L+g*2,U=E+2*L,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,p,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,E,q,B,p[0],u[0],!1),this._closeEnd(_,E+L,q,B,p[p.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q);let H=iN;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(nN.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Va(B.positions,3)),this.setAttribute("normal",new Va(B.normals,3)),this.setAttribute("uv",new Va(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=mu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new Lt,s=new Lt,l=new Lt,c=new Lt,u=new Lt(0,1,0);for(let y=0;y<o;y++){let b=e[y],v;y===0?v=n?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=b.clone().sub(v).normalize(),S=w.clone().sub(b).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new cn().makeBasis(M,g,T);r.push(D)}let p=n?s:l,d=n?a:new Lt(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return r;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let b=new cn().makeRotationZ(h*y/r.length);r[y].multiply(b)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new cn,p=new cn;return e.forEach((d,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Vu.lerp(a,a+s,h)*Vu.DEG2RAD);let m=Vu.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,r=je.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];b.push(w,O)}return b}),s;try{s=Ur({windingRule:r,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=sl}let l;try{l=Ur({windingRule:je.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=wf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],b=m%2===0?s.vertexCount:0;s.elements.push(y+b)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],b=s.vertexCount;s.vertexIndices.push(y+b)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let b=m*2,v=s.vertices[b+0],w=s.vertices[b+1];v<u&&(u=v),v>p&&(p=v),w<d&&(d=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,v=s.elements[b+0],w=s.elements[b+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let N=T-v,I=s.vertices[M*2+0],E=s.vertices[M*2+1],_=s.vertices[T*2+0],L=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=L-E,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=L-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[N]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[N]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new Lt,u=new Lt,p=new Lt,d=new Lt,f=new Cb;o.forEach((m,y)=>{let b=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[w])d.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,f),v++,!e.continuous[w]||w===0){if(w===0)d.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,b=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=b+O,g=b+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new Lt(0,0,l?-1:1).applyMatrix4(a),p=new Lt,d=new Cb;for(let h=0;h<c;h++){let m=2*h;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,b=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,b,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new oN().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let f=p.array,h=d.array,m=p.itemSize;for(let y=r*m,b=o*m;y<b;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Ib,BufferGeometry as Gf}from"three";import{mergeBufferGeometries as lN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Nb(){let i=new Gf;return i.setAttribute("position",new Ib(new Float32Array([]),3)),i.setIndex(new Ib(new Uint16Array([]),1)),i}var cN=Nb().attributes,uN=12,dN=1,un=class extends Gf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,cN),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:p}=e,d=bi.getDisplayedValue(u),f=p===2?d.toUpperCase():p===3?d.toLowerCase():d,h=pN(e,o,f,r),{shapes:m,charWidths:y,charCoords:b}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new Ue().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>tr.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?je.NONZERO:je.ODD,subdivisions:this.isLowResolution&&s>0?dN:uN}})),T=S.length?lN(S):Nb();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=b,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Ot(new Gf,un.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function pN(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
|
|
17
17
|
`?(n[n.length-1]+=a,a="",s===`
|
|
18
|
-
`&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as Bf,BufferAttribute as Ib,Uint32BufferAttribute as Vf,Float32BufferAttribute as zf,Matrix4 as pE,Vector3 as ul,Sphere as fE,Box3 as hE,BoxGeometry as mE}from"three";var Ab,Ru=new Promise(i=>{Ab=i}),Cb=!1;var _u;function Mb(i){if(Cb)return;if(_u)return _u;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.10.97/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Ab(c),Cb=!0}return _u=t(),_u}import{BufferGeometryLoader as lE}from"three";var cE=["font"];function po(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let d of c)u=u[d];for(o in u){let d=u[o];Pp(d)&&!cE.includes(o)&&(u[o]=t.getVariable(d,[r.uuid,"geometry",...c,o]),Pp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=je.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new lE().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new xt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new ln(n,t);if(n.type==="InputGeometry")return new ln(n,t);if(n.type==="UIGeometry")return _a.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Lf(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=je.createFromState(ca.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Lf(s)}return l}import{Matrix4 as uE}from"three";var dE=new uE;function cl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=dE.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,d=o.length;u<d;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Lu=new hE,La=new ul,Se;Ru.then(i=>{Se=i});var Eb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Nb=new Uint32Array([0,1,2,3]),Db=new Uint8Array([4]),xt=class extends Bf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=pi.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&cl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&cl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(La.fromArray(n));let s=La.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=xt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new mE(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new fE,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Lu.setFromBufferAttribute(r),Lu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Lu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Lu.getSize(La);let n={width:La.x,height:La.y,depth:La.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(Se.free_bvh(r),Se.free_subdivision_surface(r));try{a=xt.allocate(e,n)}catch(u){console.error(u,e),a=xt.allocate({positionWASM:Eb,indexWASM:Nb,verticesPerFaceWASM:Db},n)}if(Se.set_destination_refinement_level(a,0),s=xt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=xt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=xt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:po(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=Uf(n.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:c}=kf(s,u,n,d),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Eb,n=Nb,a=Db);let c=o.length,u=n.length,d=a.length,p=o.length+s.length+l.length,f=n.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,x=Se._malloc(h),v=new Float32Array(Se.HEAPF32.buffer,x,p),w=new Uint32Array(Se.HEAPU32.buffer,x+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new pE().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?Se.alloc_subdivision_surface2(x,c,x+m,u,x+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d,O.elements):Se.alloc_subdivision_surface(x,c,x+m,u,x+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d);return Se._free(x),S}static buildLevel(e,r,o,n,a){let s=a?Se.get_mesh_data2(e,r?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,r?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),d=0,p=Se.HEAPU32[c[d]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+u[d]);d++;let h=Se.HEAPU32[c[d]>>2],m=Se.HEAPF32.subarray(h>>2,(h>>2)+u[d]);d++;let y=Se.HEAPU32[c[d]>>2],x=Se.HEAPU32.subarray(y>>2,(y>>2)+u[d]);d++;let v=Se.HEAPU32[c[d]>>2],w=Se.HEAPU32.subarray(v>>2,(v>>2)+u[d]);if(d++,n===void 0){let O=new Bf;if(O.setIndex(new Vf(w,1)),O.setAttribute("position",new zf(f,3)),O.setAttribute("normal",new zf(m,3)),r){O.setAttribute("faceMap",new Vf(x,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Ib(S,4))}return Se.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],d=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Se.HEAPU32[s[c]>>2],f=Se.HEAPU32.subarray(p>>2,(p>>2)+l[c]);if(r===void 0){let h=new Bf;h.setAttribute("position",new zf(d,3));let m=new Float32Array(d.length);for(let y=0,x=d.length;y<x;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Ib(m,3)),h.setIndex(new Vf(f,1)),Se.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||Se.set_destination_refinement_level(e,r);let a=o?Se.get_topological_data2(e,n?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,n?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,d=Se.HEAPU32[l[u]>>2],p=new Float32Array(Se.HEAPF32.subarray(d>>2,(d>>2)+c[u]));u++;let f=Se.HEAPU32[l[u]>>2],h=new Uint32Array(Se.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var _b=["getX","getY","getZ"];function Uf(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,d="";for(let p=0;p<3;p++)d+=`${~~(i[_b[p]](u)*s)},`;if(d in e)n.push(e[d]);else{for(let p=0;p<3;p++)a.push(i[_b[p]](u));e[d]=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:a,triIndices:l}}var Bu=new ul,Gf=new ul,Ff=new ul,jf=new ul;function kf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let u=0;for(let p=0;p<l.length;p+=2)u+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);i.length=0;let d=0;if(u<0)for(let p=0;p<l.length;p+=2)i.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)i.push(l[p],l[p+1],0),o.push(d++);return n.push(d),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Bu.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Gf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Ff.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),jf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Gf.sub(Bu).normalize(),Ff.sub(Bu).normalize(),jf.sub(Bu).normalize();let l=Gf.cross(Ff).dot(jf);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let d=0,p=0;d<i.length;d+=3,p++)i[d+2]===0&&(l.push(p),u++),i[d+2]===a&&c.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=c[0];c[0]=c[1],c[1]=d}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Pr={};hw(Pr,{calcBoolean:()=>vE,calcBooleanTopological:()=>bE,freeMeshSet:()=>OE,getMeshSet:()=>SE,hasOpenEdges:()=>wE,transformMeshSet:()=>PE});var yE,Rb=new Promise(i=>{yE=i});import{Float32BufferAttribute as Lb,Sphere as gE}from"three";var Be,Ba;Rb.then(i=>Be=i);function xE(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=Uf(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=kf(n,a,i);s=c.length,r=[];for(let u=0,d=0;u<s;u++){r.push(c[u]);for(let p=0;p<c[u];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function Bb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Be._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Be.HEAPU32.buffer,n,t):new Float32Array(Be.HEAPF32.buffer,n,t)).set(i,0),n}function Vb(i){switch(i){case 0:return Be.OP.UNION;case 1:return Be.OP.INTERSECTION;case 2:return Be.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function bE(i,t){Ba===void 0&&(Ba=Be.init_csg());let e=Bb(i),r=Be.csg_calc_topological(Ba,e,i.length,Vb(t));Be._free(e);let o=6,n=Be.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Be.HEAPU32[n[s]>>2],c=new Float32Array(Be.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Be.HEAPU32[n[s]>>2],d=new Uint32Array(Be.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let p=Be.HEAPU32[n[s]>>2],f=new Uint8Array(Be.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Be.free_mesh_data(r),{positions:c,indices:d,verticesPerFace:f}}function vE(i,t,e,r){Ba===void 0&&(Ba=Be.init_csg());let o=Bb(i),n=Be.csg_calc(Ba,o,i.length,r,Vb(t));Be._free(o);let a=5,s=Be.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Be.HEAPU32[s[c]>>2],d=Be.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Be.HEAPU32[s[c]>>2],f=Be.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Lb(d,3)),e.setAttribute("normal",new Lb(f,3));let m=Be.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new gE),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Be.free_mesh_data(n),h}function SE(i,t,e){if(Be===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let x=i.userData;n=x.verticesPerFace.length,r=x.positions,o=Array(x.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<x.verticesPerFace.length;v++){o[O++]=x.verticesPerFace[v];for(let S=0;S<x.verticesPerFace[v];S++)o[O++]=x.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=xE(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=c*Uint32Array.BYTES_PER_ELEMENT,f=Be._malloc(u),h=new Float32Array(Be.HEAPF32.buffer,f,l),m=new Uint32Array(Be.HEAPU32.buffer,f+d,c);h.set(r,0),m.set(o,0);let y=Be.get_csg_mesh(f,a,f+d,s,n);return Be._free(f),y}function wE(i){return Be.has_open_edges(i)}function PE(i,t){Be.transform_csg_mesh(i,t.elements)}function OE(i){Be.free_csg_mesh(i)}var TE={ConeGeometry:xx,CubeGeometry:bx,CylinderGeometry:gx,DodecahedronGeometry:vx,EllipseGeometry:Ia,HelixGeometry:Kx,IcosahedronGeometry:Qx,LatheGeometry:Zx,NonParametricGeometry:lb,PolygonGeometry:Iu,PyramidGeometry:cb,RectangleGeometry:_a,SphereGeometry:db,PlaneGeometry:pb,BackdropGeometry:fb,StarGeometry:Eu,TextFrameGeometry:hb,TorusGeometry:mb,TorusKnotGeometry:yb,TriangleGeometry:gb,PathGeometry:Pb,VectorGeometry:tr},Lf=i=>TE[i.type].create(i);function Va(i){return i!==null&&"booleanOp"in i}var za=class extends Sa(AE){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new CE}updateVisible(e){super.updateVisible(e),this.visible=!Va(this.parent)&&this.visible,Va(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Pr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Va(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof za&&(e.freeBooleanPointer(),Va(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Va(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Va(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Vu=new ME;function dl(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let d=t;d<e;d++){let p=i.getX(d),f=i.getY(d),h=i.getZ(d);p<n&&(n=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>c&&(c=f),h>u&&(u=h)}Vu.min.set(n,a,s),Vu.max.set(l,c,u),Vu.getCenter(r),Vu.getSize(o).multiplyScalar(.5)}var NE=new IE,DE=new EE,Mt=class extends za{constructor(t,e){super(NE,DE),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?dl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as eD,Matrix4 as tD,Sphere as Ev,Vector3 as rD}from"three";import{BufferAttribute as QN,Float32BufferAttribute as Iv,MathUtils as xh,Vector3 as bh}from"three";import{ShaderMaterial as IN}from"three";var Ho=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Ho.uuidContext===null)throw new Error("plz startContext");Ho.uuidContext===Ho.globalContext?this.uuid="_gid"+Ho.uuidContext.nodeContextUuid++:this.uuid="_uid"+Ho.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Ho.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){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}},$e=Ho;$e.globalContext={nodeContextUuid:0},$e.uuidContext=Ho.globalContext;import{CubeReflectionMapping as UE,CubeRefractionMapping as kE,CubeUVReflectionMapping as HE,LinearEncoding as $b,sRGBEncoding as WE}from"three";var pl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Hf=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}},It=new Hf;import{Vector2 as zb}from"three";import{MathUtils as _E}from"three";var ge=class extends $e{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=_E.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),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,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Xe=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var lt=class extends Xe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof zb?e:new zb(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,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Gb}from"three";var Ft=class extends Xe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Gb?e:new Gb(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,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var rr=class extends Xe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ct?e:new Ct(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var RE=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Fb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,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,a){let s,l=0,c=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let u=[];for(;s=Fb.exec(this.src);)u.push(s);for(let d=0;d<u.length;d++){let p=u[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&It.containsKeyword(f)){let y=this.keywords[f];if(!y){let x=It.getKeywordData(f);x.cache&&(y=e.keywords[f]),y=y||It.getKeyword(f,e),x.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+m+c.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&It.contains(m)&&e.include(It.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=RE.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Fb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let d=s[l++];this.inputs.push({name:d,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var LE=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Wf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=LE.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,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,a){return e.format(this.name,this.getType(e),r)}},Ge=Wf;Ge.PI="PI",Ge.PI2="PI2",Ge.RECIPROCAL_PI="RECIPROCAL_PI",Ge.RECIPROCAL_PI2="RECIPROCAL_PI2",Ge.LOG2="LOG2",Ge.EPSILON="EPSILON";var BE=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
19
|
-
)*?)}`,"gim"),
|
|
18
|
+
`&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as jf,BufferAttribute as Lb,Uint32BufferAttribute as Uf,Float32BufferAttribute as kf,Matrix4 as gN,Vector3 as hl,Sphere as xN,Box3 as bN,BoxGeometry as vN}from"three";var Db,Gu=new Promise(i=>{Db=i}),Eb=!1;var zu;function _b(i){if(Eb)return;if(zu)return zu;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.10.99/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Db(c),Eb=!0}return zu=t(),zu}import{BufferGeometryLoader as fN}from"three";var hN=["font"];function fo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let p of c)u=u[p];for(o in u){let p=u[o];Mp(p)&&!hN.includes(o)&&(u[o]=t.getVariable(p,[r.uuid,"geometry",...c,o]),Mp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=Ue.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new fN().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new bt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new un(n,t);if(n.type==="InputGeometry")return new un(n,t);if(n.type==="UIGeometry")return Ba.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Ff(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=Ue.createFromState(pa.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Ff(s)}return l}import{Matrix4 as mN}from"three";var yN=new mN;function fl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=yN.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Fu=new bN,za=new hl,we;Gu.then(i=>{we=i});var Rb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Bb=new Uint32Array([0,1,2,3]),Vb=new Uint8Array([4]),bt=class extends jf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=fi.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&fl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&fl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(za.fromArray(n));let s=za.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=bt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new vN(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new xN,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Fu.setFromBufferAttribute(r),Fu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Fu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Fu.getSize(za);let n={width:za.x,height:za.y,depth:za.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=bt.allocate(e,n)}catch(u){console.error(u,e),a=bt.allocate({positionWASM:Rb,indexWASM:Bb,verticesPerFaceWASM:Vb},n)}if(we.set_destination_refinement_level(a,0),s=bt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=bt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=bt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:fo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=$f(n.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,f=d+e.radialSegments*3;p=[d,f]}return{indices:l,verticesPerFace:c}=Xf(s,u,n,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Rb,n=Bb,a=Vb);let c=o.length,u=n.length,p=a.length,d=o.length+s.length+l.length,f=n.length+a.length,h=d*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,b=we._malloc(h),v=new Float32Array(we.HEAPF32.buffer,b,d),w=new Uint32Array(we.HEAPU32.buffer,b+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new gN().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),S}static buildLevel(e,r,o,n,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=we.HEAPU32[c[p]>>2],f=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let h=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],b=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=we.HEAPU32[c[p]>>2],w=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,n===void 0){let O=new jf;if(O.setIndex(new Uf(w,1)),O.setAttribute("position",new kf(f,3)),O.setAttribute("normal",new kf(m,3)),r){O.setAttribute("faceMap",new Uf(b,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Lb(S,4))}return we.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],p=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=we.HEAPU32[s[c]>>2],f=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(r===void 0){let h=new jf;h.setAttribute("position",new kf(p,3));let m=new Float32Array(p.length);for(let y=0,b=p.length;y<b;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Lb(m,3)),h.setIndex(new Uf(f,1)),we.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(p),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,n?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,n?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=we.HEAPU32[l[u]>>2],d=new Float32Array(we.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:d,indices:h,verticesPerFace:y}}};var zb=["getX","getY","getZ"];function $f(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(i[zb[d]](u)*s)},`;if(p in e)n.push(e[p]);else{for(let d=0;d<3;d++)a.push(i[zb[d]](u));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:a,triIndices:l}}var ju=new hl,Hf=new hl,Wf=new hl,qf=new hl;function Xf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);i.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)i.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)i.push(l[d],l[d+1],0),o.push(p++);return n.push(p),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){ju.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Hf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Wf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),qf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Hf.sub(ju).normalize(),Wf.sub(ju).normalize(),qf.sub(ju).normalize();let l=Hf.cross(Wf).dot(qf);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<i.length;p+=3,d++)i[p+2]===0&&(l.push(d),u++),i[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Or={};bw(Or,{calcBoolean:()=>TN,calcBooleanTopological:()=>ON,freeMeshSet:()=>IN,getMeshSet:()=>CN,hasOpenEdges:()=>AN,transformMeshSet:()=>MN});var SN,Gb=new Promise(i=>{SN=i});import{Float32BufferAttribute as Fb,Sphere as wN}from"three";var Ve,Ga;Gb.then(i=>Ve=i);function PN(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=$f(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Xf(n,a,i);s=c.length,r=[];for(let u=0,p=0;u<s;u++){r.push(c[u]);for(let d=0;d<c[u];d++)r.push(l[p++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function jb(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=Ve._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Ve.HEAPU32.buffer,n,t):new Float32Array(Ve.HEAPF32.buffer,n,t)).set(i,0),n}function Ub(i){switch(i){case 0:return Ve.OP.UNION;case 1:return Ve.OP.INTERSECTION;case 2:return Ve.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function ON(i,t){Ga===void 0&&(Ga=Ve.init_csg());let e=jb(i),r=Ve.csg_calc_topological(Ga,e,i.length,Ub(t));Ve._free(e);let o=6,n=Ve.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Ve.HEAPU32[n[s]>>2],c=new Float32Array(Ve.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ve.HEAPU32[n[s]>>2],p=new Uint32Array(Ve.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ve.HEAPU32[n[s]>>2],f=new Uint8Array(Ve.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ve.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:f}}function TN(i,t,e,r){Ga===void 0&&(Ga=Ve.init_csg());let o=jb(i),n=Ve.csg_calc(Ga,o,i.length,r,Ub(t));Ve._free(o);let a=5,s=Ve.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Ve.HEAPU32[s[c]>>2],p=Ve.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ve.HEAPU32[s[c]>>2],f=Ve.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Fb(p,3)),e.setAttribute("normal",new Fb(f,3));let m=Ve.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new wN),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ve.free_mesh_data(n),h}function CN(i,t,e){if(Ve===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let b=i.userData;n=b.verticesPerFace.length,r=b.positions,o=Array(b.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<b.verticesPerFace.length;v++){o[O++]=b.verticesPerFace[v];for(let S=0;S<b.verticesPerFace[v];S++)o[O++]=b.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=PN(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,f=Ve._malloc(u),h=new Float32Array(Ve.HEAPF32.buffer,f,l),m=new Uint32Array(Ve.HEAPU32.buffer,f+p,c);h.set(r,0),m.set(o,0);let y=Ve.get_csg_mesh(f,a,f+p,s,n);return Ve._free(f),y}function AN(i){return Ve.has_open_edges(i)}function MN(i,t){Ve.transform_csg_mesh(i,t.elements)}function IN(i){Ve.free_csg_mesh(i)}var NN={ConeGeometry:P0,CubeGeometry:O0,CylinderGeometry:w0,DodecahedronGeometry:T0,EllipseGeometry:Da,HelixGeometry:tb,IcosahedronGeometry:rb,LatheGeometry:ob,NonParametricGeometry:fb,PolygonGeometry:Lu,PyramidGeometry:hb,RectangleGeometry:Ba,SphereGeometry:yb,PlaneGeometry:gb,BackdropGeometry:xb,StarGeometry:Ru,TextFrameGeometry:bb,TorusGeometry:vb,TorusKnotGeometry:Sb,TriangleGeometry:wb,PathGeometry:Mb,VectorGeometry:tr},Ff=i=>NN[i.type].create(i);function Fa(i){return i!==null&&"booleanOp"in i}var ja=class extends Oa(DN){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new EN}updateVisible(e){super.updateVisible(e),this.visible=!Fa(this.parent)&&this.visible,Fa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Fa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof ja&&(e.freeBooleanPointer(),Fa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Fa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Uu=new _N;function ml(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=t;p<e;p++){let d=i.getX(p),f=i.getY(p),h=i.getZ(p);d<n&&(n=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Uu.min.set(n,a,s),Uu.max.set(l,c,u),Uu.getCenter(r),Uu.getSize(o).multiplyScalar(.5)}var BN=new LN,VN=new RN,It=class extends ja{constructor(t,e){super(BN,VN),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as aD,Matrix4 as sD,Sphere as Rv,Vector3 as lD}from"three";import{BufferAttribute as oD,Float32BufferAttribute as Lv,MathUtils as Ph,Vector3 as Oh}from"three";import{ShaderMaterial as LE,Texture as RE}from"three";var Ho=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Ho.uuidContext===null)throw new Error("plz startContext");Ho.uuidContext===Ho.globalContext?this.uuid="_gid"+Ho.uuidContext.nodeContextUuid++:this.uuid="_uid"+Ho.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Ho.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){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}},Xe=Ho;Xe.globalContext={nodeContextUuid:0},Xe.uuidContext=Ho.globalContext;import{CubeReflectionMapping as $N,CubeRefractionMapping as XN,CubeUVReflectionMapping as YN,LinearEncoding as Zb,sRGBEncoding as KN}from"three";var yl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Yf=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 Yf;import{Vector2 as kb}from"three";import{MathUtils as zN}from"three";var ge=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=zN.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),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,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Ye=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var ct=class extends Ye{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof kb?e:new kb(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,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Hb}from"three";var Ft=class extends Ye{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Hb?e:new Hb(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,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var rr=class extends Ye{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof At?e:new At(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var GN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Wb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,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,a){let s,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 u=[];for(;s=Wb.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],f=d[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Nt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=Nt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||Nt.getKeyword(f,e),b.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Nt.contains(m)&&e.include(Nt.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=GN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Wb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var FN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Kf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Kf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=FN.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,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,a){return e.format(this.name,this.getType(e),r)}},Fe=Kf;Fe.PI="PI",Fe.PI2="PI2",Fe.RECIPROCAL_PI="RECIPROCAL_PI",Fe.RECIPROCAL_PI2="RECIPROCAL_PI2",Fe.LOG2="LOG2",Fe.EPSILON="EPSILON";var jN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
19
|
+
)*?)}`,"gim"),UN=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ua=class extends ge{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,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=jN.exec(e);if(r){let o=r[2],n;for(;n=UN.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ka=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};Nt.addKeyword("uv",function(){return new ka});Nt.addKeyword("uv2",function(){return new ka(1)});import{LinearEncoding as kN,sRGBEncoding as HN}from"three";var dn=class extends ge{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??dn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case kN:return["Linear"];case HN:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),a=dn.Nodes[this.method],s=e.include(a);if(s===dn.LINEAR_TO_LINEAR)return e.format(o,n,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",n,r)}else return e.format(s+"( "+o+" )",n,r)}fromEncoding(e){let r=dn.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=dn.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Yt=dn;Yt.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
20
20
|
`)),sRGBToLinear:new J(["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(`
|
|
21
21
|
`)),LinearTosRGB:new J(["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(`
|
|
22
|
-
`))},Yt.LINEAR_TO_LINEAR="LinearToLinear",Yt.SRGB_TO_LINEAR="sRGBToLinear",Yt.LINEAR_TO_SRGB="LinearTosRGB";var
|
|
22
|
+
`))},Yt.LINEAR_TO_LINEAR="LinearToLinear",Yt.SRGB_TO_LINEAR="sRGBToLinear",Yt.LINEAR_TO_SRGB="LinearTosRGB";var ke=class extends J{constructor(e="",r,o,n,a){super(e,a,n,o,r);this.nodeType="Expression"}};import{Texture as WN}from"three";var Kt=class extends Ye{constructor(e=new WN,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new ka,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){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+n+", "+a+" )":l=s+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Yt(new ke("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,r)}};var se=class extends Ye{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,a,s){return e.format(this.value+(this.value%1?"":".0"),n,r)}};var gl=class extends ge{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,n,a){n=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let p=s.inputs[u],d=this.inputs[u]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,n,r)}};var Qf=class extends ge{constructor(e,r,o=Qf.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),a=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+a+" )",o,r)}},Rt=Qf;Rt.ADD="+",Rt.SUB="-",Rt.MUL="*",Rt.DIV="/";var Ke=class extends ge{constructor(e,r=Ke.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 Ke.MIX:case Ke.CLAMP:case Ke.REFRACT:case Ke.SMOOTHSTEP:case Ke.FACEFORWARD:return 3;case Ke.MIN:case Ke.MAX:case Ke.MOD:case Ke.STEP:case Ke.REFLECT:case Ke.DISTANCE:case Ke.DOT:case Ke.CROSS:case Ke.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 Ke.LENGTH:case Ke.DISTANCE:case Ke.DOT:return"f";case Ke.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,u=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ke.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,r);case Ke.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,r);case Ke.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Ke.STEP:o=this.a.build(e,s===1?"f":u),n=this.b.build(e,u);break;case Ke.MIN:case Ke.MAX:case Ke.MOD:o=this.a.build(e,u),n=this.b.build(e,l===1?"f":u);break;case Ke.REFRACT:o=this.a.build(e,u),n=this.b.build(e,u),a=this.c.build(e,"f");break;case Ke.MIX:o=this.a.build(e,u),n=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(n=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),n&&d.push(n),a&&d.push(a);let f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,r)}},Te=Ke;Te.RAD="radians",Te.DEG="degrees",Te.EXP="exp",Te.EXP2="exp2",Te.LOG="log",Te.LOG2="log2",Te.SQRT="sqrt",Te.INV_SQRT="inversesqrt",Te.FLOOR="floor",Te.CEIL="ceil",Te.NORMALIZE="normalize",Te.FRACT="fract",Te.SATURATE="saturate",Te.SIN="sin",Te.COS="cos",Te.TAN="tan",Te.ASIN="asin",Te.ACOS="acos",Te.ARCTAN="atan",Te.ABS="abs",Te.SIGN="sign",Te.LENGTH="length",Te.NEGATE="negate",Te.INVERT="invert",Te.MIN="min",Te.MAX="max",Te.MOD="mod",Te.STEP="step",Te.REFLECT="reflect",Te.DISTANCE="distance",Te.DOT="dot",Te.CROSS="cross",Te.POW="pow",Te.MIX="mix",Te.CLAMP="clamp",Te.REFRACT="refract",Te.SMOOTHSTEP="smoothstep",Te.FACEFORWARD="faceforward";var Ha=class extends ge{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let a=new gl(Ha.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new Yt(new ke("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Yt(new ke("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Yt(new ke("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Yt(new ke("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new ke(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new ke(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new ke(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new ke(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new ke("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,a=new gl(Ha.Nodes.roughnessToMip,[n]),s=new Te(a,Ha.Nodes.m0,Ha.Nodes.cubeUV_maxMipLevel,Te.CLAMP),l=new Te(s,Te.FLOOR),c=new Te(s,Te.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Rt(l,new se(1).setReadonly(!0),Rt.ADD)),d=new Te(u,p,c,Te.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Wa=Ha;Wa.Nodes=function(){let e=new Ua(`struct TextureCubeUVData {
|
|
23
23
|
vec4 tl;
|
|
24
24
|
vec4 tr;
|
|
25
25
|
vec4 br;
|
|
26
26
|
vec4 bl;
|
|
27
27
|
vec2 f;
|
|
28
|
-
}`),r=new
|
|
28
|
+
}`),r=new Fe("float cubeUV_maxMipLevel 8.0",!0),o=new Fe("float cubeUV_minMipLevel 4.0",!0),n=new Fe("float cubeUV_maxTileSize 256.0",!0),a=new Fe("float cubeUV_minTileSize 16.0",!0),s=new J(`float getFace(vec3 direction) {
|
|
29
29
|
vec3 absDirection = abs(direction);
|
|
30
30
|
float face = -1.0;
|
|
31
31
|
if (absDirection.x > absDirection.z) {
|
|
@@ -84,7 +84,7 @@ best distance: ${p.d}`);let x=[p.x,p.y];return x.distance=p.d,x.distance}functio
|
|
|
84
84
|
uv.x -= texelSize;
|
|
85
85
|
vec4 bl = texture2D(envMap, uv);
|
|
86
86
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
87
|
-
}`,[e,s,l,r,o,n,a]);c.useKeywords=!1;let u=new
|
|
87
|
+
}`,[e,s,l,r,o,n,a]);c.useKeywords=!1;let u=new Fe("float r0 1.0",!0),p=new Fe("float v0 0.339",!0),d=new Fe("float m0 -2.0",!0),f=new Fe("float r1 0.8",!0),h=new Fe("float v1 0.276",!0),m=new Fe("float m1 -1.0",!0),y=new Fe("float r4 0.4",!0),b=new Fe("float v4 0.046",!0),v=new Fe("float m4 2.0",!0),w=new Fe("float r5 0.305",!0),O=new Fe("float v5 0.016",!0),S=new Fe("float m5 3.0",!0),T=new Fe("float r6 0.21",!0),M=new Fe("float v6 0.0038",!0),g=new Fe("float m6 4.0",!0),D=[u,p,d,f,h,m,y,b,v,w,O,S,T,M,g],N=new J(`float roughnessToMip(float roughness) {
|
|
88
88
|
float mip = 0.0;
|
|
89
89
|
if (roughness >= r1) {
|
|
90
90
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -98,7 +98,7 @@ best distance: ${p.d}`);let x=[p.x,p.y];return x.distance=p.d,x.distance}functio
|
|
|
98
98
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
99
99
|
}
|
|
100
100
|
return mip;
|
|
101
|
-
}`,D);return{bilinearCubeUV:c,roughnessToMip:
|
|
101
|
+
}`,D);return{bilinearCubeUV:c,roughnessToMip:N,m0:d,cubeUV_maxMipLevel:r}}();var pn=class extends ge{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??pn.VIEW}getShared(){return this.scope===pn.WORLD}build(e,r,o,n){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,a){let s;switch(this.scope){case pn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case pn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case pn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},Bt=pn;Bt.LOCAL="local",Bt.WORLD="world",Bt.VIEW="view",Bt.NORMAL="normal";Nt.addKeyword("viewNormal",function(){return new Bt(Bt.VIEW)});Nt.addKeyword("localNormal",function(){return new Bt(Bt.NORMAL)});Nt.addKeyword("worldNormal",function(){return new Bt(Bt.WORLD)});var ho=class extends ge{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ho.LOCAL}getType(){switch(this.scope){case ho.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ho.LOCAL:case ho.WORLD:return!1}return!0}generate(e,r,o,n,a){let s;switch(this.scope){case ho.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case ho.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case ho.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ho.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},or=ho;or.LOCAL="local",or.WORLD="world",or.VIEW="view",or.PROJECTION="projection";Nt.addKeyword("position",function(){return new or});Nt.addKeyword("worldPosition",function(){return new or(or.WORLD)});Nt.addKeyword("viewPosition",function(){return new or(or.VIEW)});var kr=class extends ge{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??kr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case kr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case kr.VECTOR:{let a=new Bt(Bt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new or(or.VIEW).build(e,"v3"),u=s?s.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;u&&(p=`normalize( mix( ${p}, ${l}, ${u} * ${u} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),n="reflectVec"):n=d;break}case kr.CUBE:{let a=new kr(kr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),n="reflectCubeVec"):n=s;break}case kr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new kr(kr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),n="reflectSphereVec"):n=s;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)}},mo=kr;mo.CUBE="cube",mo.SPHERE="sphere",mo.VECTOR="vector";var ku=class extends ge{constructor(e=new Kt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Wa(this.value,r??new mo(mo.VECTOR),o),this.irradianceNode=new Wa(this.value,new Bt(Bt.WORLD),new se(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))}};import{CubeTexture as qN}from"three";var Hu=class extends Ye{constructor(e=new qN,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new mo,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+n+", "+a+" )":s="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Yt(new ke("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,c),e.removeContext(),e.format(s,c,r)}};var qb=`
|
|
102
102
|
uniform int frameIndex;
|
|
103
103
|
uniform vec2 resolution;
|
|
104
104
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -106,7 +106,7 @@ uniform mat4 previousProjectionMatrix;
|
|
|
106
106
|
|
|
107
107
|
varying vec4 vCurrentPosition;
|
|
108
108
|
varying vec4 vPreviousPosition;
|
|
109
|
-
|
|
109
|
+
`,$b=`
|
|
110
110
|
layout(location = 1) out vec4 gVelocity;
|
|
111
111
|
|
|
112
112
|
uniform int frameIndex;
|
|
@@ -148,7 +148,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
|
|
|
148
148
|
return fract(magic.z * fract(dot(screenPos, magic.xy)));
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
`,
|
|
151
|
+
`,Xb=`
|
|
152
152
|
// TODO: This could be generated CPU side and passed to the shader every frame
|
|
153
153
|
const vec2 haltonSequence[16] = vec2[16](
|
|
154
154
|
vec2( 0.000000,-0.333334),
|
|
@@ -185,7 +185,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
|
|
|
185
185
|
#endif
|
|
186
186
|
gl_Position = currentPositionJittered;
|
|
187
187
|
|
|
188
|
-
`,
|
|
188
|
+
`,Yb=`
|
|
189
189
|
vec2 oldPos = vPreviousPosition.xy;
|
|
190
190
|
oldPos /= vPreviousPosition.w;
|
|
191
191
|
oldPos.xy = (oldPos.xy+1.)/2.0;
|
|
@@ -200,14 +200,14 @@ vec2 velocity = (newPos - oldPos);
|
|
|
200
200
|
if (gl_FragColor.a <= 0.0) discard;
|
|
201
201
|
|
|
202
202
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
203
|
-
`,
|
|
203
|
+
`,Kb=`
|
|
204
204
|
layout(location = 1) out vec4 gVelocity;
|
|
205
|
-
`,
|
|
205
|
+
`,Qb=`
|
|
206
206
|
// Discard fully transparent pixels
|
|
207
207
|
if (gl_FragColor.a <= 0.0) discard;
|
|
208
208
|
|
|
209
209
|
gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
|
|
210
|
-
`;var
|
|
210
|
+
`;var Jb=["x","y","z","w"],QN=["float","vec2","vec3","vec4"],ZN={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},JN={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[]"},qa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let n=this.getIncludes(r,o);if(!n)return"";let a="";n=n.sort(t);for(let s=0;s<n.length;s++)n[s].src&&(a+=n[s].src+`
|
|
211
211
|
`);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
212
212
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
213
213
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -245,26 +245,26 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
245
245
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
246
246
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
247
247
|
}`,""].join(`
|
|
248
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(
|
|
248
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(qb),this.addFragmentParsCode($b),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(`
|
|
249
249
|
#ifndef SHAPEBLEND
|
|
250
250
|
vObjectNormal = normal;
|
|
251
251
|
#else
|
|
252
252
|
vObjectNormal = objectNormal;
|
|
253
253
|
#endif
|
|
254
|
-
`)),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(
|
|
254
|
+
`)),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(Xb),this.addFragmentFinalCode(Yb)),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
255
255
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
256
256
|
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
257
257
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
258
258
|
`}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",a=""){let s=this.getVars(o),l=s[t];if(!l){let c=s.length;l={name:r||"node"+n+c+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
259
259
|
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++o){let a=t[o],s=a.type,l=a.name,c=a.size,u=this.getFormatByType(s);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?r+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
|
|
260
260
|
`:r+=e+" "+u+" "+l+`;
|
|
261
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof
|
|
261
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Xe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new yl({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:n});return s.list.push(c),s[t].push(c),s[t][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new yl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:n});return s.list.push(c),s[t].push(c),s[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}include(t,e,r){let o;if(t=typeof t=="string"?Nt.get(t):t,this.context.include===!1)return t.name;t instanceof J?o=this.includes.functions:t instanceof Fe?o=this.includes.consts:t instanceof Ua&&(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 J&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return QN[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case $N:case XN:return new Hu(r);case YN:return new ku(new Kt(r));default:return new Kt(r)}else{if(r.isVector2)return new ct(r);if(r.isVector3)return new Ft(r);if(r.isVector4)return new rr(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 ZN[t]||t}getFormatByType(t){return JN[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Jb[t]}getIndexByElement(t){return Jb.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=Zb,e===Zb&&this.context.gamma&&(e=KN),e}};import{MathUtils as NE,Vector2 as $r,Vector3 as yn,Vector4 as us}from"three";var qe=class extends Ye{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof At?e:new At(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var Re=class extends Ye{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,a,s){return e.format(this.value.toString(),n,r)}};import{UniformsLib as nE,UniformsUtils as aE}from"three";var ut=class extends Ye{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}};var Hr=class extends Ye{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)}};import{Vector3 as eE}from"three";var Ti=class extends Ye{};var Wu=class extends Ti{constructor(e){super("v3");this.image=e;this._value=new eE}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var fn=class extends Ti{constructor(e,r,o=1008,n=1006){super("t");this.image=e;this.wrap=r;this.minFilter=o;this.magFilter=n}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};import{Matrix3 as tE}from"three";var $a=class extends Ye{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new tE}generateReadonly(e,r,o,n,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as rE}from"three";var jt=class extends Ye{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new rE}generateReadonly(e,r,o,n,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as oE,Matrix3 as tv}from"three";function ev(i,t,e,r=0){i.setUvTransform(e[0],e[1],t[0],t[1],0,0,0).premultiply(new tv().makeRotation(r*oE.DEG2RAD))}var qu=class extends $a{constructor(e,r,o=0){super(new tv);this.repeat=e;this.offset=r;this.rotation=o;ev(this.value,e,r,o)}updateMatrix(){ev(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as rv}from"three";var Wr=class extends Ye{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof rv?new Array(e).fill(r):new Array(e).fill(new rv(0))}};var Xa=class extends ge{constructor(e,r,o,n){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)}};var Zf=class extends ge{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(Zf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let n=[];return n.push(this.color.build(e,"v3")),n.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},hn=Zf;hn.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
262
262
|
float lalpha = alpha * mask;
|
|
263
263
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
264
264
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
265
265
|
|
|
266
266
|
return color;
|
|
267
|
-
}`)}}();var
|
|
267
|
+
}`)}}();var Jf=class extends ge{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(Jf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),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)}},Ya=Jf;Ya.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
268
268
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
269
269
|
normal *= step( vec3(0.5), cnormal );
|
|
270
270
|
|
|
@@ -273,7 +273,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
273
273
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
274
274
|
|
|
275
275
|
return normal;
|
|
276
|
-
}`)}}();var
|
|
276
|
+
}`)}}();var Ka=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=a,this.side=s,this.size=l,this.blending=c,this.mat=u,this.isMask=f,this.alpha=p,this.mode=d,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(Ka.Nodes.cylindrical);break;case 2:n=e.include(Ka.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],c=new J(`
|
|
277
277
|
vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
278
278
|
vec2 projected = (1. + (position.${l})) / 2.;
|
|
279
279
|
vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -297,7 +297,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
297
297
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
298
298
|
|
|
299
299
|
return col;
|
|
300
|
-
}`);n=e.include(c);break;case 4:n=e.include(
|
|
300
|
+
}`);n=e.include(c);break;case 4:n=e.include(Ka.Nodes.triplanar);break;default:n=e.include(Ka.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",c=s+"1",u=s+"2",p=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(p,"vec3"),a.push(l),a.push(c),a.push(u),a.push(p)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(n+"("+a.join(",")+")",this.getType(e),r)}},Ci=Ka;Ci.Nodes=function(){let e=new J(`
|
|
301
301
|
vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
302
302
|
vec3 posN = normalize(position);
|
|
303
303
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -452,7 +452,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
452
452
|
|
|
453
453
|
return col;//n * 0.5 + 0.5;
|
|
454
454
|
}
|
|
455
|
-
`);return{cylindrical:e,spherical:r,uv:o,triplanar:n}}();var
|
|
455
|
+
`);return{cylindrical:e,spherical:r,uv:o,triplanar:n}}();var Qa=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=c,this.colors=u,this.steps=p,this.isMask=f,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new J(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
|
|
456
456
|
vec4 color = colors[0];
|
|
457
457
|
#ifdef ${o}_IS_VECTOR
|
|
458
458
|
#ifdef ${o}_LINEAR
|
|
@@ -492,7 +492,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
492
492
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
493
493
|
|
|
494
494
|
return color.rgb;
|
|
495
|
-
}`,[
|
|
495
|
+
}`,[Qa.Nodes.vectorLinearWorldSpaceDepth,Qa.Nodes.vectorLinearObjectSpaceDepth,Qa.Nodes.vectorSphericalObjectSpaceDepth,Qa.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(n),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Za=Qa;Za.Nodes=function(){let e=new J(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
496
496
|
vec3 n = normalize(direction);
|
|
497
497
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
498
498
|
return ( dist - near ) / ( far - near );
|
|
@@ -506,7 +506,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
506
506
|
}`),n=new J(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
507
507
|
float dist = length(position - origin);
|
|
508
508
|
return ( dist - near ) / ( far - near );
|
|
509
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var
|
|
509
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var xl=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,this.factor=a,this.isMask=c,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new J(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
510
510
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
511
511
|
|
|
512
512
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -514,7 +514,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
514
514
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
515
515
|
|
|
516
516
|
return color;
|
|
517
|
-
}`),n=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var
|
|
517
|
+
}`),n=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var eh=class extends ge{constructor(e,r,o,n,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=n,this.offset=a,this.morph=s,this.angle=l,this.isMask=u,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(eh.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.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),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)}},Ja=eh;Ja.Nodes=function(){return{gradient:new J(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
|
|
518
518
|
vec4 color = colors[0];
|
|
519
519
|
vec2 m = morph / vUv.xy;
|
|
520
520
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -556,7 +556,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
556
556
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
557
557
|
|
|
558
558
|
return color.xyz;
|
|
559
|
-
}`)}}();var
|
|
559
|
+
}`)}}();var th=class extends ge{constructor(e,r,o,n,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=n,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(th.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.generate(e,"t")),n.push("normal"),n.push(this.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),n.push(this.rotation.build(e,"f")),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)}},es=th;es.Nodes=function(){return{matcap:new J(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha, float rotation) {
|
|
560
560
|
vec3 viewDir = normalize( vViewPosition );
|
|
561
561
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
562
562
|
vec3 y = cross( viewDir, x );
|
|
@@ -570,7 +570,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
570
570
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
571
571
|
|
|
572
572
|
return matcapColor.rgb;
|
|
573
|
-
}`)}}();var
|
|
573
|
+
}`)}}();var Vt=function(){let t=new J(`vec3 random3(vec3 c) {
|
|
574
574
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
575
575
|
vec3 r;
|
|
576
576
|
r.z = fract(512.0*j);
|
|
@@ -611,7 +611,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
611
611
|
d *= w;
|
|
612
612
|
|
|
613
613
|
return dot(d, vec4(52.0));
|
|
614
|
-
}`,[t]);e.keywords.F3=new
|
|
614
|
+
}`,[t]);e.keywords.F3=new Fe("float F3 0.3333333"),e.keywords.G3=new Fe("float G3 0.1666667");let r=new J(`float simplexPrecise(vec3 p) {
|
|
615
615
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
616
616
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
617
617
|
|
|
@@ -642,7 +642,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
642
642
|
d *= w;
|
|
643
643
|
|
|
644
644
|
return dot(d, vec4(52.0));
|
|
645
|
-
}`,[t]);r.keywords.F3=new
|
|
645
|
+
}`,[t]);r.keywords.F3=new Fe("float F3 0.3333333"),r.keywords.G3=new Fe("float G3 0.1666667");let o=new J(`float simplexFractal(vec3 m) {
|
|
646
646
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
647
647
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
648
648
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -710,7 +710,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
710
710
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
711
711
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
712
712
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
713
|
-
}`,[c]),
|
|
713
|
+
}`,[c]),p=new J(`float fbm(vec3 x) {
|
|
714
714
|
float v = 0.0;
|
|
715
715
|
float a = 0.5;
|
|
716
716
|
vec3 shift = vec3(100);
|
|
@@ -720,7 +720,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
720
720
|
a *= 0.5;
|
|
721
721
|
}
|
|
722
722
|
return v;
|
|
723
|
-
}`,[u]);
|
|
723
|
+
}`,[u]);p.keywords.NUM_OCTAVES=new Fe(`int NUM_OCTAVES ${5}`);let d=new J("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),f=new J(`float perlin(vec3 P){
|
|
724
724
|
vec3 Pi0 = floor(P);
|
|
725
725
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
726
726
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -779,7 +779,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
779
779
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
780
780
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
781
781
|
return 2.2 * n_xyz;
|
|
782
|
-
}`,[n,a,
|
|
782
|
+
}`,[n,a,d]),h=new J(`float hashwithoutsine13(vec3 p3)
|
|
783
783
|
{
|
|
784
784
|
p3 = fract(p3 * .1031);
|
|
785
785
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
@@ -797,7 +797,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
797
797
|
// Chebyshev
|
|
798
798
|
// vec3 a = abs(p);
|
|
799
799
|
// return max(a.x, max(a.y, a.z));
|
|
800
|
-
}`),
|
|
800
|
+
}`),b=new J(`float smin( float a, float b, float k )
|
|
801
801
|
{
|
|
802
802
|
float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
|
|
803
803
|
float correction = k * h * (1.0 - h);
|
|
@@ -955,7 +955,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
955
955
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
956
956
|
}
|
|
957
957
|
}
|
|
958
|
-
`,[h,m,y,
|
|
958
|
+
`,[h,m,y,b,v,w]);return{simplexFast:e,simplexPrecise:r,simplexFractal:o,simplexAshima:s,fbm:p,perlin:f,voronoi:O}}();var ts=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d,f,h,m,y,b,v,w,O){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=p,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=b,this.smoothness=v,this.seed=w,this.quality=O,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=["simplexFast","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseType.value],c=l=="voronoi"?`
|
|
959
959
|
float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
960
960
|
|
|
961
961
|
// Apply clipping to colors
|
|
@@ -992,7 +992,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
992
992
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
993
993
|
|
|
994
994
|
return clamp(color, 0.0, 1.0).rgb;
|
|
995
|
-
}`,[
|
|
995
|
+
}`,[Vt.simplexFast,Vt.simplexFractal,Vt.simplexAshima,Vt.fbm,Vt.perlin,Vt.voronoi]),p=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(p+"("+d.join(",")+")",this.getType(e),r)}};ts.numOctaves=5;var rh=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d,f,h,m,y,b){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=p,this.compensation=d,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=b,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let n=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(n,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
|
|
996
996
|
vID = randomColor.r;
|
|
997
997
|
vec2 ${o}_offset = vec2(0.0);
|
|
998
998
|
if (${s}) {
|
|
@@ -1007,7 +1007,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
1007
1007
|
// if this offset is the biggest of all the potential offsets
|
|
1008
1008
|
gl_Position = ${o}_clipPosition;
|
|
1009
1009
|
}
|
|
1010
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let n=e.include(
|
|
1010
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let n=e.include(rh.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},rs=rh;rs.Nodes=function(){let e=new J(`
|
|
1011
1011
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
1012
1012
|
{
|
|
1013
1013
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1156,7 +1156,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1156
1156
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1157
1157
|
|
|
1158
1158
|
return result;
|
|
1159
|
-
}`,[e])}}();var
|
|
1159
|
+
}`,[e])}}();var yo=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d,f,h,m,y,b,v,w){super("v3");this.nodeType="Pattern";this.style=e,this.projection=r,this.axis=o,this.blending=n,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=c,this.size=u,this.variation=p,this.smoothness=d,this.zigzag=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=b,this.isMask=w,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let n=`g${this.uuid.toString().replace(/-/g,"")}`,a=new J(`float hashwithoutsine12(vec2 p)
|
|
1160
1160
|
{
|
|
1161
1161
|
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
1162
1162
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
@@ -1170,7 +1170,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1170
1170
|
cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
|
|
1171
1171
|
);
|
|
1172
1172
|
return repeat ? fract(rotated): rotated;
|
|
1173
|
-
}`),l="";if(this.projection.value===4){let
|
|
1173
|
+
}`),l="";if(this.projection.value===4){let d=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
|
|
1174
1174
|
vec3 p = position;
|
|
1175
1175
|
float factor = 0.0125;
|
|
1176
1176
|
vec2 uv0 = fract(p.xy * factor);
|
|
@@ -1181,7 +1181,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1181
1181
|
uv1 = rotate_uv(uv1 + offset, rotation, true);
|
|
1182
1182
|
uv2 = rotate_uv(uv2 + offset, rotation, true);
|
|
1183
1183
|
|
|
1184
|
-
float d0 = ${
|
|
1184
|
+
float d0 = ${d};
|
|
1185
1185
|
float d1 = ${f};
|
|
1186
1186
|
float d2 = ${h};
|
|
1187
1187
|
|
|
@@ -1198,7 +1198,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1198
1198
|
float draw = d0 + d1 + d2;
|
|
1199
1199
|
|
|
1200
1200
|
vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
|
|
1201
|
-
`}else{let
|
|
1201
|
+
`}else{let d=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f="";this.axis.value===0?f=`float radius = length(p);
|
|
1202
1202
|
float theta = atan(p.y, p.z);
|
|
1203
1203
|
float phi = acos(p.x / radius);`:this.axis.value===1?f=`float radius = length(p);
|
|
1204
1204
|
float theta = atan(p.x, p.z);
|
|
@@ -1217,7 +1217,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1217
1217
|
custom_uv = fract(custom_uv);
|
|
1218
1218
|
custom_uv = rotate_uv(custom_uv, rotation, true);
|
|
1219
1219
|
|
|
1220
|
-
float draw = ${
|
|
1220
|
+
float draw = ${d};
|
|
1221
1221
|
`}let c=new J(`vec3 ${n}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
|
|
1222
1222
|
const float TWO_PI = PI * 2.0;
|
|
1223
1223
|
float smoothness_remapped = pow(smoothness, 5.0);
|
|
@@ -1242,7 +1242,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1242
1242
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1243
1243
|
|
|
1244
1244
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1245
|
-
}`,[s,a,
|
|
1245
|
+
}`,[s,a,yo.DrawFunctions.circle,yo.DrawFunctions.ring,yo.DrawFunctions.polygon,yo.DrawFunctions.cross,yo.DrawFunctions.diamond,yo.DrawFunctions.checkerboard,yo.DrawFunctions.line,yo.DrawFunctions.wave]),u=e.include(c),p=[];return p.push("normal"),p.push(this.blending.build(e,"f")),p.push(this.style.build(e,"i")),p.push(this.offset.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.frequency.build(e,"v2")),p.push(this.size.build(e,"f")),p.push(this.variation.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.zigzag.build(e,"f")),p.push(this.rotation.build(e,"f")),p.push(this.vertical.build(e,"v2")),p.push(this.horizontal.build(e,"v2")),p.push(this.sides.build(e,"i")),p.push(this.isMask.build(e,"b")),p.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),p.push(this.alpha.build(e,"f")),p.push(this.calpha),e.format(u+"("+p.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},os=yo;os.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
|
|
1246
1246
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1247
1247
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1248
1248
|
return fract((p3.x + p3.y) * p3.z);
|
|
@@ -1358,7 +1358,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1358
1358
|
s + smoothness,
|
|
1359
1359
|
abs(f.y)
|
|
1360
1360
|
);
|
|
1361
|
-
}`,[r]),
|
|
1361
|
+
}`,[r]),p=new J(`// Uses bisection
|
|
1362
1362
|
float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
|
|
1363
1363
|
// Convert all data to a primitive cosine wave
|
|
1364
1364
|
p = c * (p - vec2(d, a));
|
|
@@ -1407,7 +1407,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1407
1407
|
float s = mix(size, size * rand, variation);
|
|
1408
1408
|
|
|
1409
1409
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1410
|
-
}`);return{tileAndCenter:r,circle:o,ring:n,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:
|
|
1410
|
+
}`);return{tileAndCenter:r,circle:o,ring:n,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var oh=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,this.noiseScale=a,this.offset=s,this.isMask=c,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(oh.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.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),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)}},is=oh;is.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1411
1411
|
float f = 0.0;
|
|
1412
1412
|
|
|
1413
1413
|
if (noiseStrength != 0.0) {
|
|
@@ -1421,7 +1421,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1421
1421
|
|
|
1422
1422
|
mediump vec3 color = cos((((filmThickness + f) / waves) * angle) + movement);
|
|
1423
1423
|
return .5 + .5 * color;
|
|
1424
|
-
}`,[
|
|
1424
|
+
}`,[Vt.simplexFast]);return{rainbow:new J(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
|
|
1425
1425
|
mediump vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
1426
1426
|
|
|
1427
1427
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -1431,7 +1431,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1431
1431
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1432
1432
|
|
|
1433
1433
|
return res;
|
|
1434
|
-
}`,[e])}}();var
|
|
1434
|
+
}`,[e])}}();var ih=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(ih.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ns=ih;ns.Nodes=function(){let e=new J(`float rand(float n) {
|
|
1435
1435
|
return fract(sin(n) * 43758.5453123);
|
|
1436
1436
|
}`),r=new J(`float hash1(float p) {
|
|
1437
1437
|
p = fract(p * 0.011);
|
|
@@ -1667,7 +1667,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1667
1667
|
|
|
1668
1668
|
return color.xyz;
|
|
1669
1669
|
|
|
1670
|
-
}`,[
|
|
1670
|
+
}`,[Vt.simplexFast,e,o,a])}}();import{Vector2 as iv}from"three";var ov=function(){return{textureBicubic:new J(`float w0( float a ) {
|
|
1671
1671
|
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
|
|
1672
1672
|
}
|
|
1673
1673
|
|
|
@@ -1731,7 +1731,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1731
1731
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1732
1732
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1733
1733
|
return mix( fSample, cSample, fract( lod ) );
|
|
1734
|
-
}`)}}();function
|
|
1734
|
+
}`)}}();function nv(i,t){return i>=t?new iv(t/i,1):new iv(1,i/t)}var nh=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=n,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,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",6),e.define("BLUR_SLOD",Math.pow(2,Me.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(nh.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),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)}},as=nh;as.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1735
1735
|
// Slightly modified version of this:
|
|
1736
1736
|
// https://www.shadertoy.com/view/ltScRG
|
|
1737
1737
|
|
|
@@ -1791,7 +1791,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1791
1791
|
float lod = applyIorToRoughness(roughness, ior);
|
|
1792
1792
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1793
1793
|
#endif
|
|
1794
|
-
}`,[
|
|
1794
|
+
}`,[ov.textureBicubic,o,e]),a=new J(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
1795
1795
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1796
1796
|
vec3 refractedRayExit = position + transmissionRay;
|
|
1797
1797
|
|
|
@@ -1822,7 +1822,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1822
1822
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1823
1823
|
|
|
1824
1824
|
return transmission;
|
|
1825
|
-
}`,[a])}}();var
|
|
1825
|
+
}`,[a])}}();var ah=(e=>(e.NOISE="noise",e.MAP="map",e))(ah||{}),sh=class extends ge{constructor(e,r,o,n,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Re(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(ah)[this.displacementTypeIndex.value]==="map"&&(this.mat=new $a(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=n,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}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(ah)[this.displacementTypeIndex.value]){case"map":{o=e.include(sh.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 l=["simplexPrecise","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseFunctionIndex.value],c=new J(`vec3 orthogonal(vec3 v) {
|
|
1826
1826
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1827
1827
|
}`),u=l=="voronoi"?`
|
|
1828
1828
|
float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1833,9 +1833,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1833
1833
|
return p + n * v * intensity;
|
|
1834
1834
|
`:`
|
|
1835
1835
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1836
|
-
`,
|
|
1836
|
+
`,p=new J(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
|
|
1837
1837
|
${u}
|
|
1838
|
-
}`,[
|
|
1838
|
+
}`,[Vt.simplexPrecise,Vt.simplexFractal,Vt.simplexAshima,Vt.fbm,Vt.perlin,Vt.voronoi]),d=new J(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
|
|
1839
1839
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1840
1840
|
vec3 tangent1 = orthogonal(normal);
|
|
1841
1841
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1851,7 +1851,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1851
1851
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1852
1852
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1853
1853
|
return displaced_position;
|
|
1854
|
-
}`,[
|
|
1854
|
+
}`,[p,c]);o=e.include(d),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f")),n.push(this.voronoiStyle.build(e,"i")),n.push(this.smoothness.build(e,"f")),n.push(this.seed.build(e,"f")),n.push(this.highCut.build(e,"f")),n.push(this.lowCut.build(e,"f")),n.push(this.quality.build(e,"i"));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)}},ss=sh;ss.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
|
|
1855
1855
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1856
1856
|
}`),r=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1857
1857
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -1873,7 +1873,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1873
1873
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1874
1874
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1875
1875
|
return displaced_position;
|
|
1876
|
-
}`,[e,r])}}();var
|
|
1876
|
+
}`,[e,r])}}();var Me={normalRenderTarget:new Kt,normalRenderTargetDepth:new Kt,transmissionRenderTarget:new Kt,aspectRatio:new ct,transmissionSize:new ct(2048,2048),transmissionRenderTargetDepth:new Kt,aoRenderTarget:new Kt,aoEnabled:new ut,pixelRatioNode:new se(1),resolution:new ct,penumbraSize:new Hr(5,.5),frameIndex:new Re(0),transmissionLod:new Re(2),taaEnabled:new ut(!0)};for(let i of Object.values(Me))i.isRenderGlobal=!0;var av={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.10.99/build/ui.wasm"};var Wo=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new qe(gt),this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aE.merge([nE.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
|
|
1877
1877
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
1878
1878
|
#include <skinbase_vertex>
|
|
1879
1879
|
#include <skinnormal_vertex>
|
|
@@ -1893,9 +1893,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1893
1893
|
#include <begin_vertex>
|
|
1894
1894
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1895
1895
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","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(`
|
|
1896
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
1896
|
+
`)}else{this.color===void 0&&(this.color=new qe(gt)),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,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
1897
1897
|
`));let l=["#include <normal_fragment_begin>",o.code];n&&l.push(n.code,"#ifdef ALPHATEST"," if ( "+n.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),n?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
|
|
1898
|
-
`)}return r}};import{UniformsLib as
|
|
1898
|
+
`)}return r}};import{UniformsLib as sv,UniformsUtils as sE}from"three";var bl=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new qe(gt),this.emissive=new qe(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sE.merge([sv.fog,sv.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 <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1899
1899
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
1900
1900
|
#include <skinbase_vertex>
|
|
1901
1901
|
#include <skinnormal_vertex>
|
|
@@ -1990,14 +1990,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1990
1990
|
#pragma unroll_loop_end
|
|
1991
1991
|
#endif
|
|
1992
1992
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1993
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1993
|
+
`)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),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"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1994
1994
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1995
1995
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1996
1996
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1997
1997
|
vec3 viewdy = dFdy(vViewPosition);
|
|
1998
1998
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
1999
1999
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
2000
|
-
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),
|
|
2000
|
+
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),p&&f.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&f.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
2001
2001
|
if (outgoingLight != diffuseColor) {
|
|
2002
2002
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2003
2003
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
@@ -2005,8 +2005,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2005
2005
|
|
|
2006
2006
|
outgoingLight *= ao;
|
|
2007
2007
|
}
|
|
2008
|
-
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),
|
|
2009
|
-
`)}return r}};import{UniformsLib as
|
|
2008
|
+
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&f.push(`gl_FragColor.a *= ${d.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2009
|
+
`)}return r}};import{UniformsLib as lv,UniformsUtils as lE}from"three";var qo=function(){let i=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
2010
2010
|
|
|
2011
2011
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
2012
2012
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -2037,7 +2037,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2037
2037
|
|
|
2038
2038
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
2039
2039
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
2040
|
-
}`);return{dHdxy:i,perturbNormalArb:t}}();var
|
|
2040
|
+
}`);return{dHdxy:i,perturbNormalArb:t}}();var vl=class extends Xe{constructor(){super("phong");this.nodeType="Phong";this.color=new qe(gt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(lE.merge([lv.fog,lv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2041
2041
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2042
2042
|
#include <skinbase_vertex>
|
|
2043
2043
|
#include <skinnormal_vertex>
|
|
@@ -2057,7 +2057,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2057
2057
|
#include <begin_vertex>
|
|
2058
2058
|
#endif
|
|
2059
2059
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","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(`
|
|
2060
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2060
|
+
`)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let n=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
2061
2061
|
`));let f=["#include <normal_fragment_begin>",`
|
|
2062
2062
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2063
2063
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2066,7 +2066,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2066
2066
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2067
2067
|
normal *= -1.0;
|
|
2068
2068
|
}
|
|
2069
|
-
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),
|
|
2069
|
+
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),b=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",v="";this.bumpMap.projection.value===4?v=`
|
|
2070
2070
|
vec3 bumpNormal = vec3(0.0);
|
|
2071
2071
|
{
|
|
2072
2072
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2074,13 +2074,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2074
2074
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2075
2075
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2076
2076
|
|
|
2077
|
-
vec2 grad0 = dHdxy(${m.result}, uv0, ${
|
|
2077
|
+
vec2 grad0 = dHdxy(${m.result}, uv0, ${b});
|
|
2078
2078
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2079
2079
|
|
|
2080
|
-
vec2 grad1 = dHdxy(${m.result}, uv1, ${
|
|
2080
|
+
vec2 grad1 = dHdxy(${m.result}, uv1, ${b});
|
|
2081
2081
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2082
2082
|
|
|
2083
|
-
vec2 grad2 = dHdxy(${m.result}, uv2, ${
|
|
2083
|
+
vec2 grad2 = dHdxy(${m.result}, uv2, ${b});
|
|
2084
2084
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2085
2085
|
|
|
2086
2086
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2090,12 +2090,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2090
2090
|
normal = bumpNormal;
|
|
2091
2091
|
`:v=`
|
|
2092
2092
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2093
|
-
vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${
|
|
2093
|
+
vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${b});
|
|
2094
2094
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2095
2095
|
`,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2096
2096
|
${y.result};
|
|
2097
2097
|
${v}
|
|
2098
|
-
`)}f.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),
|
|
2098
|
+
`)}f.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),p&&f.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
2099
2099
|
if (outgoingLight != diffuseColor) {
|
|
2100
2100
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2101
2101
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
@@ -2103,8 +2103,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2103
2103
|
|
|
2104
2104
|
outgoingLight *= ao;
|
|
2105
2105
|
}
|
|
2106
|
-
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),
|
|
2107
|
-
`)}return r}};import{UniformsLib as
|
|
2106
|
+
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&f.push(`gl_FragColor.a *= ${d.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2107
|
+
`)}return r}};import{UniformsLib as lh,UniformsUtils as cE}from"three";var Sl=class extends Xe{constructor(){super("standard");this.nodeType="Standard";this.color=new qe(gt),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ut(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(cE.merge([lh.fog,lh.lights])),lh.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 <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2108
2108
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2109
2109
|
#include <skinbase_vertex>
|
|
2110
2110
|
#include <skinnormal_vertex>
|
|
@@ -2124,7 +2124,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2124
2124
|
#include <begin_vertex>
|
|
2125
2125
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2126
2126
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","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(`
|
|
2127
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2127
|
+
`)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new qe(gt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let n=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
2128
2128
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2129
2129
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2130
2130
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2133,7 +2133,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2133
2133
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2134
2134
|
normal *= -1.0;
|
|
2135
2135
|
}
|
|
2136
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let
|
|
2136
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let b=this.bumpMap.texture.flow(e,"t"),v=this.bumpMap.flow(e,"v3"),w=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",O="";this.bumpMap.projection.value===4?O=`
|
|
2137
2137
|
vec3 bumpNormal = vec3(0.0);
|
|
2138
2138
|
{
|
|
2139
2139
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2141,13 +2141,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2141
2141
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2142
2142
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2143
2143
|
|
|
2144
|
-
vec2 grad0 = dHdxy(${
|
|
2144
|
+
vec2 grad0 = dHdxy(${b.result}, uv0, ${w});
|
|
2145
2145
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2146
2146
|
|
|
2147
|
-
vec2 grad1 = dHdxy(${
|
|
2147
|
+
vec2 grad1 = dHdxy(${b.result}, uv1, ${w});
|
|
2148
2148
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2149
2149
|
|
|
2150
|
-
vec2 grad2 = dHdxy(${
|
|
2150
|
+
vec2 grad2 = dHdxy(${b.result}, uv2, ${w});
|
|
2151
2151
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2152
2152
|
|
|
2153
2153
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2157,12 +2157,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2157
2157
|
normal = bumpNormal;
|
|
2158
2158
|
`:O=`
|
|
2159
2159
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2160
|
-
vec2 grad = dHdxy(${
|
|
2160
|
+
vec2 grad = dHdxy(${b.result}, bumpMapCachedUv, ${w});
|
|
2161
2161
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2162
2162
|
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2163
2163
|
${v.result};
|
|
2164
2164
|
${O}
|
|
2165
|
-
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let
|
|
2165
|
+
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let b=this.roughnessMap.texture.flow(e,"t"),v=this.roughnessMap.flow(e,"v3"),w="";this.roughnessMap.projection.value===4?w=`
|
|
2166
2166
|
float roughnessChange = 1.0;
|
|
2167
2167
|
{
|
|
2168
2168
|
vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2170,9 +2170,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2170
2170
|
vec2 uv2 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2171
2171
|
vec3 weights = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2172
2172
|
|
|
2173
|
-
float r0 = luminance(texture(${
|
|
2174
|
-
float r1 = luminance(texture(${
|
|
2175
|
-
float r2 = luminance(texture(${
|
|
2173
|
+
float r0 = luminance(texture(${b.result}, uv0).rgb) * roughnessScale;
|
|
2174
|
+
float r1 = luminance(texture(${b.result}, uv1).rgb) * roughnessScale;
|
|
2175
|
+
float r2 = luminance(texture(${b.result}, uv2).rgb) * roughnessScale;
|
|
2176
2176
|
|
|
2177
2177
|
roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
|
|
2178
2178
|
}
|
|
@@ -2180,7 +2180,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2180
2180
|
`:w=`
|
|
2181
2181
|
vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2182
2182
|
|
|
2183
|
-
vec4 vals = texture(${
|
|
2183
|
+
vec4 vals = texture(${b.result}, roughnessMapCachedUv);
|
|
2184
2184
|
float roughnessFactor = luminance(vals.rgb) * ${s.result};
|
|
2185
2185
|
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2186
2186
|
${v.result};
|
|
@@ -2188,7 +2188,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2188
2188
|
const float roughnessScale = 1.0;
|
|
2189
2189
|
|
|
2190
2190
|
${w}
|
|
2191
|
-
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");
|
|
2191
|
+
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");d&&m.push(d.code,"#ifdef ALPHATEST"," if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+n.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
|
|
2192
2192
|
if (outgoingLight != diffuseColor) {
|
|
2193
2193
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2194
2194
|
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${y} * lightAccu;
|
|
@@ -2196,8 +2196,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2196
2196
|
|
|
2197
2197
|
outgoingLight *= ao;
|
|
2198
2198
|
}
|
|
2199
|
-
`),
|
|
2200
|
-
`)}return r}};import{UniformsLib as
|
|
2199
|
+
`),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
2200
|
+
`)}return r}};import{UniformsLib as cv,UniformsUtils as uE}from"three";var wl=class extends Xe{constructor(){super("toon");this.nodeType="Toon";this.color=new qe(gt),this.specular=new qe(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(uE.merge([cv.fog,cv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2201
2201
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2202
2202
|
#include <skinbase_vertex>
|
|
2203
2203
|
#include <skinnormal_vertex>
|
|
@@ -2217,7 +2217,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2217
2217
|
#include <begin_vertex>
|
|
2218
2218
|
#endif
|
|
2219
2219
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","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(`
|
|
2220
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2220
|
+
`)}else{e.mergeUniform({penumbraSize:Me.penumbraSize}),e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({aoMap:Me.aoRenderTarget}),e.mergeUniform({aoEnabled:Me.aoEnabled}),this.color===void 0&&(this.color=new qe(gt)),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"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
2221
2221
|
varying vec3 vViewPosition;
|
|
2222
2222
|
struct ToonMaterial {
|
|
2223
2223
|
vec3 diffuseColor;
|
|
@@ -2238,7 +2238,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2238
2238
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
2239
2239
|
#define Material_LightProbeLOD( material ) (0)
|
|
2240
2240
|
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
2241
|
-
`));let
|
|
2241
|
+
`));let d=["#include <normal_fragment_begin>",`
|
|
2242
2242
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2243
2243
|
vec3 viewdx = dFdx(vViewPosition);
|
|
2244
2244
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -2246,7 +2246,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2246
2246
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2247
2247
|
normal *= -1.0;
|
|
2248
2248
|
}
|
|
2249
|
-
`," ToonMaterial material;"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",
|
|
2249
|
+
`," ToonMaterial material;"];if(this.bumpMap){e.include(qo.dHdxy),e.include(qo.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
|
|
2250
2250
|
vec3 bumpNormal = vec3(0.0);
|
|
2251
2251
|
{
|
|
2252
2252
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2268,25 +2268,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2268
2268
|
}
|
|
2269
2269
|
|
|
2270
2270
|
normal = bumpNormal;
|
|
2271
|
-
`:
|
|
2271
|
+
`:b=`
|
|
2272
2272
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2273
2273
|
vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${y});
|
|
2274
2274
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2275
|
-
`,
|
|
2275
|
+
`,d.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2276
2276
|
${m.result};
|
|
2277
|
-
${
|
|
2278
|
-
`)}
|
|
2277
|
+
${b}
|
|
2278
|
+
`)}d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),u&&d.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
|
|
2279
2279
|
if (outgoingLight != diffuseColor) {
|
|
2280
2280
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2281
2281
|
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${f} * lightAccu;
|
|
2282
2282
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
|
|
2283
2283
|
}
|
|
2284
|
-
`),c&&
|
|
2285
|
-
`)}return r}};import{VideoTexture as aN,Texture as sN}from"three";var Uu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var nh=class extends Uu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ih;function nv(i){return typeof i=="string"?i:(ih||(ih=new nh),ih.load(i))}var ku=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Hu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ns=class extends ku{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=nv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new aN(this.img,void 0,e,e):a=new sN(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var fr=class extends ns{};import{Vector2 as $o,Vector3 as yo,Vector4 as Wu}from"three";function Ut(i,t){return t.color(i)}function av(i,t){switch(i.type){case"fresnel":return uN(i,t);case"gradient":return dN(i,t);case"depth":return pN(i,t);case"normal":return fN(i,t);case"noise":return hN(i,t);case"rainbow":return mN(i,t);case"toon":return yN(i,t);case"outline":return gN(i,t);case"transmission":return xN(i,t);case"color":return cN(i,t);case"pattern":return bN(i,t)}}function lN(i){return{type:i.type}}function Wr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...lN(i),alpha:n,mode:r,isMask:o}}function cN(i,t){return{...Wr(i,t),color:Ut(i.color,t)}}function uN(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...Wr(i,t),color:Ut(a,t),bias:e,scale:r,intensity:o,factor:n}}function dN(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...Wr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Wu(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new $o(...s),morph:new $o(...l),angle:a}}function pN(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:d}=i;return{...Wr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new yo(...s),direction:l?new yo(...l):new yo(1,0,0),colors:c.map(p=>p!==void 0?new Wu(p[0],p[1],p[2],p[3]):new Wu(0,0,0,0)),steps:u.slice(0,c.length),smooth:d}}function fN(i,t){let{cnormal:e}=i;return{...Wr(i,t),cnormal:new yo(e[0],e[1],e[2])}}function hN(i,t){return{...Wr(i,t),scale:i.scale,move:i.move,fA:new $o(...i.fA),fB:new $o(...i.fB),size:new yo(...i.size),distortion:new $o(...i.distortion),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),colorC:Ut(i.colorC,t),colorD:Ut(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function mN(i,t){return{...Wr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new yo(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new yo(...i.offset)}}function yN(i,t){return{...Wr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Wu(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new yo(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ut(i.shadowColor,t),offset:new yo(...i.offset)}}function gN(i,t){return{...Wr(i,t),outlineColor:Ut(i.outlineColor,t),contourColor:Ut(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new yo(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function xN(i,t){return{...Wr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function bN(i,t){return{...Wr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new $o(...i.offset),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),frequency:new $o(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new $o(...i.vertical),horizontal:new $o(...i.horizontal),sides:i.sides}}var Ci=class extends Ct{};import{MathUtils as vN,Vector4 as SN}from"three";var wN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},PN={depth:["colors"]};function ON(i,t,e){if(t==="isMask")return!0;let r=wN[i.type],o=PN[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function ah(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof fr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof fr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(n.rotation??0)*vN.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in n&&(s.repeat=n.repeat),"offset"in n&&(s.offset=n.offset),"rotation"in n&&(s.rotation=n.rotation??0),s.updateMatrix()}return o}function sv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(sh(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Oi))switch(o=o||ON(e,n,a),s.constructor){case We:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ci?s.value=new Ct(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case rr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ci?s.value=new Ct(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case lt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ft:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Kt:{ah(a,t,e);break}case Hr:{s.value=a.map(l=>new SN(...l));break}default:{s.value=a;break}}}return o}var Ai=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Vt=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Mi=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)sh(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Qt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new dn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Fu(n),l=new ju(r.texture.repeat,r.texture.offset,r.texture.rotation??0),c=new se(r.crop?1:0),u=new Re(r.projection??0),d=new Re(["x","y","z"].indexOf(r.axis)??0),p=new Re(r.side??0),f=new lt(r.size?new qr(r.size[0],r.size[1]):new qr(100,100)),h=new se(r.blending??0),m=new se(Ai(r.alpha,o)),y=new Re(r.mode??0),x=new ct(r.isMask??!1),v=new Ti(a,s,c,u,d,p,f,h,l,m,y,x),w=new Ue(v.calpha,"f");return new ot(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:x},v,y,w,x,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new dn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ai(r.alpha,o)),l=new Re(r.mode??0),c=new ct(r.isMask??!1),u=new se((r.texture.rotation??0)*TN.DEG2RAD),d=new Qa(a,s,l,c,u),p=new Ue(d.calpha,"f");return new ot(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},d,l,p,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Ft(new go(...r.offset.map(x=>Vt(x,o)??0))),a=new se(Vt(r.scale,o)??10),s=new se(Vt(r.intensity,o)??8),l=new se(Vt(r.movement,o)??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),d=new se(Vt(r.smoothness,o)??.5),p=new se(Vt(r.seed,o)??0),f=new se(Vt(r.highCut,o)??1),h=new se(Vt(r.lowCut,o)??0),m=new Re(Vt(r.quality,o)??1),y=new is(s,l,n,u,d,p,f,h,m,a,c);return new bl(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return MN(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let d=s[c];if(typeof u=="string"||typeof u=="number"&&typeof d=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):sv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?ah(o.props,r.shared,this)||n:!0;return n}dispose(){if(CN(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof fr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends Mi{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},bl=class extends Mi{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Qt=class extends Mi{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ai(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ai(o.alphaOverride,n)),d;if(!o.visible)a=new Wo,d={};else if(o.category==="lambert"){a=new ml;let p=new We(n.color(o.emissive)??0),f=new ct(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new xl;let p=new se(o.shininess??30),f=new We(n.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new gl;let p=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ct(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new yl;let p=new se(o.shininess??30),f=new We(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ct(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Qt(e,r,o,a,d,n)}get category(){return this.node.category}};function CN(i){let t=i instanceof Mi?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Or(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ct(i.isMask??!1)}}function AN(i,t,e,r,o){switch(i.type){case"color":{let n=new We(r.color??yt),a=Or(r),s=new pn(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new We(r.color??16777215),a=new se(r.bias??.1),s=new se(r.scale??1),l=new se(r.intensity??2),c=new se(r.factor??1),u=Or(r),d=new hl(n,a,s,l,c,u.alpha,u.mode,u.isMask),p=new Ue(d.calpha,"f");return new ot(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},d,u.mode,p,u.isMask,o)}case"rainbow":{let n=new se(r.filmThickness??30),a=new se(r.movement??0),s=new Ft(r.wavelengths??new go(0,0,0)),l=new se(r.noiseStrength??0),c=new se(r.noiseScale??1),u=new Ft(r.offset??new go(0,0,0)),d=Or(r),p=new ts(n,a,s,l,c,u,d.alpha,d.isMask),f=new Ue(p.calpha,"f");return new ot(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let n=new se(r.thickness??10),a=new se(r.ior??1.5),s=new se(r.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new lt(p/d,1):new lt(1,d/p),h=Or(r),m=new os(n,a,s,l,c,u,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new Hr(r.colors.length,r.colors):(a=new Hr(10,new as(0,0,0,1)),a.value[1]=new as(1,1,1,1));let s;r.steps?s=new kr(r.steps.length,r.steps):(s=new kr(10,1),s.value[0]=0);let l=new Ft(r.source??new go(0,0,0)),c=new ct(r.isWorldSpace??!0),u=new se(r.noiseStrength??0),d=new se(r.noiseScale??1),p=new rr(r.shadowColor),f=new Ft(r.offset??new go(0,0,0)),h=Or(r),m=new rs(n,a,s,l,c,u,d,p,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new We(r.outlineColor??16777215),a=new We(r.contourColor??16777215),s=new se(r.outlineWidth??.1),l=new se(r.contourWidth??.1),c=new se(r.outlineThreshold??.1),u=new se(r.contourThreshold??.1),d=new se(r.outlineSmoothing??.1),p=new se(r.contourFrequency??.1),f=new Ft(r.contourDirection??new go(0,1,0)),h=new ct(r.positionalLines??!1),m=new ct(r.compensation??!0),y=Ae.normalRenderTarget,x=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,w=Ae.resolution,O=Or(r),S=new Ja(n,a,s,l,c,u,d,p,f,h,m,w,y,x,v,O.alpha),T=new Ue(S.calpha,"f");return new ot(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s=new se(Vt(r.near,o)??50),l=new se(Vt(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),d=r.origin??new go;d.x=Vt(d.x,o)??0,d.y=Vt(d.y,o)??0,d.z=Vt(d.z,o)??0;let p=new Ft(d),f=r.direction??new go;f.x=Vt(f.x,o)??0,f.y=Vt(f.y,o)??0,f.z=Vt(f.z,o)??0;let h=new Ft(f),m;r.colors?m=new Hr(r.colors.length,r.colors):(m=new Hr(2,new as(0,0,0,1)),m.value[1]=new as(1,1,1,1));let y;r.steps?y=new kr(r.steps.length,r.steps):(y=new kr(2,1),y.value[0]=0);let x=Or(r),v=new Ya(n,a,s,l,c,u,p,h,m,y,x.alpha,x.isMask),w=new Ue(v.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:h,colors:m,steps:y,...x},v,x.mode,w,x.isMask,o)}case"noise":{let n=new se(r.scale??1),a=new Ft(r.size??new go(100,100,100)),s=new se(r.move??1),l=new lt(r.fA??new qr(1.7,9.2)),c=new lt(r.fB??new qr(8.3,2.8)),u=new lt(r.distortion??new qr(1,1)),d=new rr(r.colorA),p=new rr(r.colorB),f=new rr(r.colorC),h=new rr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),x=new se(r.highCut??1),v=new se(r.lowCut??0),w=new se(r.smoothness??.5),O=new se(r.seed??.5),S=new Re(r.quality??1),T=Or(r),M=new Za(n,a,s,l,c,u,d,p,f,h,T.alpha,m,T.isMask,y,x,v,w,O,S),g=new Ue(M.calpha,"f");return new ot(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:x,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Ft(r.cnormal??new go(1,1,1)),a=Or(r),s=new qa(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s;r.colors?s=new Hr(r.colors.length,r.colors):(s=new Hr(10,new as(0,0,0,1)),s.value[1]=new as(1,1,1,1));let l;r.steps?l=new kr(r.steps.length,r.steps):(l=new kr(10,1),l.value[0]=0);let c=new lt(r.offset??new qr(0,0)),u=new lt(r.morph??new qr(0,0)),d=new se(r.angle??0),p=Or(r),f=new Ka(n,a,s,l,c,u,d,p.alpha,p.isMask),h=new Ue(f.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(r.blending??0),c=new lt(r.offset??new qr(0,0)),u=new rr(r.colorA),d=new rr(r.colorB),p=new lt(r.frequency??new qr(10,10)),f=new se(r.size??.5),h=new se(r.variation??0),m=new se(r.smoothness??.5),y=new se(r.zigzag??0),x=new se(r.rotation??0),v=new lt(r.vertical??new qr(0,1)),w=new lt(r.horizontal??new qr(0,1)),O=new Re(r.sides??6),S=Or(r),T=new es(n,a,s,l,c,u,d,p,f,h,m,y,x,v,w,O,S.alpha,S.isMask),M=new Ue(T.calpha,"f");return new ot(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:x,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new We(1,0,0,1),a=Or(r),s=new pn(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function MN(i,t,e,r){let o=av(e,r);return AN(e,i,t,o,r)}function sh(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Vt(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ai(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function qu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var ir=class extends IN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},$u=class extends ir{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},hn=class extends ir{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,$e.startContext(this),this.reset0(e,r),$e.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new $u(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){$e.startContext(this),(this.data!==e||o)&&this.reset0(e,r),$e.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Tt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Mi.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=qu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=qu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=qu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3];(c==="x"||c==="y"||c==="z")&&l.isVector3?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{if("alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"){let n=["intensity","scale","movement","smoothness","seed","highCut","lowCut"];for(let a of n)a in o.data&&e.shared.getVariable(o.data[a],["material",this.uuid,"layer",o.id,a]);"offset"in o.data&&o.data.offset.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"offset",s===0?"x":s===1?"y":"z"])})}else if(o.data.type==="depth"){let n=["near","far"];for(let a of n)a in o.data&&e.shared.getVariable(o.data[a],["material",this.uuid,"layer",o.id,a]);o.data.origin.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"origin",s===0?"x":s===1?"y":"z"])}),o.data.direction.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"direction",s===0?"x":s===1?"y":"z"])})}})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Qt),this.lightLayer===void 0&&(this.lightLayer=new Qt(0,"",{...vt.defaultData("light","phong"),visible:!1},new Wo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Qt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ot&&s.color instanceof Ti&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if($e.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=qu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ai(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ai(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);$e.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof ot?r.color.mask=void 0:r instanceof Qt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof ot&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Qt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof ot&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Qt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof ot){if(a.isMask.value)continue;o=new Wa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Qt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof ot){if(n.isMask.value)continue;e=new Wa(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof bl);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new ka;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ot){let r=e.params.texture;if(r instanceof dn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(ir.prototype,{properties:{get:function(){return this.fragment.properties}}});var mn=class extends hn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var lv=new Map;function cv(i){if(typeof i=="string")return i;let t=lv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},lv.set(i,t)),t.url}var EN,uv=new Promise(i=>{EN=i});var dv;uv.then(i=>dv=i);var yn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:cv(t),format:"wav"},this.sound=new dv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as NN,Vector2 as gn,Path as pv,Shape as DN,ShapeUtils as _N,Color as RN}from"three";var Xu=class{constructor(){this.type="ShapePath";this.color=new RN;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new pv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,x,v){let w=m.x,O=y.x,S=x.x,T=v.x,M=m.y,g=y.y,D=x.y,E=v.y,I=(T-S)*(M-D)-(E-D)*(w-S),N=(O-w)*(M-D)-(g-M)*(w-S),_=(E-D)*(O-w)-(T-S)*(g-M),R=I/_,V=N/_;if(_===0&&I!==0||R<=0||R>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?x:v,m,y),r.loc===e.ORIGIN){let B=U===0?x:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?x:v,m,y),r.loc===e.ORIGIN){let j=q===0?x:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+R*(O-w)).toPrecision(10),B=+(M+R*(g-M)).toPrecision(10);return{x:U,y:B,t:R}}}function n(m,y,x){let v=x.x-y.x,w=x.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===x.x&&m.y===x.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let x=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&x.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(x.push(D),v.push(new gn(D.x,D.y)))}}return v}function s(m,y,x){let v=new gn;y.getCenter(v);let w=[];return x.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,x,v,w){(w==null||w==="")&&(w="nonzero");let O=new gn;m.boundingBox.getCenter(O);let S=[new gn(x,O.y),new gn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((N,_)=>N.point.x-_.point.x);let M=[],g=[];T.forEach(N=>{N.identifier===m.identifier?M.push(N):g.push(N)});let D=M[0].point.x,E=[],I=0;for(;I<g.length&&g[I].point.x<D;)E.length>0&&E[E.length-1]===g[I].identifier?E.pop():E.push(g[I].identifier),I++;if(E.push(m.identifier),w==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(w==="nonzero"){let N=!0,_=null,R=null;for(let V=0;V<E.length;V++){let U=E[V];y[U]&&(N?(R=y[U].isCW,N=!1,_=U):R!==y[U].isCW&&(R=y[U].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),x=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>x&&(x=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}d<=w&&(d=w+1),u>=O&&(u=O-1),y.length&&p.push({curves:m.curves,points:y,isCW:_N.isClockWise(y),identifier:c++,boundingBox:new NN(new gn(O,v),new gn(w,x))})});let f=p.map(m=>l(m,p,u,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let x=new DN;x.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=p[w.identifier],S=new pv;S.curves=O.curves,x.holes.push(S)}}),h.push(x)}}),h}};var lh=!1,hv,ch=new Promise(i=>{hv=i}),fv=!1;var Yu;function mv(){if(lh=!0,fv)return;if(Yu)return Yu;async function i(){let e=await import("./opentype.js");hv(e),fv=!0}return Yu=i(),Yu}var vl=class{async load(t,e,r=()=>{}){let{load:o}=await ch;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await ch;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function LN(i){return await(await fetch(i)).arrayBuffer()}var BN=new vl;async function uh(i){let t,e,r=!1;if(i.url?(t=await LN(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(lh){let o=await BN.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as VN,LineCurve as zN,QuadraticBezierCurve as GN}from"three";function FN(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var Ku=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=uh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=uh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,d=String.fromCharCode(r[c].unicode),p=n[s];if(FN(u,p)||l)a.push({char:d,index:u,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],x=!1;for(;!x;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(x=!0),s>e.length&&(x=!0);a.push({char:d,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
|
|
2286
|
-
`,e),
|
|
2287
|
-
`:
|
|
2288
|
-
`)B=
|
|
2289
|
-
`)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Xu,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=jN(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function jN(i){if(i.length){let t=i[0];if(t instanceof zN)return t.v1;if(t instanceof VN||t instanceof GN)return t.v0}}var dh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Sl=class extends dh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=po(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var yv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Sv}from"three";var Qu=1e3,gv=512*Qu;function UN(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var xv="https://hooks.spline.design",kN=`${xv}/events?hashFile=`,qre=`${xv}/`,Zu=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ko();this.reconnectWaitFor=Qu;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Qu,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Qu,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&UN(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(kN+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>gv&&(this.reconnectWaitFor=gv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return Zc.defaultParameterValueByType(r.data.type)}}};var bv=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],HN=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Xo=[],ed=[];for(let i=1;i<=8;i++)for(let t=0;t<bv.length;t++){let e=bv[t];Xo.push(e/Math.pow(2,8-i)),ed.push(HN[t]+i)}var Ju=[32,2e3],ph=Xo.filter((i,t)=>Xo[t]>Ju[0]&&Xo[t]<Ju[1]),vv=ed.filter((i,t)=>Xo[t]>Ju[0]&&Xo[t]<Ju[1]);var td=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,d;if(o==="music"||o==="voice"){let h=o==="voice"?ph:Xo,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let x=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(x>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?ph:Xo,d=o==="voice"?vv:ed}else c=Array.from(r),u=c.map((h,m)=>l*m),d=u.map(h=>`${h.toFixed(2)} Hz`);let p=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(p),frequencies:u,labels:d}}};var WN="gpt-4o-realtime-preview-2024-12-17",qN=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function $N(i){try{return(await(await fetch(qN()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var fh=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return td.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},wl=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=ko();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=bb.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await $N(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new fh(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${WN}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function wv(i){return"variable_"+i}var hh=class extends Hu{constructor(e){super();this.shared=e}create(e){return new ns(e,this.shared)}},xn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Sl(!0);this.geometryCache2=new Sl(!1);this.imageHolderCache=new hh(this);this.thisContext={scene:yv,shared:this};this.deletedMaterial=new mn(Tt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new fr(ou.emptyImage,this);this.deletedVideo=new fr(la.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new mn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new hn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new fr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new fr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new fr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Ci(e.r,e.g,e.b,e.a):this.colors[t]=new Ci(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ct(0,0,0,0))}else return"a"in t?new Ct(t.r,t.g,t.b,t.a):new Ct(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof yn)return e;{let r=new yn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof yn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Ku(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof yn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(wv(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(wv(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(u,l,c)});let d=this.materials[s];d&&d.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*Sv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),De.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let d=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(d.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Sv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Ze.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(nt.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof wl?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(nt.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new wl(e,t,this),!1):(this.userAPIs[t]=new Nu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new Zu(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},Pv=new xn(Sr.emptyData());var nr=class extends Mt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Zg(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Le(e.path,["material"])&&this.material instanceof ir)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Le(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&ql(this.material).forEach(e=>{e instanceof ir&&(e instanceof mn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as YN,Matrix4 as yh,Vector3 as Mv,Vector4 as gh}from"three";var Ov=new Mv,Tv=new gh,Cv=new gh,KN=new Mv,Av=new yh,et=class extends nr{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new yh().fromArray(r.bindMatrix),this.bindMatrixInverse=new yh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof YN&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof xn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return js.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return js.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=po(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&cl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=po(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof xt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new gh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Tv.fromBufferAttribute(n.attributes.skinIndex,e),Cv.fromBufferAttribute(n.attributes.skinWeight,e),Ov.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Cv.getComponent(a);if(s!==0){let l=Tv.getComponent(a);Av.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(KN.copy(Ov).applyMatrix4(Av),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function ZN(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new bh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new bh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Iv(n,3))}function JN(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new bh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Iv(r,3))}function ss(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof ir)||i.material.getLayersOfType("outline").length===0)return;i instanceof et&&i.is2DAndNoDepth?JN(i):ZN(i)}function ls(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[xh.seededRandom(o),xh.seededRandom(o+1e4),xh.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new QN(r,3))}var xo=new eD,Pl=new rD;function Nv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var bn=class extends et{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new tD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=xt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ss(this),ls(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Mt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ev,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;xo.setFromBufferAttribute(r),xo.getCenter(o),e.boundingSphere.radius=o.distanceTo(xo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xo.getSize(Pl),this.hasNonUniformScale&&Pl.divide(this.scale);let n={width:Pl.x,height:Pl.y,depth:Pl.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;xo.min.set(e[0],e[2],e[4]),xo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(xo.min.applyMatrix4(this.shearScaleInv),xo.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Ev);let o=r.boundingSphere.center;xo.getCenter(o),r.boundingSphere.radius=o.distanceTo(xo.max)}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as oD,Vector3 as Sn}from"three";var Dv=-1,iD=1,_v={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Rv={polygon_center:0,edge:1,vertex:2},Ol=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ce=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Dv)*(e-r)/(iD-Dv)+r},nD=new Sn,rd=new Sn,aD=new Sn,sD=new Sn;function cs(i,t){let e=aD.fromArray(i),r=sD.fromArray(t);rd.copy(r).sub(e);let o=rd.length();return rd.normalize().multiplyScalar(o*.5),nD.copy(e).add(rd).toArray()}var Tr=new oD,od=new Sn,id=new Sn,vn=new Sn;function Lv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(od.fromArray(i.index.array,e*3),Tr.setFromAttributeAndIndices(i.attributes.position,od.x,od.y,od.z),Tr.getNormal(id),Tr.getMidpoint(vn),!(isNaN(vn.x)||isNaN(vn.y)||isNaN(vn.z))){let{a:r,b:o,c:n}=Tr,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),d=n.distanceTo(r),p=cs(a,s),f=cs(s,l),h=cs(l,a),m=[c,u,d],y=Math.max(...m),x=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Tr.getMidpoint(vn).toArray();y===c&&!x&&(v=[f,h,h],w=p),y===u&&!x&&(v=[p,h,h],w=f),y===d&&!x&&(v=[p,f,f],w=h),x&&(v=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Tr.getNormal(id).toArray()})}return t}function Bv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Tr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Tr.getNormal(id),Tr.getMidpoint(vn);let o=Tr.a.toArray(),n=Tr.b.toArray(),a=Tr.c.toArray();t.push({vertices:[o,n,a],faceCenters:[cs(o,n),cs(n,a),cs(a,o)],midpoint:vn.toArray(),norm:id.toArray()})}return t}var lD=4,cD=.5,vh=i=>.5*(1-Math.cos(i*Math.PI)),Sh=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let x=0;x<4095+1;x++)this.perlin[x]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,d,p=0,f=.5,h,m,y;for(let x=0;x<lD;x++){let v=o+(n<<4)+(a<<8);u=vh(s),d=vh(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=d*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=d*(y-m),h+=vh(c)*(m-h),p+=h*f,f*=cD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Vv=Sh;import{Vector3 as uD,Matrix4 as dD,Ray as pD}from"three";var zv=new uD,Gv=new dD,Fv=new pD;function jv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Ii=class extends et{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Gv.copy(o).invert(),Fv.copy(e.ray).applyMatrix4(Gv),Fv.intersectBox(this.singleBBox,zv))){let n=zv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Zt=1e-4,bo,Wv,qv,$v,kv=new hr,Hv=new hr;Ru.then(i=>{bo=i,Wv=[bo.get_face_center,bo.get_edge_midpoint,bo.get_vertex_position],qv=[bo.get_face_normal,bo.get_edge_normal,bo.get_vertex_normal],$v=[bo.face_count,bo.edge_count,bo.vertex_count]});var hD=new wn,mD=new wn,Ei=new hr,nd=new hr,Tl=new hr,Ph=new hr,yD=new hr,gD=new hr;var Oh=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Vv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=sx((0,ad.default)(t.seed)):this.noise=ax((0,ad.default)(t.seed))}},Ni=class extends xa(fD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Br&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Br&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Br(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Br(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Oh(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*Uv.DEG2RAD,n=r.end*Uv.DEG2RAD,a=o-n,s=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new hr(0,0,1);break;case"y":l=new hr(0,1,0);break;default:case"x":l=new hr(1,0,0);break}let c=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),d=Ol(c.strength,this.parameters.randomness);for(let[p,f]of this.children.entries()){let h=p*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=p+1;f.scale.x=r.scale[0]+d(y,Ce(m,c.scale[0]))||Zt,f.scale.y=r.scale[1]+d(y,Ce(m,c.scale[1]))||Zt,f.scale.z=r.scale[2]+d(y,Ce(m,c.scale[2]))||Zt,f.position.setScalar(0);let x=a/e.count*p-o;switch(r.axis){case"x":f.rotation.set(0,x,0);break;case"y":f.rotation.set(0,0,x);break;case"z":f.rotation.set(x,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+d(y,Ce(m,c.position[0])),f.position.y+=r.position[1]+d(y,Ce(m,c.position[1])),f.position.z+=r.position[2]+d(y,Ce(m,c.position[2]));let v=d(y,Ce(m,c.rotation[0])),w=d(y,Ce(m,c.rotation[1])),O=d(y,Ce(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Ol(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,d=a.noise(u,u,u),p=l+1,f=s(p,Ce(d,n.rotation[0])),h=s(p,Ce(d,n.rotation[1])),m=s(p,Ce(d,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(p,Ce(d,n.scale[0]))||Zt,c.scale.y=1+(r.scale[1]-1)*l+s(p,Ce(d,n.scale[1]))||Zt,c.scale.z=1+(r.scale[2]-1)*l+s(p,Ce(d,n.scale[2]))||Zt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(p,Ce(d,n.position[0])),c.position.y=r.position[1]*l+s(p,Ce(d,n.position[1])),c.position.z=r.position[2]*l+s(p,Ce(d,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Ol(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new hr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let d=0;d<o.count[1];d++)for(let p=0;p<o.count[2];p++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ce(f,n.scale[0]))||Zt,h.scale.y=1+s(r,Ce(f,n.scale[1]))||Zt,h.scale.z=1+s(r,Ce(f,n.scale[2]))||Zt;let m=s(r,Ce(f,n.rotation[0])),y=s(r,Ce(f,n.rotation[1])),x=s(r,Ce(f,n.rotation[2]));h.rotation.set(m,y,x),h.position.x=o.size[0]*u-c.x+s(r,Ce(f,n.position[0])),h.position.y=o.size[1]*d-c.y+s(r,Ce(f,n.position[1])),h.position.z=o.size[2]*p-c.z+s(r,Ce(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let d=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),p=this.children[r++];p.scale.x=1+s(r,Ce(d,n.scale[0]))||Zt,p.scale.y=1+s(r,Ce(d,n.scale[1]))||Zt,p.scale.z=1+s(r,Ce(d,n.scale[2]))||Zt;let f=s(r,Ce(d,n.rotation[0])),h=s(r,Ce(d,n.rotation[1])),m=s(r,Ce(d,n.rotation[2]));p.rotation.set(f,h,m),p.position.x=o.size[0]*l+s(r,Ce(d,n.position[0])),p.position.y=-o.size[1]*c+s(r,Ce(d,n.position[1])),p.position.z=-o.size[2]*u+s(r,Ce(d,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Ol(n.strength,this.parameters.randomness);if(!r.object){for(let[,p]of this.children.entries())p.position.set(0,0,0),p.scale.setScalar(1),p.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ii)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let p=Math.round(l.length*r.count/100);this._updateCount(p)}else{let p=this.objectForSample.geometry.getAttribute("position");if(!p||isNaN(p.count)||p.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new lu(this.objectForSample).build(),u=_v[r.axis],d=this.children;c.setRandomGenerator((0,ad.default)(this.object.uuid+r.seed));for(let[p,f]of d.entries()){let h=p*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=p+1,x=s(y,Ce(m,n.rotation[0])),v=s(y,Ce(m,n.rotation[1])),w=s(y,Ce(m,n.rotation[2]));r.spreadType==="random"?c.sample(Tl,Ph):(l.length&&(Tl.fromArray(l[p].pos),Ph.fromArray(l[p].norm)),this.objectForSample instanceof bn&&Tl.applyMatrix4(hD.copy(this.objectForSample.matrixWorld).invert())),Tl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Tl),Ei.fromArray(u);let O=r.align==="normal"?Ph:this.object.getWorldDirection(gD),S=nd.fromArray(r.position);nd.x+=s(y,Ce(m,n.position[0])),nd.y+=s(y,Ce(m,n.position[1])),nd.z+=s(y,Ce(m,n.position[2]));let T=Math.acos(O.dot(Ei)),M=yD.crossVectors(Ei,O).normalize(),g=mD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),E=D.clone().cross(O).normalize(),I=new wn().makeBasis(D,O,E),N=new hr(Ei.y,Ei.z,Ei.x).normalize(),_=N.clone().cross(Ei).normalize(),R=new wn().makeBasis(N,Ei,_).invert(),V=new wn().multiplyMatrices(I,R);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+x,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ce(m,n.scale[0]))||Zt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ce(m,n.scale[1]))||Zt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ce(m,n.scale[2]))||Zt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof bn){let a=this.objectForSample,s=Rv[e],l=$v[s],c=Wv[s],u=qv[s],d=l(a.subdivPointerNew);for(let p=0;p<=d-1;p++){let f=c(a.subdivPointerNew,p),h=u(a.subdivPointerNew,p);kv.fromArray(f).applyMatrix4(a.matrixWorld),Hv.fromArray(h),o(kv.toArray(),Hv.toArray())}}else(this.objectForSample.geometry.index?Lv(this.objectForSample.geometry):Bv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=Eo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof Mt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new wn,this.hiddenMatrix=new wn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as ZR,Vector3 as JR,Matrix4 as eL,Box3 as tL,MeshBasicMaterial as rL,Skeleton as oL}from"three";import{Camera as ID,OrthographicCamera as ED,PerspectiveCamera as ND,Vector3 as Xr,Object3D as Qv,Quaternion as DD,Matrix4 as _D}from"three";import{Camera as PD,LineSegments as OD,BufferGeometry as TD,LineBasicMaterial as CD,Color as Ch,Vector3 as AD,Float32BufferAttribute as Yv}from"three";import{BoxGeometry as xD}from"three";var vo=i=>{var t;return t=class extends i{},t.geometryHelper=new xD(30,30,30),t};import{Ray as bD,Sphere as vD,Matrix4 as SD,Vector3 as Yo}from"three";var sd=new bD,Th=new vD,Xv=new SD,So=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Th.copy(a.boundingSphere),Th.applyMatrix4(s),e.ray.intersectsSphere(Th)===!1||(Xv.copy(s).invert(),sd.copy(e.ray).applyMatrix4(Xv),a.boundingBox!==null&&sd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,d,p=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(p.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=p.getX(m),u=p.getX(m+1),d=p.getX(m+2),l=x(i,e,sd,f,c,u,d),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new Yo,S=new Yo,T=new Yo,M=new Yo,g=2,E=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=E*E,N=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let R=N,V=_-1;R<V;R+=g){if(O.fromBufferAttribute(w,R),S.fromBufferAttribute(w,R+1),sd.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function x(v,w,O,S,T,M,g){let D=new Yo,E=new Yo,I=new Yo,N=new Yo,_=new Yo;if(D.fromBufferAttribute(S,T),E.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,E,I,!1,N)===null)return null;_.copy(N),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var ld=new AD,Cr=new PD,Ah=class extends OD{constructor(e){let r=new TD,o=new CD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Ch(15711266),c=new Ch(15711266),u=new Ch(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",c),d("p","n2",c),d("p","n3",c),d("p","n4",c),d("u1","u2",u),d("u2","u3",u),d("u3","u1",u);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new Yv(n,3)),r.setAttribute("color",new Yv(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Cr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;$r("n1",r,e,Cr,-n,-a,s),$r("n2",r,e,Cr,n,-a,s),$r("n3",r,e,Cr,-n,a,s),$r("n4",r,e,Cr,n,a,s);let l=s;$r("f1",r,e,Cr,-n,-a,l),$r("f2",r,e,Cr,n,-a,l),$r("f3",r,e,Cr,-n,a,l),$r("f4",r,e,Cr,n,a,l);let c=l,u=.5;$r("u1",r,e,Cr,n*.7*u,a*1.1,c),$r("u2",r,e,Cr,-n*.7*u,a*1.1,c),$r("u3",r,e,Cr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function $r(i,t,e,r,o,n,a){ld.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],ld.x,ld.y,ld.z)}}var cd=class extends vo(Ah){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){So(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Kv,BoxGeometry as MD}from"three";var ud;(t=>t.is=e=>"objectHelper"in e)(ud||(ud={}));var Ar=(i,t)=>class extends Sa(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Kv&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof MD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Kv&&(n.visible=!1)}}};var dd=790,us=new Xr,Mh=new Xr,Ih=new DD,Eh=new Xr,Cl=new Xr,Nh=new Xr,Ko=class extends Ar(ID,cd){constructor(e="",r={...tn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=yi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new _D,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new ED(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new ND(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Xr(e,r,o)),super.lookAt(e),this.getWorldPosition(us),this.targetOffset=us.distanceTo(e)}getTarget(e=new Xr){return this.getWorldDirection(Mh),this.getWorldPosition(us),Mh.multiplyScalar(this.targetOffset),e.copy(us).add(Mh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(us),us.distanceTo(e)}updateUp(){this.getWorldQuaternion(Ih),Eh.set(0,0,1).applyQuaternion(Ih),Cl.copy(Qv.DEFAULT_UP),this.isUpVectorFlipped&&Cl.negate(),Cl.applyQuaternion(Ih),Nh.copy(Qv.DEFAULT_UP).projectOnPlane(Eh),this.angleOffsetFromUp=Nh.angleTo(Cl),this.angleOffsetFromUp*=Nh.cross(Cl).dot(Eh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Xr),n=e.getWorldDirection(new Xr).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Xr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Xr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-dd*.5*n,this.right=dd*.5*n,this.top=dd*.5*(1/a),this.bottom=-dd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Qn(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as dae}from"three";import{BufferGeometry as Zv,Matrix4 as Jv,Float32BufferAttribute as RD}from"three";var ds=new Jv,LD=new Jv;var ar=class extends nr{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Zv;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof ar&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof Mt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ds.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Pr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Pr.transformMeshSet(a.booleanMeshSetAddress,ds),a.booleanMatrixInvOld.copy(ds).invert(),a.booleanWasTransformed=!1}else a instanceof ar&&a.needsTransformForDownstream===!0?(Pr.transformMeshSet(a.booleanMeshSetAddress,ds),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Pr.transformMeshSet(a.booleanMeshSetAddress,LD.multiplyMatrices(ds,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ds).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Pr.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new RD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Pr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Zv,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Pr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ss(this),ls(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as BD}from"three";var e1;(t=>{function i(e){return De.is(e)&&e instanceof BD}t.is=i})(e1||(e1={}));var ps=(i,t)=>class extends Ar(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Di=i=>i instanceof Mt,Al=i=>i!==null&&i instanceof ar;var Ml=i=>ud.is(i);import{Group as UD}from"three";import{AxesHelper as VD,Group as zD,Quaternion as GD,Vector3 as Dh}from"three";var FD=new Dh(1,1,1),t1=new Dh,jD=new Dh,r1=new GD,Mr=class extends vo(VD){constructor(e,r=15){super(r);this.object=e;this.dummy=new zD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){So(this.object,Mr.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(t1,r1,jD),this.matrix.compose(t1,r1,FD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var _i=class extends Ar(UD,Mr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as kD}from"three";var fs=class extends Ar(kD,Mr){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as N_,Fog as D_,HemisphereLight as __}from"three";import{ShaderChunk as Il}from"three";var HD=i=>`
|
|
2284
|
+
`),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
|
|
2285
|
+
`)}return r}};import{VideoTexture as dE,Texture as pE}from"three";var $u=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var uh=class extends $u{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ch;function uv(i){return typeof i=="string"?i:(ch||(ch=new uh),ch.load(i))}var Xu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Yu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ls=class extends Xu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=uv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new dE(this.img,void 0,e,e):a=new pE(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var hr=class extends ls{};import{Vector2 as $o,Vector3 as go,Vector4 as Ku}from"three";function Ut(i,t){return t.color(i)}function dv(i,t){switch(i.type){case"fresnel":return mE(i,t);case"gradient":return yE(i,t);case"depth":return gE(i,t);case"normal":return xE(i,t);case"noise":return bE(i,t);case"rainbow":return vE(i,t);case"toon":return SE(i,t);case"outline":return wE(i,t);case"transmission":return PE(i,t);case"color":return hE(i,t);case"pattern":return OE(i,t)}}function fE(i){return{type:i.type}}function qr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...fE(i),alpha:n,mode:r,isMask:o}}function hE(i,t){return{...qr(i,t),color:Ut(i.color,t)}}function mE(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...qr(i,t),color:Ut(a,t),bias:e,scale:r,intensity:o,factor:n}}function yE(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...qr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Ku(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new $o(...s),morph:new $o(...l),angle:a}}function gE(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=i;return{...qr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new go(...s),direction:l?new go(...l):new go(1,0,0),colors:c.map(d=>d!==void 0?new Ku(d[0],d[1],d[2],d[3]):new Ku(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function xE(i,t){let{cnormal:e}=i;return{...qr(i,t),cnormal:new go(e[0],e[1],e[2])}}function bE(i,t){return{...qr(i,t),scale:i.scale,move:i.move,fA:new $o(...i.fA),fB:new $o(...i.fB),size:new go(...i.size),distortion:new $o(...i.distortion),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),colorC:Ut(i.colorC,t),colorD:Ut(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function vE(i,t){return{...qr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new go(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new go(...i.offset)}}function SE(i,t){return{...qr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Ku(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new go(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ut(i.shadowColor,t),offset:new go(...i.offset)}}function wE(i,t){return{...qr(i,t),outlineColor:Ut(i.outlineColor,t),contourColor:Ut(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new go(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function PE(i,t){return{...qr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function OE(i,t){return{...qr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new $o(...i.offset),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),frequency:new $o(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new $o(...i.vertical),horizontal:new $o(...i.horizontal),sides:i.sides}}var Ai=class extends At{};import{MathUtils as TE,Vector4 as CE}from"three";var AE={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ME={depth:["colors"]};function IE(i,t,e){if(t==="isMask")return!0;let r=AE[i.type],o=ME[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function dh(i,t){if(Array.isArray(t)){if(!Array.isArray(i)||i.length!==t.length)return!1;for(let[o,n]of t.entries()){let a=i[o];if(typeof n=="string"||typeof n=="number"&&typeof a=="string")return!0}return!1}let e=typeof i=="string",r=typeof t=="string";return e!==r||e&&r}function Pl(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof hr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(Se(n.rotation??0,t)??0)*TE.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];if("repeat"in n){let l=n.repeat;dh(e.data.texture.repeat,l)&&(o=!0),s.repeat=cs(l,t).map((c,u)=>typeof l[u]=="string"?1/c:c)}if("offset"in n){let l=n.offset;dh(e.data.texture.offset,l)&&(o=!0),s.offset=cs(l,t).map((c,u)=>typeof l[u]=="string"?-c:c)}if("rotation"in n){let l=e.data.texture.rotation,c=n.rotation??0;(l===void 0||dh(l,c))&&(o=!0),s.rotation=Se(c,t)??0}s.updateMatrix()}return o}function pv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(ph(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Ti))switch(o=o||IE(e,n,a),s.constructor){case qe:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case rr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ai?s.value=new At(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case ct:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ft:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Kt:{Pl(a,t,e);break}case Wr:{s.value=a.map(l=>new CE(...l));break}default:{s.value=a;break}}}return o}var Ii=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Se=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Mi=(i,t)=>(i||(i=new yn),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i.z=Se(i.z,t)??0,i),Xo=(i,t)=>(i||(i=new $r),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i),cs=(i,t)=>{let e=i.map(r=>Se(r,t)??0);return[e[0],e[1]]},Ni=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)ph(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Qt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Wu(n),l=new qu(cs(r.texture.repeat,o),cs(r.texture.offset,o),Se(r.texture.rotation??0,o)),c=new se(r.crop?1:0),u=new Re(r.projection??0),p=new Re(["x","y","z"].indexOf(r.axis)??0),d=new Re(r.side??0),f=new ct(r.size?new $r(...cs(r.size,o)):new $r(100,100)),h=new se(r.blending??0),m=new se(Ii(r.alpha,o)),y=new Re(r.mode??0),b=new ut(r.isMask??!1),v=new Ci(a,s,c,u,p,d,f,h,l,m,y,b),w=new ke(v.calpha,"f");return new it(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},v,y,w,b,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new fn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ii(r.alpha,o)),l=new Re(r.mode??0),c=new ut(r.isMask??!1),u=new se((Se(r.texture.rotation??0,o)??0)*NE.DEG2RAD),p=new es(a,s,l,c,u),d=new ke(p.calpha,"f");return new it(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Ft(new yn(...r.offset.map(b=>Se(b,o)??0))),a=new se(Se(r.scale,o)??10),s=new se(Se(r.intensity,o)??8),l=new se(Se(r.movement,o)??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),p=new se(Se(r.smoothness,o)??.5),d=new se(Se(r.seed,o)??0),f=new se(Se(r.highCut,o)??1),h=new se(Se(r.lowCut,o)??0),m=new Re(Se(r.quality,o)??1),y=new ss(s,l,n,u,p,d,f,h,m,a,c);return new Ol(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return _E(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let p=s[c];if(typeof u=="string"||typeof u=="number"&&typeof p=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):pv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Pl(o.props,r.shared,this)||n:!0;return n}dispose(){if(EE(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof hr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},it=class extends Ni{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Ol=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Qt=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ii(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ii(o.alphaOverride,n)),p;if(!o.visible)a=new Wo,p={};else if(o.category==="lambert"){a=new bl;let d=new qe(n.color(o.emissive)??0),f=new ut(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new wl;let d=new se(o.shininess??30),f=new qe(n.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Sl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ut(o.occlusion??!0);p={roughness:d,metalness:f,reflectivity:h,occlusion:m},a.roughness=d,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new vl;let d=new se(o.shininess??30),f=new qe(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ut(o.occlusion??!0);p={shininess:d,specular:f,occlusion:h},a.shininess=d,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new Qt(e,r,o,a,p,n)}get category(){return this.node.category}};function EE(i){let t=i instanceof Ni?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Tr(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ut(i.isMask??!1)}}function DE(i,t,e,r,o){switch(i.type){case"color":{let n=new qe(r.color??gt),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new qe(r.color??16777215),a=new se(Se(r.bias,o)??.1),s=new se(Se(r.scale,o)??1),l=new se(Se(r.intensity,o)??2),c=new se(Se(r.factor,o)??1),u=Tr(r),p=new xl(n,a,s,l,c,u.alpha,u.mode,u.isMask),d=new ke(p.calpha,"f");return new it(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let n=new se(Se(r.filmThickness,o)??30),a=new se(Se(r.movement,o)??0),s=new Ft(Mi(r.wavelengths,o)),l=new se(Se(r.noiseStrength,o)??0),c=new se(Se(r.noiseScale,o)??1),u=new Ft(Mi(r.offset,o)),p=Tr(r),d=new is(n,a,s,l,c,u,p.alpha,p.isMask),f=new ke(d.calpha,"f");return new it(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let n=new se(Se(r.thickness??10,o)),a=new se(Se(r.ior??1.5,o)),s=new se(Se(r.roughness??.5,o)),l=Me.transmissionSize,c=Me.transmissionRenderTarget,u=Me.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new ct(d/p,1):new ct(1,p/d),h=Tr(r),m=new as(n,a,s,l,c,u,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new Wr(r.colors.length,r.colors):(a=new Wr(10,new us(0,0,0,1)),a.value[1]=new us(1,1,1,1));let s;r.steps?s=new Hr(r.steps.length,r.steps):(s=new Hr(10,1),s.value[0]=0);let l=new Ft(Mi(r.source??new yn(0,0,0),o)),c=new ut(r.isWorldSpace??!0),u=new se(Se(r.noiseStrength??0,o)),p=new se(Se(r.noiseScale??1,o)),d=new rr(r.shadowColor),f=new Ft(Mi(r.offset??new yn(0,0,0),o)),h=Tr(r),m=new ns(n,a,s,l,c,u,p,d,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new qe(r.outlineColor??16777215),a=new qe(r.contourColor??16777215),s=new se(Se(r.outlineWidth??.1,o)),l=new se(Se(r.contourWidth??.1,o)),c=new se(Se(r.outlineThreshold??.1,o)),u=new se(Se(r.contourThreshold??.1,o)),p=new se(Se(r.outlineSmoothing??.1,o)),d=new se(Se(r.contourFrequency??.1,o)),f=new Ft(Mi(r.contourDirection??new yn(0,1,0),o)),h=new ut(r.positionalLines??!1),m=new ut(r.compensation??!0),y=Me.normalRenderTarget,b=Me.normalRenderTargetDepth,v=Me.pixelRatioNode,w=Me.resolution,O=Tr(r),S=new rs(n,a,s,l,c,u,p,d,f,h,m,w,y,b,v,O.alpha),T=new ke(S.calpha,"f");return new it(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s=new se(Se(r.near,o)??50),l=new se(Se(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),p=new Ft(Mi(r.origin,o)),d=new Ft(Mi(r.direction,o)),f;r.colors?f=new Wr(r.colors.length,r.colors):(f=new Wr(2,new us(0,0,0,1)),f.value[1]=new us(1,1,1,1));let h;r.steps?h=new Hr(r.steps.length,r.steps):(h=new Hr(2,1),h.value[0]=0);let m=Tr(r),y=new Za(n,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new ke(y.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:f,steps:h,...m},y,m.mode,b,m.isMask,o)}case"noise":{let n=new se(Se(r.scale,o)??1),a=new Ft(Mi(r.size??new yn(100,100,100),o)),s=new se(Se(r.move,o)??1),l=new ct(Xo(r.fA??new $r(1.7,9.2),o)),c=new ct(Xo(r.fB??new $r(8.3,2.8),o)),u=new ct(Xo(r.distortion??new $r(1,1),o)),p=new rr(r.colorA),d=new rr(r.colorB),f=new rr(r.colorC),h=new rr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),b=new se(Se(r.highCut,o)??1),v=new se(Se(r.lowCut,o)??0),w=new se(Se(r.smoothness,o)??.5),O=new se(Se(r.seed,o)??.5),S=new Re(r.quality??1),T=Tr(r),M=new ts(n,a,s,l,c,u,p,d,f,h,T.alpha,m,T.isMask,y,b,v,w,O,S),g=new ke(M.calpha,"f");return new it(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:b,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Ft(r.cnormal??new yn(1,1,1)),a=Tr(r),s=new Ya(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ut(r.smooth??!1),s;r.colors?s=new Wr(r.colors.length,r.colors):(s=new Wr(10,new us(0,0,0,1)),s.value[1]=new us(1,1,1,1));let l;r.steps?l=new Hr(r.steps.length,r.steps):(l=new Hr(10,1),l.value[0]=0);let c=new ct(Xo(r.offset??new $r(0,0),o)),u=new ct(Xo(r.morph??new $r(0,0),o)),p=new se(Se(r.angle??0,o)),d=Tr(r),f=new Ja(n,a,s,l,c,u,p,d.alpha,d.isMask),h=new ke(f.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(Se(r.blending??0,o)),c=new ct(Xo(r.offset,o)),u=new rr(r.colorA),p=new rr(r.colorB),d=new ct(Xo(r.frequency??new $r(10,10),o)),f=new se(Se(r.size??.5,o)),h=new se(Se(r.variation??0,o)),m=new se(Se(r.smoothness??.5,o)),y=new se(Se(r.zigzag??0,o)),b=new se(Se(r.rotation??0,o)),v=new ct(Xo(r.vertical??new $r(0,1),o)),w=new ct(Xo(r.horizontal??new $r(0,1),o)),O=new Re(r.sides??6),S=Tr(r),T=new os(n,a,s,l,c,u,p,d,f,h,m,y,b,v,w,O,S.alpha,S.isMask),M=new ke(T.calpha,"f");return new it(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:f,variation:h,smoothness:m,zigzag:y,rotation:b,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new qe(1,0,0,1),a=Tr(r),s=new hn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function _E(i,t,e,r){let o=dv(e,r);return DE(e,i,t,o,r)}function ph(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Se(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ii(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function ir(i,t,e,r,o,n,a=[]){let s=e;for(let l of a)l in s&&(s=s[l]);for(let l of i)l in s&&o.getVariable(s[l],["material",n,"layer",r,...a,String(l)]);for(let l of t)l in s&&s[l].forEach((c,u)=>{o.getVariable(c,["material",n,"layer",r,...a,String(l),u===0?"x":u===1?"y":"z"])})}function Qu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var nr=class extends LE{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Zu=class extends nr{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},gn=class extends nr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,Xe.startContext(this),this.reset0(e,r),Xe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new Zu(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){Xe.startContext(this),(this.data!==e||o)&&this.reset0(e,r),Xe.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Ct.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ni.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=Qu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=Qu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=Qu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3],u=e[4];if(l instanceof RE){let p=l[c],d;typeof p=="number"?d=Number(r):p.isVector2&&(d=p.toArray(),u==="x"?d[0]=Number(r):u==="y"&&(d[1]=Number(r))),Pl({[c]:d},o.shared,s);return}(c==="x"||c==="y"||c==="z")&&l.isVector3||(c==="x"||c==="y")&&l.isVector2?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"?o.data.displacementType==="noise"?ir(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],o.data,o.id,e.shared,this.uuid):ir(["intensity"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="depth"?ir(["near","far"],["origin","direction"],o.data,o.id,e.shared,this.uuid):o.data.type==="fresnel"?ir(["bias","scale","intensity","factor"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="rainbow"?ir(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],o.data,o.id,e.shared,this.uuid):o.data.type==="noise"?ir(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],o.data,o.id,e.shared,this.uuid):o.data.type==="pattern"?ir(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],o.data,o.id,e.shared,this.uuid):o.data.type==="outline"?ir(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],o.data,o.id,e.shared,this.uuid):o.data.type==="toon"?ir(["noiseStrength","noiseScale"],["offset","source"],o.data,o.id,e.shared,this.uuid):o.data.type==="transmission"?ir(["roughness","thickness","ior"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="texture"||o.data.type==="video"?(ir([],["size"],o.data,o.id,e.shared,this.uuid),ir(["rotation"],["repeat","offset"],o.data,o.id,e.shared,this.uuid,["texture"])):o.data.type==="gradient"?ir(["angle"],["offset","morph"],o.data,o.id,e.shared,this.uuid):o.data.type==="matcap"&&ir(["rotation"],[],o.data,o.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Qt),this.lightLayer===void 0&&(this.lightLayer=new Qt(0,"",{...St.defaultData("light","phong"),visible:!1},new Wo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Qt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof it&&s.color instanceof Ci&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(Xe.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=Qu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ii(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ii(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);Xe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof it?r.color.mask=void 0:r instanceof Qt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof it&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Qt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof it&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof it),r=this.layers.findIndex(o=>o instanceof Qt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof it){if(a.isMask.value)continue;o=new Xa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ke("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Qt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof it){if(n.isMask.value)continue;e=new Xa(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ol);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new qa;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof it){let r=e.params.texture;if(r instanceof fn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(nr.prototype,{properties:{get:function(){return this.fragment.properties}}});var xn=class extends gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var fv=new Map;function hv(i){if(typeof i=="string")return i;let t=fv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},fv.set(i,t)),t.url}var BE,mv=new Promise(i=>{BE=i});var yv;mv.then(i=>yv=i);var bn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:hv(t),format:"wav"},this.sound=new yv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as VE,Vector2 as vn,Path as gv,Shape as zE,ShapeUtils as GE,Color as FE}from"three";var Ju=class{constructor(){this.type="ShapePath";this.color=new FE;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new gv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,b,v){let w=m.x,O=y.x,S=b.x,T=v.x,M=m.y,g=y.y,D=b.y,N=v.y,I=(T-S)*(M-D)-(N-D)*(w-S),E=(O-w)*(M-D)-(g-M)*(w-S),_=(N-D)*(O-w)-(T-S)*(g-M),L=I/_,V=E/_;if(_===0&&I!==0||L<=0||L>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?b:v,m,y),r.loc===e.ORIGIN){let B=U===0?b:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?b:v,m,y),r.loc===e.ORIGIN){let j=q===0?b:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+L*(O-w)).toPrecision(10),B=+(M+L*(g-M)).toPrecision(10);return{x:U,y:B,t:L}}}function n(m,y,b){let v=b.x-y.x,w=b.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===b.x&&m.y===b.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let b=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&b.find(N=>N.t<=D.t+Number.EPSILON&&N.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),v.push(new vn(D.x,D.y)))}}return v}function s(m,y,b){let v=new vn;y.getCenter(v);let w=[];return b.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,b,v,w){(w==null||w==="")&&(w="nonzero");let O=new vn;m.boundingBox.getCenter(O);let S=[new vn(b,O.y),new vn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((E,_)=>E.point.x-_.point.x);let M=[],g=[];T.forEach(E=>{E.identifier===m.identifier?M.push(E):g.push(E)});let D=M[0].point.x,N=[],I=0;for(;I<g.length&&g[I].point.x<D;)N.length>0&&N[N.length-1]===g[I].identifier?N.pop():N.push(g[I].identifier),I++;if(N.push(m.identifier),w==="evenodd"){let E=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:E,for:_}}else if(w==="nonzero"){let E=!0,_=null,L=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(E?(L=y[U].isCW,E=!1,_=U):L!==y[U].isCW&&(L=y[U].isCW,E=!0))}return{identifier:m.identifier,isHole:E,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>b&&(b=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}p<=w&&(p=w+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:GE.isClockWise(y),identifier:c++,boundingBox:new VE(new vn(O,v),new vn(w,b))})});let f=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),h=[];return d.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let b=new zE;b.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=d[w.identifier],S=new gv;S.curves=O.curves,b.holes.push(S)}}),h.push(b)}}),h}};var fh=!1,bv,hh=new Promise(i=>{bv=i}),xv=!1;var ed;function vv(){if(fh=!0,xv)return;if(ed)return ed;async function i(){let e=await import("./opentype.js");bv(e),xv=!0}return ed=i(),ed}var Tl=class{async load(t,e,r=()=>{}){let{load:o}=await hh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await hh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function jE(i){return await(await fetch(i)).arrayBuffer()}var UE=new Tl;async function mh(i){let t,e,r=!1;if(i.url?(t=await jE(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(fh){let o=await UE.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as kE,LineCurve as HE,QuadraticBezierCurve as WE}from"three";function qE(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var td=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=mh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,p=String.fromCharCode(r[c].unicode),d=n[s];if(qE(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let f=d.char,h="",m=[d.state.glyphIndex],y=[],b=!1;for(;!b;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(b=!0),s>e.length&&(b=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
|
|
2286
|
+
`,e),p=e.horizontalAlign===1?u:0,d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,t[0],u),f=this.getLineInitialOffsetY(a,t.length,c,n,e.verticalAlign),h=[],m=t.map(v=>[]),y=t.map(v=>[]);for(let v=0;v<t.length;v++){let w=t[v],O={features:{liga:!0},letterSpacing:e.letterSpacing},S=[];try{S=o.stringToGlyphs(w,O)}catch(N){console.warn(N)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,u);let T=[];try{T=this.reverseLigaturesTable(o,w,S)}catch(N){console.warn(N)}let M=this.computeSpaceWidthForLine(t,v,e,r),g=0,D=S[0];D&&e.horizontalAlign===2&&D.leftSideBearing!==void 0&&(d-=D.leftSideBearing*n),this.font?.forEachGlyph(w,d,f,e.fontSize,O,(N,I,E,_,L)=>{let V=N.index===0?`
|
|
2287
|
+
`:N.unicode?String.fromCharCode(N.unicode):void 0,U=T[g],B=0;if(V===`
|
|
2288
|
+
`)B=p;else if(V===" ")B=M;else{let q=this.createPath(N,n,I,E,e);q&&(B=q.offsetX,h.push(q.path))}if(U.replacements.length===1)y[v].push([I,E]),m[v].push(B);else{let q=U.replacements.map(W=>(o.glyphs.get(W).advanceWidth??0)*n),j=q.reduce((W,ee)=>W+=ee,0),F=q.map(W=>W/j),H=I;for(let W=0;W<F.length;W++){let ee=B*F[W];y[v].push([H,E]),m[v].push(ee),H+=ee}}g++}),f-=a}let b=[];for(let v=0,w=h.length;v<w;v++)b.push(...h[v].toShapes());return{shapes:b,charWidths:m,lineWidths:s,charCoords:y}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,n){return(r===3||r===2)&&o.indexOf(`
|
|
2289
|
+
`)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Ju,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=$E(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function $E(i){if(i.length){let t=i[0];if(t instanceof HE)return t.v1;if(t instanceof kE||t instanceof WE)return t.v0}}var yh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Cl=class extends yh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=fo(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var Sv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Cv}from"three";var rd=1e3,wv=512*rd;function XE(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var Pv="https://hooks.spline.design",YE=`${Pv}/events?hashFile=`,yoe=`${Pv}/`,od=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ko();this.reconnectWaitFor=rd;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=rd,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&XE(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(YE+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>wv&&(this.reconnectWaitFor=wv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return ou.defaultParameterValueByType(r.data.type)}}};var Ov=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],KE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Yo=[],nd=[];for(let i=1;i<=8;i++)for(let t=0;t<Ov.length;t++){let e=Ov[t];Yo.push(e/Math.pow(2,8-i)),nd.push(KE[t]+i)}var id=[32,2e3],gh=Yo.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]),Tv=nd.filter((i,t)=>Yo[t]>id[0]&&Yo[t]<id[1]);var ad=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?gh:Yo,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let b=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(b>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?gh:Yo,p=o==="voice"?Tv:nd}else c=Array.from(r),u=c.map((h,m)=>l*m),p=u.map(h=>`${h.toFixed(2)} Hz`);let d=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}};var QE="gpt-4o-realtime-preview-2024-12-17",ZE=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function JE(i){try{return(await(await fetch(ZE()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var xh=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return ad.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},Al=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=ko();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=Ob.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await JE(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new xh(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${QE}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function Av(i){return"variable_"+i}var bh=class extends Yu{constructor(e){super();this.shared=e}create(e){return new ls(e,this.shared)}},Sn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Cl(!0);this.geometryCache2=new Cl(!1);this.imageHolderCache=new bh(this);this.thisContext={scene:Sv,shared:this};this.deletedMaterial=new xn(Ct.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(lu.emptyImage,this);this.deletedVideo=new hr(da.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs??{}))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks??{}))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new xn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new gn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new hr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new hr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new hr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Ai(e.r,e.g,e.b,e.a):this.colors[t]=new Ai(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new At(0,0,0,0))}else return"a"in t?new At(t.r,t.g,t.b,t.a):new At(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof bn)return e;{let r=new bn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof bn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new td(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof bn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Av(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(Av(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let f=d.root??d;f.uuid===s&&f.onVariableUpdate(u,l,c)});let p=this.materials[s];p&&p.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*Cv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),_e.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Cv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Je.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(at.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof Al?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(at.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Al(e,t,this),!1):(this.userAPIs[t]=new Bu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new od(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},Mv=new Sn(wr.emptyData());var ar=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),ox(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Be(e.path,["material"])&&this.material instanceof nr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(at.drop(e,1),r.material,o);else if(Be(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(at.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&Ql(this.material).forEach(e=>{e instanceof nr&&(e instanceof xn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as tD,Matrix4 as Sh,Vector3 as _v,Vector4 as wh}from"three";var Iv=new _v,Nv=new wh,Ev=new wh,rD=new _v,Dv=new Sh,tt=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new Sh().fromArray(r.bindMatrix),this.bindMatrixInverse=new Sh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof tD&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Sn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ws.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ws.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["geometry"])&&this.updateByPatchedOpGeometry(at.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=fo(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&fl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof bt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new wh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Nv.fromBufferAttribute(n.attributes.skinIndex,e),Ev.fromBufferAttribute(n.attributes.skinWeight,e),Iv.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Ev.getComponent(a);if(s!==0){let l=Nv.getComponent(a);Dv.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(rD.copy(Iv).applyMatrix4(Dv),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function iD(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Oh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Oh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Lv(n,3))}function nD(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Oh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Lv(r,3))}function ds(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof nr)||i.material.getLayersOfType("outline").length===0)return;i instanceof tt&&i.is2DAndNoDepth?nD(i):iD(i)}function ps(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[Ph.seededRandom(o),Ph.seededRandom(o+1e4),Ph.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new oD(r,3))}var xo=new aD,Ml=new lD;function Bv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var wn=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new sD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=bt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ds(this),ps(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,It.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Rv,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;xo.setFromBufferAttribute(r),xo.getCenter(o),e.boundingSphere.radius=o.distanceTo(xo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xo.getSize(Ml),this.hasNonUniformScale&&Ml.divide(this.scale);let n={width:Ml.x,height:Ml.y,depth:Ml.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;xo.min.set(e[0],e[2],e[4]),xo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(xo.min.applyMatrix4(this.shearScaleInv),xo.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Rv);let o=r.boundingSphere.center;xo.getCenter(o),r.boundingSphere.radius=o.distanceTo(xo.max)}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as cD,Vector3 as On}from"three";var Vv=-1,uD=1,zv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Gv={polygon_center:0,edge:1,vertex:2},Il=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ae=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Vv)*(e-r)/(uD-Vv)+r},dD=new On,sd=new On,pD=new On,fD=new On;function fs(i,t){let e=pD.fromArray(i),r=fD.fromArray(t);sd.copy(r).sub(e);let o=sd.length();return sd.normalize().multiplyScalar(o*.5),dD.copy(e).add(sd).toArray()}var Cr=new cD,ld=new On,cd=new On,Pn=new On;function Fv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(ld.fromArray(i.index.array,e*3),Cr.setFromAttributeAndIndices(i.attributes.position,ld.x,ld.y,ld.z),Cr.getNormal(cd),Cr.getMidpoint(Pn),!(isNaN(Pn.x)||isNaN(Pn.y)||isNaN(Pn.z))){let{a:r,b:o,c:n}=Cr,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),p=n.distanceTo(r),d=fs(a,s),f=fs(s,l),h=fs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Cr.getMidpoint(Pn).toArray();y===c&&!b&&(v=[f,h,h],w=d),y===u&&!b&&(v=[d,h,h],w=f),y===p&&!b&&(v=[d,f,f],w=h),b&&(v=[d,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Cr.getNormal(cd).toArray()})}return t}function jv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Cr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Cr.getNormal(cd),Cr.getMidpoint(Pn);let o=Cr.a.toArray(),n=Cr.b.toArray(),a=Cr.c.toArray();t.push({vertices:[o,n,a],faceCenters:[fs(o,n),fs(n,a),fs(a,o)],midpoint:Pn.toArray(),norm:cd.toArray()})}return t}var hD=4,mD=.5,Th=i=>.5*(1-Math.cos(i*Math.PI)),Ch=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<hD;b++){let v=o+(n<<4)+(a<<8);u=Th(s),p=Th(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=p*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=p*(y-m),h+=Th(c)*(m-h),d+=h*f,f*=mD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return d}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Uv=Ch;import{Vector3 as yD,Matrix4 as gD,Ray as xD}from"three";var kv=new yD,Hv=new gD,Wv=new xD;function qv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Ei=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Hv.copy(o).invert(),Wv.copy(e.ray).applyMatrix4(Hv),Wv.intersectBox(this.singleBBox,kv))){let n=kv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Zt=1e-4,bo,Kv,Qv,Zv,Xv=new mr,Yv=new mr;Gu.then(i=>{bo=i,Kv=[bo.get_face_center,bo.get_edge_midpoint,bo.get_vertex_position],Qv=[bo.get_face_normal,bo.get_edge_normal,bo.get_vertex_normal],Zv=[bo.face_count,bo.edge_count,bo.vertex_count]});var vD=new Tn,SD=new Tn,Di=new mr,ud=new mr,Nl=new mr,Mh=new mr,wD=new mr,PD=new mr;var Ih=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Uv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=p0((0,dd.default)(t.seed)):this.noise=d0((0,dd.default)(t.seed))}},_i=class extends Sa(bD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Vr&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Vr&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Vr(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Vr(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Ih(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*$v.DEG2RAD,n=r.end*$v.DEG2RAD,a=o-n,s=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new mr(0,0,1);break;case"y":l=new mr(0,1,0);break;default:case"x":l=new mr(1,0,0);break}let c=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=Il(c.strength,this.parameters.randomness);for(let[d,f]of this.children.entries()){let h=d*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=d+1;f.scale.x=r.scale[0]+p(y,Ae(m,c.scale[0]))||Zt,f.scale.y=r.scale[1]+p(y,Ae(m,c.scale[1]))||Zt,f.scale.z=r.scale[2]+p(y,Ae(m,c.scale[2]))||Zt,f.position.setScalar(0);let b=a/e.count*d-o;switch(r.axis){case"x":f.rotation.set(0,b,0);break;case"y":f.rotation.set(0,0,b);break;case"z":f.rotation.set(b,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+p(y,Ae(m,c.position[0])),f.position.y+=r.position[1]+p(y,Ae(m,c.position[1])),f.position.z+=r.position[2]+p(y,Ae(m,c.position[2]));let v=p(y,Ae(m,c.rotation[0])),w=p(y,Ae(m,c.rotation[1])),O=p(y,Ae(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Ae(p,n.rotation[0])),h=s(d,Ae(p,n.rotation[1])),m=s(d,Ae(p,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(d,Ae(p,n.scale[0]))||Zt,c.scale.y=1+(r.scale[1]-1)*l+s(d,Ae(p,n.scale[1]))||Zt,c.scale.z=1+(r.scale[2]-1)*l+s(d,Ae(p,n.scale[2]))||Zt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(d,Ae(p,n.position[0])),c.position.y=r.position[1]*l+s(d,Ae(p,n.position[1])),c.position.z=r.position[2]*l+s(d,Ae(p,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Il(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new mr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let d=0;d<o.count[2];d++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ae(f,n.scale[0]))||Zt,h.scale.y=1+s(r,Ae(f,n.scale[1]))||Zt,h.scale.z=1+s(r,Ae(f,n.scale[2]))||Zt;let m=s(r,Ae(f,n.rotation[0])),y=s(r,Ae(f,n.rotation[1])),b=s(r,Ae(f,n.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(r,Ae(f,n.position[0])),h.position.y=o.size[1]*p-c.y+s(r,Ae(f,n.position[1])),h.position.z=o.size[2]*d-c.z+s(r,Ae(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),d=this.children[r++];d.scale.x=1+s(r,Ae(p,n.scale[0]))||Zt,d.scale.y=1+s(r,Ae(p,n.scale[1]))||Zt,d.scale.z=1+s(r,Ae(p,n.scale[2]))||Zt;let f=s(r,Ae(p,n.rotation[0])),h=s(r,Ae(p,n.rotation[1])),m=s(r,Ae(p,n.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(r,Ae(p,n.position[0])),d.position.y=-o.size[1]*c+s(r,Ae(p,n.position[1])),d.position.z=-o.size[2]*u+s(r,Ae(p,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Ah(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??io.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Il(n.strength,this.parameters.randomness);if(!r.object){for(let[,d]of this.children.entries())d.position.set(0,0,0),d.scale.setScalar(1),d.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ei)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let d=Math.round(l.length*r.count/100);this._updateCount(d)}else{let d=this.objectForSample.geometry.getAttribute("position");if(!d||isNaN(d.count)||d.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new fu(this.objectForSample).build(),u=zv[r.axis],p=this.children;c.setRandomGenerator((0,dd.default)(this.object.uuid+r.seed));for(let[d,f]of p.entries()){let h=d*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Ae(m,n.rotation[0])),v=s(y,Ae(m,n.rotation[1])),w=s(y,Ae(m,n.rotation[2]));r.spreadType==="random"?c.sample(Nl,Mh):(l.length&&(Nl.fromArray(l[d].pos),Mh.fromArray(l[d].norm)),this.objectForSample instanceof wn&&Nl.applyMatrix4(vD.copy(this.objectForSample.matrixWorld).invert())),Nl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Nl),Di.fromArray(u);let O=r.align==="normal"?Mh:this.object.getWorldDirection(PD),S=ud.fromArray(r.position);ud.x+=s(y,Ae(m,n.position[0])),ud.y+=s(y,Ae(m,n.position[1])),ud.z+=s(y,Ae(m,n.position[2]));let T=Math.acos(O.dot(Di)),M=wD.crossVectors(Di,O).normalize(),g=SD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),N=D.clone().cross(O).normalize(),I=new Tn().makeBasis(D,O,N),E=new mr(Di.y,Di.z,Di.x).normalize(),_=E.clone().cross(Di).normalize(),L=new Tn().makeBasis(E,Di,_).invert(),V=new Tn().multiplyMatrices(I,L);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ae(m,n.scale[0]))||Zt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ae(m,n.scale[1]))||Zt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ae(m,n.scale[2]))||Zt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof wn){let a=this.objectForSample,s=Gv[e],l=Zv[s],c=Kv[s],u=Qv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);Xv.fromArray(f).applyMatrix4(a.matrixWorld),Yv.fromArray(h),o(Xv.toArray(),Yv.toArray())}}else(this.objectForSample.geometry.index?Fv(this.objectForSample.geometry):jv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=No(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Tn,this.hiddenMatrix=new Tn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as iR,Vector3 as nR,Matrix4 as aR,Box3 as sR,MeshBasicMaterial as lR,Skeleton as cR}from"three";import{Camera as RD,OrthographicCamera as BD,PerspectiveCamera as VD,Vector3 as Yr,Object3D as r1,Quaternion as zD,Matrix4 as GD}from"three";import{Camera as ID,LineSegments as ND,BufferGeometry as ED,LineBasicMaterial as DD,Color as Eh,Vector3 as _D,Float32BufferAttribute as e1}from"three";import{BoxGeometry as OD}from"three";var vo=i=>{var t;return t=class extends i{},t.geometryHelper=new OD(30,30,30),t};import{Ray as TD,Sphere as CD,Matrix4 as AD,Vector3 as Ko}from"three";var pd=new TD,Nh=new CD,Jv=new AD,So=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Nh.copy(a.boundingSphere),Nh.applyMatrix4(s),e.ray.intersectsSphere(Nh)===!1||(Jv.copy(s).invert(),pd.copy(e.ray).applyMatrix4(Jv),a.boundingBox!==null&&pd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(d.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(i,e,pd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new Ko,S=new Ko,T=new Ko,M=new Ko,g=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=N*N,E=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let L=E,V=_-1;L<V;L+=g){if(O.fromBufferAttribute(w,L),S.fromBufferAttribute(w,L+1),pd.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function b(v,w,O,S,T,M,g){let D=new Ko,N=new Ko,I=new Ko,E=new Ko,_=new Ko;if(D.fromBufferAttribute(S,T),N.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,N,I,!1,E)===null)return null;_.copy(E),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var fd=new _D,Ar=new ID,Dh=class extends ND{constructor(e){let r=new ED,o=new DD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Eh(15711266),c=new Eh(15711266),u=new Eh(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",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new e1(n,3)),r.setAttribute("color",new e1(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Ar.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;Xr("n1",r,e,Ar,-n,-a,s),Xr("n2",r,e,Ar,n,-a,s),Xr("n3",r,e,Ar,-n,a,s),Xr("n4",r,e,Ar,n,a,s);let l=s;Xr("f1",r,e,Ar,-n,-a,l),Xr("f2",r,e,Ar,n,-a,l),Xr("f3",r,e,Ar,-n,a,l),Xr("f4",r,e,Ar,n,a,l);let c=l,u=.5;Xr("u1",r,e,Ar,n*.7*u,a*1.1,c),Xr("u2",r,e,Ar,-n*.7*u,a*1.1,c),Xr("u3",r,e,Ar,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Xr(i,t,e,r,o,n,a){fd.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],fd.x,fd.y,fd.z)}}var hd=class extends vo(Dh){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){So(this.object,this.geometry,e,r,!0)}};import{Box3Helper as t1,BoxGeometry as LD}from"three";var md;(t=>t.is=e=>"objectHelper"in e)(md||(md={}));var Mr=(i,t)=>class extends Oa(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof LD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof t1&&(n.visible=!1)}}};var yd=790,hs=new Yr,_h=new Yr,Lh=new zD,Rh=new Yr,El=new Yr,Bh=new Yr,Qo=class extends Mr(RD,hd){constructor(e="",r={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=gi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new GD,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new BD(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new VD(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Yr(e,r,o)),super.lookAt(e),this.getWorldPosition(hs),this.targetOffset=hs.distanceTo(e)}getTarget(e=new Yr){return this.getWorldDirection(_h),this.getWorldPosition(hs),_h.multiplyScalar(this.targetOffset),e.copy(hs).add(_h),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(hs),hs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Lh),Rh.set(0,0,1).applyQuaternion(Lh),El.copy(r1.DEFAULT_UP),this.isUpVectorFlipped&&El.negate(),El.applyQuaternion(Lh),Bh.copy(r1.DEFAULT_UP).projectOnPlane(Rh),this.angleOffsetFromUp=Bh.angleTo(El),this.angleOffsetFromUp*=Bh.cross(El).dot(Rh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Yr),n=e.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Yr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Yr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-yd*.5*n,this.right=yd*.5*n,this.top=yd*.5*(1/a),this.bottom=-yd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ea(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as Rae}from"three";import{BufferGeometry as o1,Matrix4 as i1,Float32BufferAttribute as FD}from"three";var ms=new i1,jD=new i1;var sr=class extends ar{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new o1;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof sr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ms.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Or.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1}else a instanceof sr&&a.needsTransformForDownstream===!0?(Or.transformMeshSet(a.booleanMeshSetAddress,ms),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Or.transformMeshSet(a.booleanMeshSetAddress,jD.multiplyMatrices(ms,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ms).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Or.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new FD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new o1,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Or.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ds(this),ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as UD}from"three";var n1;(t=>{function i(e){return _e.is(e)&&e instanceof UD}t.is=i})(n1||(n1={}));var ys=(i,t)=>class extends Mr(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Li=i=>i instanceof It,Dl=i=>i!==null&&i instanceof sr;var _l=i=>md.is(i);import{Group as XD}from"three";import{AxesHelper as kD,Group as HD,Quaternion as WD,Vector3 as Vh}from"three";var qD=new Vh(1,1,1),a1=new Vh,$D=new Vh,s1=new WD,Ir=class extends vo(kD){constructor(e,r=15){super(r);this.object=e;this.dummy=new HD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){So(this.object,Ir.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(a1,s1,$D),this.matrix.compose(a1,s1,qD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var Ri=class extends Mr(XD,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as YD}from"three";var gs=class extends Mr(YD,Ir){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as V_,Fog as z_,HemisphereLight as G_}from"three";import{ShaderChunk as Ll}from"three";var KD=i=>`
|
|
2290
2290
|
|
|
2291
2291
|
// PCSS implementation based on:
|
|
2292
2292
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2660,18 +2660,18 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2660
2660
|
}
|
|
2661
2661
|
|
|
2662
2662
|
#endif
|
|
2663
|
-
`,WD=Il.lights_fragment_begin,qD=Il.shadowmask_pars_fragment,o1=null,$D=i=>{switch(i){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},i1=(i="medium")=>{if(o1===i)return!1;o1=i;let t=$D(i);Il.shadowmap_pars_fragment=HD(t);let e=WD.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Il.lights_fragment_begin=e;let r=qD.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Il.shadowmask_pars_fragment=r,!0};import{DirectionalLight as ZD,CameraHelper as n1}from"three";import{DirectionalLightHelper as XD}from"three";var hs=class extends vo(XD){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,hs.geometryHelper,e,r)}};import{PointLightHelper as YD}from"three";var ms=class extends vo(YD){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,ms.geometryHelper,e,r)}};import{SpotLightHelper as KD,Vector3 as QD}from"three";var pd=class extends vo(KD){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,pd.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=pd._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 a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(n);else this.cone.material.color.set(n)}}},El=pd;El._vector=new QD;function JD(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 ys=class extends ps(ZD,hs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=-1e4,n.far=2500;let a=new n1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof n1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&JD(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as R_}from"three";import{SpotLight as e_,CameraHelper as a1,MathUtils as t_,Vector3 as u1,Quaternion as r_}from"three";var s1=new u1,l1=new u1,c1=new r_,gs=class extends ps(e_,El){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=t_.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let a=new a1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof a1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),l1.setFromMatrixPosition(this.matrixWorld),c1.setFromRotationMatrix(this.matrixWorld),s1.copy(this.up).applyQuaternion(c1).negate().multiplyScalar(this.distance),this.target.position.copy(l1).add(s1),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function o_(i){let t=(i[0][0]+i[1][1])/2,e=(i[0][0]-i[1][1])/2,r=(i[1][0]+i[0][1])/2,o=(i[1][0]-i[0][1])/2,n=Math.sqrt(t*t+o*o),a=Math.sqrt(e*e+r*r),s=n+a,l=n-a,c=Math.atan2(r,e),u=Math.atan2(o,t),d=(u-c)/2,p=(u+c)/2,f=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]],h=[[s,0],[0,l]],m=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]];return f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,h,m]}function fd(i,t){return[[i[0][0]*t[0][0]+i[0][1]*t[1][0],i[0][0]*t[0][1]+i[0][1]*t[1][1]],[i[1][0]*t[0][0]+i[1][1]*t[1][0],i[1][0]*t[0][1]+i[1][1]*t[1][1]]]}function d1(i){return[[i[0][0],i[1][0]],[i[0][1],i[1][1]]]}function p1(i){let[t,e,r]=o_(i),o=fd(t,d1(r)),n=fd(fd(r,e),d1(r)),a=Math.atan2(o[1][0],o[0][0]),s=[n[0][0],n[1][1]],l=[n[0][1]/n[1][1],n[1][0]/n[0][0]];return{rotation:a,scale:s,shear:l}}function f1({rotation:i,scale:t,shear:e}){let r=Math.cos(i),o=Math.sin(i),n=[[r,-o],[o,r]],a=[[t[0],e[0]*t[1]],[e[1]*t[0],t[1]]],s=fd(n,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ee;(S=>{function i(){return[1,0,0,0,1,0,0,0,1]}S.identity=i;function t(T,M=S.identity()){for(let g=0,D=T.length;g<D;g++)M[g]=T[g];return M}S.copy=t;function e(T,M,g,D,E,I){return S.setAbcdef(S.identity(),T,M,g,D,E,I)}S.create=e;function r(T,M,g,D,E,I,N){return T[0]=M,T[1]=D,T[2]=I,T[3]=g,T[4]=E,T[5]=N,T}S.setAbcdef=r;function o(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=R*g+V*E,H=R*D+V*I,W=U*g+B*E,ee=U*D+B*I,te=q*g+j*E+N,Y=q*D+j*I+_;return S.create(F,H,W,ee,te,Y)}S.append=o;function n(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=g,H=D,W=E,ee=I;(R!==1||V!==0||U!==0||B!==1)&&(F=g*R+D*U,H=g*V+D*B,W=E*R+I*U,ee=E*V+I*B);let te=N*R+_*U+q,Y=N*V+_*B+j;return S.create(F,H,W,ee,te,Y)}S.prepend=n;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[M,g,D,E,I,N]=S.getAbcdef(T),_=M*E-g*D,R=E/_,V=-g/_,U=-D/_,B=M/_,q=(D*N-E*I)/_,j=-(M*N-g*I)/_;return S.create(R,V,U,B,q,j)}S.invert=s;function l([T,M],g){let[D,E,I,N,_,R]=S.getAbcdef(g);return[D*T+I*M+_,E*T+N*M+R]}S.apply=l;function c(T,M){let[g,D,E,I,N,_]=S.getAbcdef(M),R=1/(g*I+E*-D),[V,U]=T;return[I*R*V+-E*R*U+(_*E-N*I)*R,g*R*U+-D*R*V+(-_*g+N*D)*R]}S.applyInverse=c;function u(T,M,g=M){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D*M,E*g,I*M,N*g,_*M,R*g),T}S.scale=u;function d(T,M){let g=Math.cos(M),D=Math.sin(M),[E,I,N,_,R,V]=S.getAbcdef(T);return S.setAbcdef(T,E*g-I*D,E*D+I*g,N*g-_*D,N*D+_*g,R*g-V*D,R*D+V*g),T}S.rotate=d;function p(T,M,g){let[D,E]=g,I=S.translate(T,-D,-E);return I=S.rotate(I,M),I=S.translate(I,D,E),I}S.rotateAround=p;function f(T,M,g){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,_+M,R+g),T}S.translate=f;function h(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setTranslate=h;function m(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setPosition=m;function y(T){let[M,g,D,E]=S.getAbcdef(T),I=Math.sqrt(M*M+g*g),N=Math.sqrt(D*D+E*E);return[I,N]}S.getScale=y;function x(T){let[,,,,M,g]=S.getAbcdef(T);return[M,g]}S.getPosition=x;function v(T,M){return S.decompose(T,M).rotation}S.getRotation=v;function w(T,M){let[g,D,E,I,N,_]=S.getAbcdef(T),{rotation:R,scale:V,shear:U}=p1([[g,E],[D,I]]);return{position:[N+(M[0]*g+M[1]*E)-M[0],_+(M[0]*D+M[1]*I)-M[1]],scale:V,rotation:R,shear:U,pivot:M}}S.decompose=w;function O(T,M,g,D,E=[0,0]){let[I,N]=T,[_,R]=D,[V,U,B,q]=f1({rotation:g,scale:M,shear:E}),j=I-(_*V+R*B)+_,F=N-(_*U+R*q)+R;return S.create(V,U,B,q,j,F)}S.compose=O})(Ee||(Ee={}));var i_=Math.PI/180,Sse=180/Math.PI;function h1(i,t,e,r,o,n){let a=i-e,s=t-r;return a*a/(o*o)+s*s/(n*n)<=1}function m1(i){return i*i_}var Qo=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Ee.identity();this.worldMatrix=Ee.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Ri;this._recursiveBBox=new Ri;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=ko();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r),o)}intersectsInLocalSpace(t,e,r=!1){let{min:o,max:n}=r?this.recursiveBBox:this.singleBBox;return t>=o[0]&&t<=n[0]&&e>=o[1]&&e<=n[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ee.compose(this.position,this.scale,m1(this.rotation),Go.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ee.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ee.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Go.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),t.shear!==void 0&&(e=!0,this.shear=t.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,n=Le(t.path,["states","*"]);if(n!==null){if(t.type===0){let[a]=n;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=Ze.zoom(l,t.path.slice(2));if(c)for(let u in t.props)t.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,on.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)on.toOps(this.data,o.data).forEach(a=>{let s=ra.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=on.patch(this.data,o),on.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Qo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Qo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var kt=class extends Qo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof kt&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof kt?o.traverse(e):r=e(o)}intersectsChildrenHelper(e,r,o,n,a){for(let s of this.children)if(s.intersects(e,r,o,!1)&&(a.push(s),n)||s instanceof kt&&s.intersectsChildrenHelper(e,r,o,n,a))return!0;return!1}intersectsChildren(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,r,o,n,a),a}intersectsChildrenHelperReverse(e,r,o,n,a){for(let s of this.children)if(s instanceof kt&&s.intersectsChildrenHelperReverse(e,r,o,n,a)||s.intersects(e,r,o,!1)&&(a.push(s),n))return!0;return!1}intersectsChildrenReverse(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,r,o,n,a),a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let n of this.children)n.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new kt(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},sr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.updateState(r,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new sr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function n_(i,t){let[[e,r],[o,n]]=i,[[a,s],[l,c]]=t,u=(e-o)*(s-c)-(r-n)*(a-l);if(u===0)return!1;let d=((e-a)*(s-c)-(r-s)*(a-l))/u,p=-((e-o)*(r-s)-(r-n)*(e-a))/u;return d>=0&&d<=1&&p>=0&&p<=1}var g1=[[-1,1],[-1,-1],[1,-1],[1,1]],y1=(i,t,e)=>{let r=i.getCenter(),o=i.getHalfSize(),n=Ee.append(t,i.worldMatrix);o[0]===0&&o[1]===0?e.push(Ee.apply(r,n)):g1.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Ee.apply(s,n))})},Ri=class{constructor(){this.matrix=Ee.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ee.copy(t.worldMatrix,this.matrix);let r=Ee.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof kt?t.traverse(n=>{n.visible&&y1(n,e,o)}):y1(t,e,o),this.setFromPoints(o)}setFromSize(t,e,r){this.makeEmpty(),Ee.copy(r,this.matrix),this.expandBySize(t,e,r)}expandBySize(t,e,r){[Ee.apply([0,0],r),Ee.apply([0,e],r),Ee.apply([t,e],r),Ee.apply([t,0],r)].forEach(n=>this.expandByPoint(n))}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ee.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,n,a,s]=Ee.getAbcdef(this.matrix),l=Ee.create(o,n,a,s,r[0],r[1]);this.vertices=g1.map(([c,u])=>Ee.apply([c*t,u*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,n]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=n&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let n=0,a=t.edges.length;n<a;n++){let s=t.edges[n];if(n_(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ee.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new Ri;return t.copy(this),t}};var b1,v1=new Promise(i=>{b1=i}),x1=!1;var hd;function S1(){if(x1)return;if(hd)return hd;async function i(){let e=await import("./ui.js");b1(e.default??e),x1=!0}return hd=i(),hd}function O1(i){let t=!1;return i.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var Te,Rh;async function a_(i){let t=await v1;Te||(Rh||(Rh=t({locateFile:()=>i})),Te=await Rh)}var w1=Ee.identity(),Dl=class{constructor(t,e=1){this.canvas=t;this._dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=w1,this._currentTransform=new Float32Array(w1)}get dpr(){return this._dpr}set dpr(t){this._dpr=t,this._isSizeDirty=!0}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await a_(this.wasmURL),this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Te.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Te.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Te.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=Te.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(md(t),Te.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(md(t),Te.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(Te.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Te.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(n===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Te.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ee.invert(this.currentTransform);this.ctx.concat(t);let e=Ee.translate(Ee.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,n=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(md(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0);let a=Te.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Te.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),n=!0}if(this._layerBlur>0){let a=t.copy();o=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),n=!0}if(n||e(t),r&&this._hasInnerShadow()){let a=new Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(md(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,d,p]=l,f=d-c,h=p-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Te.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Te.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Te.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,n=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?Te.ClipOp.Difference:Te.ClipOp.Intersect,!0),a=!0),r.drawPath(o,n),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(t){this._currentPath?.addPath(Te.Path.MakeFromSVGString(t))}ellipse(t,e,r,o,n,a,s,l){if(!P1([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let c=Te.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(c)}rect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(!!P1(c))if(n===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(t){switch(t){case 2:return Te.TextAlign.Right;case 3:return Te.TextAlign.Center;case 4:return Te.TextAlign.Justify;case 1:default:return Te.TextAlign.Left}}drawTextInner(t,e,r,[o,n,a,s],l,c,u=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=c.copy(),h=c.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let x=n;l===2?x+=(s-y.getHeight())/2:l===3&&(x+=s-y.getHeight()),p.drawParagraph(y,o,x),d=y.getHeight(),e.reset(),y.delete()},u),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:n,_paintFill:a,_paintStroke:s}=this;if(o&&n){let l=new Te.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Te.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Te.XYWHRect(e.x,e.y,e.width,e.height),d=Te.ParagraphBuilder.Make(c,o);a&&(r=this.drawTextInner(t,d,l,u,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,u,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,n,a){this._currentPath?.cubicTo(t,e,r,o,n,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ee.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let n=Ee.getScale(this.camera.worldMatrix);this.ctx?.scale(1/n[0],1/n[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){!this._isSizeDirty&&t===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function P1(i){for(let t=0;t<i.length;t++)if(i[t]!==void 0&&!Number.isFinite(i[t]))return!1;return!0}function md({r:i,g:t,b:e,a:r}){return Te.Color4f(i,t,e,r)}var _l=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var Rl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var yd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var gd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var lr=class extends Qo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.autoClose=!0;this.fill=new yd(e+"-fill",r.fill,o),this.stroke=new gd(e+"-stroke",r.stroke,o),this.dropShadow=new _l(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new _l(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new Rl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new Rl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new lr(this.uuid,this.data,e);return r.parent=void 0,r}};var Li=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return h1(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Li(this.uuid,this.data,e);return r.parent=void 0,r}};var wo=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new wo(this.uuid,this.data,e);return r.parent=void 0,r}};var Bi=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),n=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(n,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Bi(this.uuid,this.data,e);return r.parent=void 0,r}};var xs=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(n=>xd.extremas(n)),r=[1/0,1/0],o=[-1/0,-1/0];for(let n=0,a=e.length;n<a;n++){let s=e[n];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,n=this.data.points.length;o<n;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,n]=this.getHalfSize();return[e+o,r+n]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let n=0,a=this.data.points.length;n<a;n++){let s=this.data.points[n].data;if(n===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[n-1].data,[c,u]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};xd.derive(m),e.bezierCurveTo(c,u,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[n,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[c,u]=r.position;e.bezierCurveTo(n,a,s,l,c,u)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new xs(this.uuid,this.data,e);return r.parent=void 0,r}},xd;(n=>{function i(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(c[0]-l[0]),3*(c[1]-l[1])],f=[3*(u[0]-c[0]),3*(u[1]-c[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Lh.derive(h),h}n.derive=i;function t(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/u,h=-(-d+p)/u;return[f,h]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??n.derive(a),l=s.start,c=s.cp,u=s.end;return[t(l[0],c[0],u[0]),t(l[1],c[1],u[1])]}n.droot=e;function r(a){let[s,l]=n.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let d of s)c.push(n.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)u.push(n.compute(a,Math.min(1,Math.max(0,d)))[1]);return c.sort((d,p)=>d-p),u.sort((d,p)=>d-p),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}n.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,d=c*l,p=c*s*3,f=l*u*3,h=s*u;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}n.compute=o})(xd||(xd={}));var Lh;(r=>{function i(o){let n=o.start,a=o.cp,s=o.end,l=[2*(a[0]-n[0]),2*(a[1]-n[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=Bh.derive(u),o.derivative=u,u}r.derive=i;function t(o){let n=o.derivative??r.derive(o),a=n.start,s=n.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,n){if(n===0)return[...o.start];if(n===1)return[...o.end];let a=1-n,s=a*a,l=n*n,c=s,u=a*n*2,d=l;return[c*o.start[0]+u*o.cp[0]+d*o.end[0],c*o.start[1]+u*o.cp[1]+d*o.end[1]]}r.compute=e})(Lh||(Lh={}));var Bh;(e=>{function i(r){let o=r.start,n=r.end,a=[n[0]-o[0],n[1]-o[1]];return r.derivative=a,r.derivative}e.derive=i;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let n=r.start,a=r.end;return[n[0]+(a[0]-n[0])*o,n[1]+(a[1]-n[1])*o]}e.compute=t})(Bh||(Bh={}));var mr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new wo(e+"-background",ga.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new mr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};var M1=Is(Vh(),1),Zo=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._pathBBox=new DOMRect;this.path="";this.updateState(r,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=this.path;I1(this.path)&&(console.warn("Invalid SVG path",this.uuid),e="");let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(r),o.setAttribute("d",e),r.appendChild(o),this._pathBBox=o.getBBox(),r.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,r){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&r>=this._pathBBox.y&&r<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,r){super.updateState(e,r),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let r=new Zo(this.uuid,this.data,e);return r.parent=void 0,r}};function I1(i){return/NaN/.test(i)}function E1(i,t=1,e=1){if(t<=0||e<=0)return i;if(I1(i))return console.warn("Cannot scale invalid path",i),vd([]);try{let o=(0,M1.parseSVG)(i).map(n=>{let a={...n};return"x"in a&&(a.x=a.x*t),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*t),"x2"in a&&(a.x2=a.x2*t),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*t),"ry"in a&&(a.ry=a.ry*e),a});return vd(o)}catch(r){return console.warn("Error parsing SVG path",r),vd([])}}function vd(i){let t=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return i.map(r=>{let o=[];t.forEach(a=>{if(a in r){let s=r[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let n=(e===r.code?o[0]<0?"":",":r.code)+o.join("");return e=r.code,n}).join("")}function N1(i,t,e){switch(t.type){case"ellipse2d":return new Li(i,t,e);case"rectangle2d":return new wo(i,t,e);case"text2d":return new Bi(i,t,e);case"vector2d":return new xs(i,t,e);case"path2d":return new Zo(i,t,e);case"frame2d":return new mr(i,t,e);case"group2d":default:return new sr(i,t,e)}}var zh=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new sr(zh.GROUP_ID,{...Hs.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,n,a){let s=N1(t,e,a);s&&(o.add(s),o.children.splice(n,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof sr||s instanceof mr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let n of t)this.createObject(n.id,n.data,n.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let n=this.find(t);if(n)try{n.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof kt&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof kt){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,n=t.parent===null?this:this.find(t.parent);if(n===void 0&&!1&&console.error("unexpected",n,t),n instanceof kt||n===this){n.add(r);let a=t.localIndex;n.children.splice(a,0,n.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,n=[]){return this.group.intersectsChildren(t,e,r,o,n,!0)}intersectsChildrenReverse(t,e,r,o=!1,n=[]){return this.group.intersectsChildrenReverse(t,e,r,o,n,!0)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let n=o;o=o.parent;let a=o.children.indexOf(n);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>$l(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},On=zh;On.GROUP_ID="scene2d";function Gh({constraints:i,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:n,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=i,u=t-r,d=e-o,p=n,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=u;else if(l===3)h+=u/2;else if(l===2)p=Math.max(1,p+u);else if(l===4){let y=t/r;p*=y,h*=y}}if(c!==0){if(c===1)m+=d;else if(c===3)m+=d/2;else if(c===2)f=Math.max(1,f+d);else if(c===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}var u_=Is(Vh(),1);var Kce={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as d_,CanvasTexture as p_,Float32BufferAttribute as D1,HalfFloatType as f_,MathUtils as h_,Mesh as m_,OrthographicCamera as y_,ShaderMaterial as g_,Uniform as x_,WebGLRenderTarget as b_}from"three";var v_=`
|
|
2663
|
+
`,QD=Ll.lights_fragment_begin,ZD=Ll.shadowmask_pars_fragment,l1=null,JD=i=>{switch(i){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},c1=(i="medium")=>{if(l1===i)return!1;l1=i;let t=JD(i);Ll.shadowmap_pars_fragment=KD(t);let e=QD.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Ll.lights_fragment_begin=e;let r=ZD.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ll.shadowmask_pars_fragment=r,!0};import{DirectionalLight as i_,CameraHelper as u1}from"three";import{DirectionalLightHelper as e_}from"three";var xs=class extends vo(e_){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,xs.geometryHelper,e,r)}};import{PointLightHelper as t_}from"three";var bs=class extends vo(t_){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,bs.geometryHelper,e,r)}};import{SpotLightHelper as r_,Vector3 as o_}from"three";var gd=class extends vo(r_){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,gd.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=gd._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 a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(n);else this.cone.material.color.set(n)}}},Rl=gd;Rl._vector=new o_;function n_(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 vs=class extends ys(i_,xs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=-1e4,n.far=2500;let a=new u1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof u1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&n_(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as F_}from"three";import{SpotLight as a_,CameraHelper as d1,MathUtils as s_,Vector3 as m1,Quaternion as l_}from"three";var p1=new m1,f1=new m1,h1=new l_,Ss=class extends ys(a_,Rl){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=s_.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let a=new d1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof d1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),f1.setFromMatrixPosition(this.matrixWorld),h1.setFromRotationMatrix(this.matrixWorld),p1.copy(this.up).applyQuaternion(h1).negate().multiplyScalar(this.distance),this.target.position.copy(f1).add(p1),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function c_(i){let t=(i[0][0]+i[1][1])/2,e=(i[0][0]-i[1][1])/2,r=(i[1][0]+i[0][1])/2,o=(i[1][0]-i[0][1])/2,n=Math.sqrt(t*t+o*o),a=Math.sqrt(e*e+r*r),s=n+a,l=n-a,c=Math.atan2(r,e),u=Math.atan2(o,t),p=(u-c)/2,d=(u+c)/2,f=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],h=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,h,m]}function xd(i,t){return[[i[0][0]*t[0][0]+i[0][1]*t[1][0],i[0][0]*t[0][1]+i[0][1]*t[1][1]],[i[1][0]*t[0][0]+i[1][1]*t[1][0],i[1][0]*t[0][1]+i[1][1]*t[1][1]]]}function y1(i){return[[i[0][0],i[1][0]],[i[0][1],i[1][1]]]}function g1(i){let[t,e,r]=c_(i),o=xd(t,y1(r)),n=xd(xd(r,e),y1(r)),a=Math.atan2(o[1][0],o[0][0]),s=[n[0][0],n[1][1]],l=[n[0][1]/n[1][1],n[1][0]/n[0][0]];return{rotation:a,scale:s,shear:l}}function x1({rotation:i,scale:t,shear:e}){let r=Math.cos(i),o=Math.sin(i),n=[[r,-o],[o,r]],a=[[t[0],e[0]*t[1]],[e[1]*t[0],t[1]]],s=xd(n,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ee;(S=>{function i(){return[1,0,0,0,1,0,0,0,1]}S.identity=i;function t(T,M=S.identity()){for(let g=0,D=T.length;g<D;g++)M[g]=T[g];return M}S.copy=t;function e(T,M,g,D,N,I){return S.setAbcdef(S.identity(),T,M,g,D,N,I)}S.create=e;function r(T,M,g,D,N,I,E){return T[0]=M,T[1]=D,T[2]=I,T[3]=g,T[4]=N,T[5]=E,T}S.setAbcdef=r;function o(T,M){let[g,D,N,I,E,_]=a(T),[L,V,U,B,q,j]=a(M),F=L*g+V*N,H=L*D+V*I,W=U*g+B*N,ee=U*D+B*I,te=q*g+j*N+E,Y=q*D+j*I+_;return S.create(F,H,W,ee,te,Y)}S.append=o;function n(T,M){let[g,D,N,I,E,_]=a(T),[L,V,U,B,q,j]=a(M),F=g,H=D,W=N,ee=I;(L!==1||V!==0||U!==0||B!==1)&&(F=g*L+D*U,H=g*V+D*B,W=N*L+I*U,ee=N*V+I*B);let te=E*L+_*U+q,Y=E*V+_*B+j;return S.create(F,H,W,ee,te,Y)}S.prepend=n;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[M,g,D,N,I,E]=S.getAbcdef(T),_=M*N-g*D,L=N/_,V=-g/_,U=-D/_,B=M/_,q=(D*E-N*I)/_,j=-(M*E-g*I)/_;return S.create(L,V,U,B,q,j)}S.invert=s;function l([T,M],g){let[D,N,I,E,_,L]=S.getAbcdef(g);return[D*T+I*M+_,N*T+E*M+L]}S.apply=l;function c(T,M){let[g,D,N,I,E,_]=S.getAbcdef(M),L=1/(g*I+N*-D),[V,U]=T;return[I*L*V+-N*L*U+(_*N-E*I)*L,g*L*U+-D*L*V+(-_*g+E*D)*L]}S.applyInverse=c;function u(T,M,g=M){let[D,N,I,E,_,L]=S.getAbcdef(T);return S.setAbcdef(T,D*M,N*g,I*M,E*g,_*M,L*g),T}S.scale=u;function p(T,M){let g=Math.cos(M),D=Math.sin(M),[N,I,E,_,L,V]=S.getAbcdef(T);return S.setAbcdef(T,N*g-I*D,N*D+I*g,E*g-_*D,E*D+_*g,L*g-V*D,L*D+V*g),T}S.rotate=p;function d(T,M,g){let[D,N]=g,I=S.translate(T,-D,-N);return I=S.rotate(I,M),I=S.translate(I,D,N),I}S.rotateAround=d;function f(T,M,g){let[D,N,I,E,_,L]=S.getAbcdef(T);return S.setAbcdef(T,D,N,I,E,_+M,L+g),T}S.translate=f;function h(T,M,g){let[D,N,I,E]=S.getAbcdef(T);return S.setAbcdef(T,D,N,I,E,M,g),T}S.setTranslate=h;function m(T,M,g){let[D,N,I,E]=S.getAbcdef(T);return S.setAbcdef(T,D,N,I,E,M,g),T}S.setPosition=m;function y(T){let[M,g,D,N]=S.getAbcdef(T),I=Math.sqrt(M*M+g*g),E=Math.sqrt(D*D+N*N);return[I,E]}S.getScale=y;function b(T){let[,,,,M,g]=S.getAbcdef(T);return[M,g]}S.getPosition=b;function v(T,M){return S.decompose(T,M).rotation}S.getRotation=v;function w(T,M){let[g,D,N,I,E,_]=S.getAbcdef(T),{rotation:L,scale:V,shear:U}=g1([[g,N],[D,I]]);return{position:[E+(M[0]*g+M[1]*N)-M[0],_+(M[0]*D+M[1]*I)-M[1]],scale:V,rotation:L,shear:U,pivot:M}}S.decompose=w;function O(T,M,g,D,N=[0,0]){let[I,E]=T,[_,L]=D,[V,U,B,q]=x1({rotation:g,scale:M,shear:N}),j=I-(_*V+L*B)+_,F=E-(_*U+L*q)+L;return S.create(V,U,B,q,j,F)}S.compose=O})(Ee||(Ee={}));var u_=Math.PI/180,Wse=180/Math.PI;function b1(i,t,e,r,o,n){let a=i-e,s=t-r;return a*a/(o*o)+s*s/(n*n)<=1}function v1(i){return i*u_}var Zo=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Ee.identity();this.worldMatrix=Ee.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Bi;this._recursiveBBox=new Bi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=ko();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r),o)}intersectsInLocalSpace(t,e,r=!1){let{min:o,max:n}=r?this.recursiveBBox:this.singleBBox;return t>=o[0]&&t<=n[0]&&e>=o[1]&&e<=n[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ee.compose(this.position,this.scale,v1(this.rotation),Go.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ee.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ee.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Go.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),t.shear!==void 0&&(e=!0,this.shear=t.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,n=Be(t.path,["states","*"]);if(n!==null){if(t.type===0){let[a]=n;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=Je.zoom(l,t.path.slice(2));if(c)for(let u in t.props)t.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=Je.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,an.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)an.toOps(this.data,o.data).forEach(a=>{let s=na.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=an.patch(this.data,o),an.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Zo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Zo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var kt=class extends Zo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof kt&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof kt?o.traverse(e):r=e(o)}intersectsChildrenHelper(e,r,o,n,a){for(let s of this.children)if(s.intersects(e,r,o,!1)&&(a.push(s),n)||s instanceof kt&&s.intersectsChildrenHelper(e,r,o,n,a))return!0;return!1}intersectsChildren(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,r,o,n,a),a}intersectsChildrenHelperReverse(e,r,o,n,a){for(let s of this.children)if(s instanceof kt&&s.intersectsChildrenHelperReverse(e,r,o,n,a)||s.intersects(e,r,o,!1)&&(a.push(s),n))return!0;return!1}intersectsChildrenReverse(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,r,o,n,a),a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let n of this.children)n.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new kt(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},lr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.updateState(r,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new lr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function d_(i,t){let[[e,r],[o,n]]=i,[[a,s],[l,c]]=t,u=(e-o)*(s-c)-(r-n)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(r-s)*(a-l))/u,d=-((e-o)*(r-s)-(r-n)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var w1=[[-1,1],[-1,-1],[1,-1],[1,1]],S1=(i,t,e)=>{let r=i.getCenter(),o=i.getHalfSize(),n=Ee.append(t,i.worldMatrix);o[0]===0&&o[1]===0?e.push(Ee.apply(r,n)):w1.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Ee.apply(s,n))})},Bi=class{constructor(){this.matrix=Ee.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ee.copy(t.worldMatrix,this.matrix);let r=Ee.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof kt?t.traverse(n=>{n.visible&&S1(n,e,o)}):S1(t,e,o),this.setFromPoints(o)}setFromSize(t,e,r){this.makeEmpty(),Ee.copy(r,this.matrix),this.expandBySize(t,e,r)}expandBySize(t,e,r){[Ee.apply([0,0],r),Ee.apply([0,e],r),Ee.apply([t,e],r),Ee.apply([t,0],r)].forEach(n=>this.expandByPoint(n))}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ee.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,n,a,s]=Ee.getAbcdef(this.matrix),l=Ee.create(o,n,a,s,r[0],r[1]);this.vertices=w1.map(([c,u])=>Ee.apply([c*t,u*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,n]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=n&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let n=0,a=t.edges.length;n<a;n++){let s=t.edges[n];if(d_(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ee.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new Bi;return t.copy(this),t}};var O1,T1=new Promise(i=>{O1=i}),P1=!1;var bd;function C1(){if(P1)return;if(bd)return bd;async function i(){let e=await import("./ui.js");O1(e.default??e),P1=!0}return bd=i(),bd}function I1(i){let t=!1;return i.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var Ce,Gh;async function p_(i){let t=await T1;Ce||(Gh||(Gh=t({locateFile:()=>i})),Ce=await Gh)}var A1=Ee.identity(),Vl=class{constructor(t,e=1){this.canvas=t;this._dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ne.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ne.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=A1,this._currentTransform=new Float32Array(A1)}get dpr(){return this._dpr}set dpr(t){this._dpr=t,this._isSizeDirty=!0}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await p_(this.wasmURL),this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ce.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ce.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ce.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=Ce.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(vd(t),Ce.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(vd(t),Ce.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(Ce.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ce.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Ce.XYWHRect(t,e,r,o);if(n===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ce.ClipOp.Intersect,!0);else{let u=Ce.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Ce.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ee.invert(this.currentTransform);this.ctx.concat(t);let e=Ee.translate(Ee.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,n=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(vd(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0);let a=Ce.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ce.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ce.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),n=!0}if(this._layerBlur>0){let a=t.copy();o=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),n=!0}if(n||e(t),r&&this._hasInnerShadow()){let a=new Ce.Paint;a.setAntiAlias(!0),a.setStyle(Ce.PaintStyle.Fill),a.setColor(vd(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,f=p-c,h=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ce.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ce.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ce.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,n=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?Ce.ClipOp.Difference:Ce.ClipOp.Intersect,!0),a=!0),r.drawPath(o,n),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(t){this._currentPath?.addPath(Ce.Path.MakeFromSVGString(t))}ellipse(t,e,r,o,n,a,s,l){if(!M1([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let c=Ce.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(c)}rect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Ce.XYWHRect(t,e,r,o);if(!!M1(c))if(n===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ce.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(t){switch(t){case 2:return Ce.TextAlign.Right;case 3:return Ce.TextAlign.Center;case 4:return Ce.TextAlign.Justify;case 1:default:return Ce.TextAlign.Left}}drawTextInner(t,e,r,[o,n,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let f=c.copy(),h=c.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let b=n;l===2?b+=(s-y.getHeight())/2:l===3&&(b+=s-y.getHeight()),d.drawParagraph(y,o,b),p=y.getHeight(),e.reset(),y.delete()},u),f.delete(),h.delete(),p}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:n,_paintFill:a,_paintStroke:s}=this;if(o&&n){let l=new Ce.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ce.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ce.XYWHRect(e.x,e.y,e.width,e.height),p=Ce.ParagraphBuilder.Make(c,o);a&&(r=this.drawTextInner(t,p,l,u,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,n,a){this._currentPath?.cubicTo(t,e,r,o,n,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ee.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let n=Ee.getScale(this.camera.worldMatrix);this.ctx?.scale(1/n[0],1/n[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){!this._isSizeDirty&&t===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function M1(i){for(let t=0;t<i.length;t++)if(i[t]!==void 0&&!Number.isFinite(i[t]))return!1;return!0}function vd({r:i,g:t,b:e,a:r}){return Ce.Color4f(i,t,e,r)}var zl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ne.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var Gl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var Sd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ne.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var wd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ne.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var cr=class extends Zo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.autoClose=!0;this.fill=new Sd(e+"-fill",r.fill,o),this.stroke=new wd(e+"-stroke",r.stroke,o),this.dropShadow=new zl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new zl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new Gl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new Gl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ne.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ne.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ne.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ne.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new cr(this.uuid,this.data,e);return r.parent=void 0,r}};var Vi=class extends cr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return b1(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Vi(this.uuid,this.data,e);return r.parent=void 0,r}};var wo=class extends cr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new wo(this.uuid,this.data,e);return r.parent=void 0,r}};var zi=class extends cr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ne.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ne.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),n=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(n,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new zi(this.uuid,this.data,e);return r.parent=void 0,r}};var ws=class extends cr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(n=>Pd.extremas(n)),r=[1/0,1/0],o=[-1/0,-1/0];for(let n=0,a=e.length;n<a;n++){let s=e[n];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,n=this.data.points.length;o<n;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,n]=this.getHalfSize();return[e+o,r+n]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let n=0,a=this.data.points.length;n<a;n++){let s=this.data.points[n].data;if(n===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[n-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};Pd.derive(m),e.bezierCurveTo(c,u,p,d,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[n,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[c,u]=r.position;e.bezierCurveTo(n,a,s,l,c,u)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new ws(this.uuid,this.data,e);return r.parent=void 0,r}},Pd;(n=>{function i(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,p=[3*(l[0]-s[0]),3*(l[1]-s[1])],d=[3*(c[0]-l[0]),3*(c[1]-l[1])],f=[3*(u[0]-c[0]),3*(u[1]-c[1])],h={start:p,cp:d,end:f};return a.derivative=h,h.derivative=Fh.derive(h),h}n.derive=i;function t(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let p=-Math.sqrt(Math.abs(s*s-a*l)),d=-a+s,f=-(p+d)/u,h=-(-p+d)/u;return[f,h]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??n.derive(a),l=s.start,c=s.cp,u=s.end;return[t(l[0],c[0],u[0]),t(l[1],c[1],u[1])]}n.droot=e;function r(a){let[s,l]=n.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(n.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(n.compute(a,Math.min(1,Math.max(0,p)))[1]);return c.sort((p,d)=>p-d),u.sort((p,d)=>p-d),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}n.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,p=c*l,d=c*s*3,f=l*u*3,h=s*u;return[p*a.start[0]+d*a.cp1[0]+f*a.cp2[0]+h*a.end[0],p*a.start[1]+d*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}n.compute=o})(Pd||(Pd={}));var Fh;(r=>{function i(o){let n=o.start,a=o.cp,s=o.end,l=[2*(a[0]-n[0]),2*(a[1]-n[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=jh.derive(u),o.derivative=u,u}r.derive=i;function t(o){let n=o.derivative??r.derive(o),a=n.start,s=n.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,n){if(n===0)return[...o.start];if(n===1)return[...o.end];let a=1-n,s=a*a,l=n*n,c=s,u=a*n*2,p=l;return[c*o.start[0]+u*o.cp[0]+p*o.end[0],c*o.start[1]+u*o.cp[1]+p*o.end[1]]}r.compute=e})(Fh||(Fh={}));var jh;(e=>{function i(r){let o=r.start,n=r.end,a=[n[0]-o[0],n[1]-o[1]];return r.derivative=a,r.derivative}e.derive=i;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let n=r.start,a=r.end;return[n[0]+(a[0]-n[0])*o,n[1]+(a[1]-n[1])*o]}e.compute=t})(jh||(jh={}));var yr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new wo(e+"-background",va.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new yr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};var _1=_s(Uh(),1),Jo=class extends cr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._pathBBox=new DOMRect;this.path="";this.updateState(r,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=this.path;L1(this.path)&&(console.warn("Invalid SVG path",this.uuid),e="");let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(r),o.setAttribute("d",e),r.appendChild(o),this._pathBBox=o.getBBox(),r.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,r){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&r>=this._pathBBox.y&&r<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,r){super.updateState(e,r),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let r=new Jo(this.uuid,this.data,e);return r.parent=void 0,r}};function L1(i){return/NaN/.test(i)}function R1(i,t=1,e=1){if(t<=0||e<=0)return i;if(L1(i))return console.warn("Cannot scale invalid path",i),Td([]);try{let o=(0,_1.parseSVG)(i).map(n=>{let a={...n};return"x"in a&&(a.x=a.x*t),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*t),"x2"in a&&(a.x2=a.x2*t),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*t),"ry"in a&&(a.ry=a.ry*e),a});return Td(o)}catch(r){return console.warn("Error parsing SVG path",r),Td([])}}function Td(i){let t=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return i.map(r=>{let o=[];t.forEach(a=>{if(a in r){let s=r[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let n=(e===r.code?o[0]<0?"":",":r.code)+o.join("");return e=r.code,n}).join("")}function B1(i,t,e){switch(t.type){case"ellipse2d":return new Vi(i,t,e);case"rectangle2d":return new wo(i,t,e);case"text2d":return new zi(i,t,e);case"vector2d":return new ws(i,t,e);case"path2d":return new Jo(i,t,e);case"frame2d":return new yr(i,t,e);case"group2d":default:return new lr(i,t,e)}}var kh=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new lr(kh.GROUP_ID,{...Xs.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,n,a){let s=B1(t,e,a);s&&(o.add(s),o.children.splice(n,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof lr||s instanceof yr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let n of t)this.createObject(n.id,n.data,n.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let n=this.find(t);if(n)try{n.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof kt&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof kt){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,n=t.parent===null?this:this.find(t.parent);if(n===void 0&&!1&&console.error("unexpected",n,t),n instanceof kt||n===this){n.add(r);let a=t.localIndex;n.children.splice(a,0,n.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,n=[]){return this.group.intersectsChildren(t,e,r,o,n,!0)}intersectsChildrenReverse(t,e,r,o=!1,n=[]){return this.group.intersectsChildrenReverse(t,e,r,o,n,!0)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let n=o;o=o.parent;let a=o.children.indexOf(n);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>Zl(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},An=kh;An.GROUP_ID="scene2d";function Hh({constraints:i,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:n,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=i,u=t-r,p=e-o,d=n,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=u;else if(l===3)h+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=t/r;d*=y,h*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)f=Math.max(1,f+p);else if(c===4){let y=e/o;f*=y,m*=y}}return{width:d,height:f,position:[h,m]}}var y_=_s(Uh(),1);var vue={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as g_,CanvasTexture as x_,Float32BufferAttribute as V1,HalfFloatType as b_,MathUtils as v_,Mesh as S_,OrthographicCamera as w_,ShaderMaterial as P_,Uniform as O_,WebGLRenderTarget as T_}from"three";var C_=`
|
|
2664
2664
|
varying vec2 vUv;
|
|
2665
2665
|
void main() {
|
|
2666
2666
|
vUv = uv;
|
|
2667
2667
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
2668
|
-
}`,
|
|
2668
|
+
}`,A_=`
|
|
2669
2669
|
uniform sampler2D tDiffuse;
|
|
2670
2670
|
varying vec2 vUv;
|
|
2671
2671
|
void main() {
|
|
2672
2672
|
vec4 texel = texture2D( tDiffuse, vUv );
|
|
2673
2673
|
gl_FragColor = texel;
|
|
2674
|
-
}`,w_=new y_(-1,1,1,-1,0,1),Uh=class extends d_{constructor(){super(),this.setAttribute("position",new D1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new D1([0,2,0,0,2,0],2))}},P_=new Uh,kh=class{constructor(t){this._mesh=new m_(P_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,w_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},_1=new g_({defines:{},uniforms:{tDiffuse:new x_(null)},vertexShader:v_,fragmentShader:S_}),O_=new kh(_1),Fh=null,jh=null,T_=()=>(Fh===null&&(Fh=document.createElement("canvas")),Fh),C_=i=>(jh===null&&(jh=new Dl(i)),jh),A_=Ee.identity(),bs=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new On(h_.generateUUID(),su.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=T_(),this.renderer=C_(this.canvas),this.promise=this.init(),this.renderTarget=new b_(1,1,{type:f_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new p_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Dl&&(this.renderer.wasmURL=tv.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),_1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),O_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=A_,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},R1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof mr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function R1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof mr&&t instanceof mr||i instanceof sr&&t instanceof sr)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&I_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function M_(i){if(Hh(i))return[i.width,i.height];if(i instanceof Zo){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof sr){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function I_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=M_(t),{width:l,height:c,position:u}=Gh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let d in i.states)E_({stateId:d,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(Hh(i)||i instanceof sr)Hh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),R1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Zo){let d=t,p=a!==0?l/a:1,f=s!==0?c/s:1;i.path=E1(d.path,p,f),i.data={...i.data,path:i.path}}}function E_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:d}=Gh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:Go.isResizeable(l)?l.width:0,objectInitialHeight:Go.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:d}),Go.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function Hh(i){return i instanceof wo||i instanceof mr||i instanceof Li||i instanceof Bi}var Ir=class extends Sa(R_){constructor(e,r,o){super();this.data=r;this.bgColor=new Ct(1,1,1,1);this.fog=null;this.backupFog=new D_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new N_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Ko(hi,{...tn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new __(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new On((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new bs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Ut(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof ar&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&i1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ut(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Ut(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Ut(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ys&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof gs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Di(a)||Ml(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Ll(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as L_,Vector3 as Sd,Box3 as B_,Box3Helper as L1,Color as V_}from"three";var wd=class extends ps(L_,ms){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new Sd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new Sd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new B_(a,s),c=new L1(l,new V_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof L1){let r=this.shadow.camera,o=new Sd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new Sd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Pd=class extends et{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?dl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var vs=class extends et{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=_a;break;case"Ellipse":n=Ia;break;case"Polygon":n=Iu;break;case"Star":n=Eu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?dl(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Od=class extends Ii{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as z_,Matrix4 as G_,Skeleton as F_}from"three";var Jo=class extends Ar(z_,Mr){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Bo.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of no.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Zr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...gt.defaultData,...e,...Dr(gt.defaultData,no.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of no.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&no.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Td(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};V1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(De.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof et&&u.bones&&u.boneInverses){let d=c.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(m=>e.scene.find(a[m])),f=d.boneInverses.map(m=>new G_().fromArray(m)),h=new F_(p,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Td(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)De.is(e)&&Td(e)}}function B1(i,t,e,r){return i.component===t&&ip(i.identity,r)?i.overrideData===e?2:1:0}function V1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof Jo&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(De.is(u)){let d=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],p=pa.resolve(e,d,1);if(p!=null&&!(p instanceof He)){if(!1)debugger;Object.setPrototypeOf(p,He.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=De.is(m)?m:null,f!==null){let y=B1(f,u,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(d)??null,f!==null)){let y=B1(f,u,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let x=f.parent.children.indexOf(f);f.parent.children.splice(x,1),r.children.splice(c,0,f),f.parent===r?(x<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Zr.apply(u.data,p):u.data;_r.is(m.type)&&(m={...m,type:"Empty"}),f=Vr.createEntity(d,m,i),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,V1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let d=r.children[c];if(De.is(d))i.pendingDeletes.add(d);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as j_}from"three";var Cd=class extends Ar(j_,Mr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Tn=class extends et{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new bs(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=po(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Le(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=po(o,r,this.data.flatShading,this)}};import{Object3D as Z_,Vector3 as Er,InstancedMesh as J_,InstancedBufferAttribute as eR,PlaneGeometry as tR,Vector4 as Bl,Quaternion as iS,TextureLoader as rR,Texture as nS,Euler as oR,MathUtils as Qh}from"three";import{GPUComputationRenderer as iR}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as z1,FloatType as Wh,DataTexture as qh,RGBAFormat as $h,Mesh as U_,Euler as Fde,Matrix4 as jde}from"three";import{MeshSurfaceSampler as k_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function G1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function F1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function j1(i,t){let e=new U_(i.geometry,i.material),r=[],o=[],n=new z1,a=new z1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new k_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function Xh(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new qh(r,t,t,$h,Wh);return o.needsUpdate=!0,o}function U1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new qh(t,i,i,$h,Wh);return e.needsUpdate=!0,e}function k1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new qh(t,i,i,$h,Wh);return e.needsUpdate=!0,e}var H1=`
|
|
2674
|
+
}`,M_=new w_(-1,1,1,-1,0,1),$h=class extends g_{constructor(){super(),this.setAttribute("position",new V1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new V1([0,2,0,0,2,0],2))}},I_=new $h,Xh=class{constructor(t){this._mesh=new S_(I_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,M_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},z1=new P_({defines:{},uniforms:{tDiffuse:new O_(null)},vertexShader:C_,fragmentShader:A_}),N_=new Xh(z1),Wh=null,qh=null,E_=()=>(Wh===null&&(Wh=document.createElement("canvas")),Wh),D_=i=>(qh===null&&(qh=new Vl(i)),qh),__=Ee.identity(),Ps=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new An(v_.generateUUID(),pu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=E_(),this.renderer=D_(this.canvas),this.promise=this.init(),this.renderTarget=new T_(1,1,{type:b_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new x_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Vl&&(this.renderer.wasmURL=av.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),z1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),N_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=__,this.isScreenSpace&&(this.frameOverride.fill.color=Ne.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},G1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof yr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function G1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof yr&&t instanceof yr||i instanceof lr&&t instanceof lr)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&R_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function L_(i){if(Yh(i))return[i.width,i.height];if(i instanceof Jo){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof lr){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function R_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=L_(t),{width:l,height:c,position:u}=Hh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let p in i.states)B_({stateId:p,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(Yh(i)||i instanceof lr)Yh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),G1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Jo){let p=t,d=a!==0?l/a:1,f=s!==0?c/s:1;i.path=R1(p.path,d,f),i.data={...i.data,path:i.path}}}function B_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:p}=Hh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:Go.isResizeable(l)?l.width:0,objectInitialHeight:Go.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:p}),Go.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function Yh(i){return i instanceof wo||i instanceof yr||i instanceof Vi||i instanceof zi}var Nr=class extends Oa(F_){constructor(e,r,o){super();this.data=r;this.bgColor=new At(1,1,1,1);this.fog=null;this.backupFog=new z_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new V_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Qo(mi,{...on.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new G_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new An((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new Ps(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Ut(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof sr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&c1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ut(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Ut(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Be(e.path,["fog"])?this.updateFog(s.fog,o.shared):Be(e.path,["ao"])?this.updateAo(s.ao,o.shared):Be(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Be(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Ut(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof vs&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as j_,Vector3 as Cd,Box3 as U_,Box3Helper as F1,Color as k_}from"three";var Ad=class extends ys(j_,bs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new Cd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new Cd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new U_(a,s),c=new F1(l,new k_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof F1){let r=this.shadow.camera,o=new Cd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new Cd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Md=class extends tt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ml(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var Os=class extends tt{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=Ba;break;case"Ellipse":n=Da;break;case"Polygon":n=Lu;break;case"Star":n=Ru;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?ml(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Id=class extends Ei{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as H_,Matrix4 as W_,Skeleton as q_}from"three";var ei=class extends Mr(H_,Ir){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=Bo.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of ao.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Jr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...xt.defaultData,...e,..._r(xt.defaultData,ao.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of ao.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&ao.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(_e.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Nd(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};U1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(_e.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof tt&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),f=p.boneInverses.map(m=>new W_().fromArray(m)),h=new q_(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Nd(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)_e.is(e)&&Nd(e)}}function j1(i,t,e,r){return i.component===t&&cp(i.identity,r)?i.overrideData===e?2:1:0}function U1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof ei&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(_e.is(u)){let p=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],d=ma.resolve(e,p,1);if(d!=null&&!(d instanceof We)){if(!1)debugger;Object.setPrototypeOf(d,We.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=_e.is(m)?m:null,f!==null){let y=j1(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(p)??null,f!==null)){let y=j1(f,u,d,p);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let b=f.parent.children.indexOf(f);f.parent.children.splice(b,1),r.children.splice(c,0,f),f.parent===r?(b<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?Jr.apply(u.data,d):u.data;Lr.is(m.type)&&(m={...m,type:"Empty"}),f=zr.createEntity(p,m,i),f.overrideData=d,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,U1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let p=r.children[c];if(_e.is(p))i.pendingDeletes.add(p);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as $_}from"three";var Ed=class extends Mr($_,Ir){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Mn=class extends tt{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ps(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=fo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Be(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=fo(o,r,this.data.flatShading,this)}};import{Object3D as iL,Vector3 as Er,InstancedMesh as nL,InstancedBufferAttribute as aL,PlaneGeometry as sL,Vector4 as jl,Quaternion as cS,TextureLoader as lL,Texture as uS,Euler as cL,MathUtils as rm}from"three";import{GPUComputationRenderer as uL}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as k1,FloatType as Kh,DataTexture as Qh,RGBAFormat as Zh,Mesh as X_,Euler as upe,Matrix4 as dpe}from"three";import{MeshSurfaceSampler as Y_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function H1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function W1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function q1(i,t){let e=new X_(i.geometry,i.material),r=[],o=[],n=new k1,a=new k1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new Y_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function Jh(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new Qh(r,t,t,Zh,Kh);return o.needsUpdate=!0,o}function $1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}function X1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Qh(t,i,i,Zh,Kh);return e.needsUpdate=!0,e}var Y1=`
|
|
2675
2675
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
2676
2676
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
2677
2677
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -2740,7 +2740,7 @@ void main() {
|
|
|
2740
2740
|
gl_FragColor = mix(vec4(0.0), activeColor, isActive);
|
|
2741
2741
|
|
|
2742
2742
|
}
|
|
2743
|
-
`;var
|
|
2743
|
+
`;var K1=`
|
|
2744
2744
|
|
|
2745
2745
|
vec3 mod289(vec3 x) {
|
|
2746
2746
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
@@ -2942,7 +2942,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2942
2942
|
);
|
|
2943
2943
|
}
|
|
2944
2944
|
|
|
2945
|
-
`;var
|
|
2945
|
+
`;var Q1=`
|
|
2946
2946
|
#ifdef USE_COLLIDER
|
|
2947
2947
|
float restitution = max(uBounce * 2., .01); // Energy Loss
|
|
2948
2948
|
// SPHERE COLLIDER
|
|
@@ -3010,7 +3010,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3010
3010
|
#endif
|
|
3011
3011
|
#endif
|
|
3012
3012
|
// END COLLIDER
|
|
3013
|
-
`;var
|
|
3013
|
+
`;var Z1=`
|
|
3014
3014
|
#ifdef USE_ATTRACTOR
|
|
3015
3015
|
|
|
3016
3016
|
#ifdef USE_SPHERE_COLLIDER
|
|
@@ -3084,7 +3084,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3084
3084
|
velocity *= uForceDamping;
|
|
3085
3085
|
#endif
|
|
3086
3086
|
#endif
|
|
3087
|
-
`;var
|
|
3087
|
+
`;var J1=`
|
|
3088
3088
|
#ifdef USE_VORTEX
|
|
3089
3089
|
// Box dimensions
|
|
3090
3090
|
vec3 boxHalfSize = uColliderSize / 2.0;
|
|
@@ -3123,7 +3123,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3123
3123
|
velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
|
|
3124
3124
|
}
|
|
3125
3125
|
#endif
|
|
3126
|
-
`;var
|
|
3126
|
+
`;var eS=`
|
|
3127
3127
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3128
3128
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3129
3129
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3149,7 +3149,7 @@ uniform float uForceDamping;
|
|
|
3149
3149
|
uniform float uForceIntensity;
|
|
3150
3150
|
|
|
3151
3151
|
|
|
3152
|
-
`+
|
|
3152
|
+
`+K1+`
|
|
3153
3153
|
float rand(vec2 co){
|
|
3154
3154
|
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3155
3155
|
}
|
|
@@ -3225,11 +3225,11 @@ void main() {
|
|
|
3225
3225
|
#endif
|
|
3226
3226
|
|
|
3227
3227
|
// COLLIDER
|
|
3228
|
-
${
|
|
3228
|
+
${Q1}
|
|
3229
3229
|
// ATTRACTION
|
|
3230
|
-
${
|
|
3230
|
+
${Z1}
|
|
3231
3231
|
// VORTEX
|
|
3232
|
-
${
|
|
3232
|
+
${J1}
|
|
3233
3233
|
}
|
|
3234
3234
|
// End isActive
|
|
3235
3235
|
|
|
@@ -3247,7 +3247,7 @@ void main() {
|
|
|
3247
3247
|
|
|
3248
3248
|
gl_FragColor = vec4(velocity, collisionFlag);
|
|
3249
3249
|
}
|
|
3250
|
-
`;import{ShaderMaterial as
|
|
3250
|
+
`;import{ShaderMaterial as K_}from"three";var em=`
|
|
3251
3251
|
|
|
3252
3252
|
// Linear Fade In
|
|
3253
3253
|
float linearFadeIn(float t) {
|
|
@@ -3280,7 +3280,7 @@ void main() {
|
|
|
3280
3280
|
float constant(float t) {
|
|
3281
3281
|
return 1.0;
|
|
3282
3282
|
}
|
|
3283
|
-
`;var
|
|
3283
|
+
`;var tS=`
|
|
3284
3284
|
|
|
3285
3285
|
float rand(vec3 co){
|
|
3286
3286
|
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
@@ -3295,7 +3295,7 @@ vec3 applyForce(vec3 force, float mass) {
|
|
|
3295
3295
|
|
|
3296
3296
|
return acceleration;
|
|
3297
3297
|
}
|
|
3298
|
-
`;var
|
|
3298
|
+
`;var rS=`
|
|
3299
3299
|
vec3 rgb2xyz (in vec3 rgb) {
|
|
3300
3300
|
float r = rgb.r;
|
|
3301
3301
|
float g = rgb.g;
|
|
@@ -3386,7 +3386,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3386
3386
|
return(rgb);
|
|
3387
3387
|
}
|
|
3388
3388
|
|
|
3389
|
-
`;var
|
|
3389
|
+
`;var oS=`
|
|
3390
3390
|
uniform sampler2D uPosition;
|
|
3391
3391
|
uniform float uSize;
|
|
3392
3392
|
uniform float uSizeEnd;
|
|
@@ -3407,9 +3407,9 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3407
3407
|
varying vec2 vUv;
|
|
3408
3408
|
varying vec2 vRef;
|
|
3409
3409
|
|
|
3410
|
-
${
|
|
3411
|
-
${
|
|
3412
|
-
`,
|
|
3410
|
+
${tS}
|
|
3411
|
+
${em}
|
|
3412
|
+
`,iS=({easeSize:i="linearFadeOut"})=>`
|
|
3413
3413
|
vUv = uv;
|
|
3414
3414
|
vRef = ref;
|
|
3415
3415
|
// Normalized LifeTime 1 to 0
|
|
@@ -3461,7 +3461,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3461
3461
|
mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
3462
3462
|
mvPosition.xy += rotatedPosition;
|
|
3463
3463
|
gl_Position = projectionMatrix * mvPosition;
|
|
3464
|
-
`,
|
|
3464
|
+
`,nS=`
|
|
3465
3465
|
uniform vec4 uColor; // start color
|
|
3466
3466
|
uniform vec4 uColor2; // end color
|
|
3467
3467
|
uniform sampler2D uTexture; // texture
|
|
@@ -3472,10 +3472,10 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3472
3472
|
float random(vec2 co) {
|
|
3473
3473
|
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3474
3474
|
}
|
|
3475
|
-
`+
|
|
3476
|
-
${
|
|
3475
|
+
`+em+`
|
|
3476
|
+
${rS}
|
|
3477
3477
|
|
|
3478
|
-
`,
|
|
3478
|
+
`,aS=({easeOpacity:i="linearFadeOut"})=>`
|
|
3479
3479
|
// if Particle is dead, hide it
|
|
3480
3480
|
if (v_LifeLeft <= 0.005 ) {
|
|
3481
3481
|
discard;
|
|
@@ -3496,7 +3496,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3496
3496
|
|
|
3497
3497
|
gl_FragColor = vec4(finalColor, finalAlpha);
|
|
3498
3498
|
|
|
3499
|
-
`;var
|
|
3499
|
+
`;var Dd=class extends K_{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],Xe.startContext(Xe.globalContext),this.lightLayer=new Qt(0,"",{...St.defaultData("light","phong"),visible:!1},new Wo,{},r.shared),Xe.endContext(Xe.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new qa;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Kb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(Qb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(oS),e.addFragmentParsCode(nS),e.addVertexFinalCode(iS({easeSize:this.easeSize})),e.addFragmentFinalCode(aS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as Q_,ConeGeometry as Z_,MeshBasicMaterial as J_,SphereGeometry as tm,Vector3 as eL}from"three";import{Mesh as tL}from"three";import{TorusGeometry as rL}from"three";import{PlaneGeometry as oL}from"three";var Ts=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=W1(e);let n=1;this.targetMesh=o?.geometry.type==="BufferGeometry"||o?.type==="Mesh"&&o&&o.geometry.hasAttribute("position")&&o.geometry.hasAttribute("normal")?o:this.getMesh(r,n);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,n));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=q1(e,t*t),n=Jh(r,t),a=Jh(o,t);return{dataTexture:n,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new tm(e*.5,32,32);break}case"TorusEmitterShape":{r=new rL(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new Z_(e,e,15);break}case"BoxEmitterShape":{r=new Q_(e,e,e);break}case"PlaneEmitterShape":{r=new oL(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new tm(e,32,32);break}default:{r=new tm(e,32,32);break}}return new tL(r,new J_({color:16711680}))}applyToShader(t,e){this.size=new eL().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Gi(i){let t={...i},e=ua.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var sS=`
|
|
3500
3500
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3501
3501
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3502
3502
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3543,19 +3543,19 @@ void main() {
|
|
|
3543
3543
|
|
|
3544
3544
|
|
|
3545
3545
|
}
|
|
3546
|
-
`;var Zh=10,Md=class extends Z_{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new rR;this.currentWorldPosition=new Er;this.systemQuaternion=new iS;this.worldGravity=new Er(0,0,0);this.directionAxis=new Er(0,0,0);this.colliderV3=new Er(0,0,0);this.colliderQuaternion=new iS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Ad(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Er(0,0,0)},uEmissionData:{value:new Er(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new Bl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let n=this.shared.image(r),a=new nS(n.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let n=new Image;n.onload=()=>{let l=new nS(n);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);n.src=s}}updateGeometryAttributes(e,r){let o=G1(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new eR(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,n=this.targetFPS/o,a=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],r=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&r&&this.init(Vi({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(n,a)=>{let s=[...this.system.data.shape.size];s[n]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/Zh),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Vi(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Zh),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],n={...Vi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*Qh.DEG2RAD,Number(e[1])*Qh.DEG2RAD,Number(e[2])*Qh.DEG2RAD],o=new oR(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:n,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:d}=e;return r!==void 0||o!==void 0||(n||n===null)||l!==void 0||a!==void 0||c!==void 0||s!==void 0||u!==void 0||d!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new iR(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),n=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",n+H1,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",n+Y1,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",rS,k1(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=U1({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new Bl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Er(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=u;let d=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(d),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Bl(0,0,0,1)},uColliderPos:{value:new Er(0,0,0)},uColliderSize:{value:new Er(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new Bl(0,0,0,1)},uColliderQuaternionInvert:{value:new Bl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Zh}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Vi(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),n=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,n]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let n=o?.colliderType;n==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),n==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),o?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,n]of Object.entries(this.simFeaturesDefinition))n&&(r+=`#define ${o}
|
|
3547
|
-
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Er(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let n=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(n=a)}),n?new
|
|
3546
|
+
`;var om=10,_d=class extends iL{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new lL;this.currentWorldPosition=new Er;this.systemQuaternion=new cS;this.worldGravity=new Er(0,0,0);this.directionAxis=new Er(0,0,0);this.colliderV3=new Er(0,0,0);this.colliderQuaternion=new cS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Dd(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Er(0,0,0)},uEmissionData:{value:new Er(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new jl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let n=this.shared.image(r),a=new uS(n.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let n=new Image;n.onload=()=>{let l=new uS(n);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);n.src=s}}updateGeometryAttributes(e,r){let o=H1(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new aL(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,n=this.targetFPS/o,a=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],r=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&r&&this.init(Gi({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(n,a)=>{let s=[...this.system.data.shape.size];s[n]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/om),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Gi(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/om),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],n={...Gi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*rm.DEG2RAD,Number(e[1])*rm.DEG2RAD,Number(e[2])*rm.DEG2RAD],o=new cL(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:n,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:p}=e;return r!==void 0||o!==void 0||(n||n===null)||l!==void 0||a!==void 0||c!==void 0||s!==void 0||u!==void 0||p!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new uL(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),n=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",n+Y1,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",n+eS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",sS,X1(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=$1({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new jl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Er(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=u;let p=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(p),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let d=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new jl(0,0,0,1)},uColliderPos:{value:new Er(0,0,0)},uColliderSize:{value:new Er(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new jl(0,0,0,1)},uColliderQuaternionInvert:{value:new jl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/om}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Gi(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),n=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,n]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let n=o?.colliderType;n==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),n==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),o?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,n]of Object.entries(this.simFeaturesDefinition))n&&(r+=`#define ${o}
|
|
3547
|
+
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Er(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let n=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(n=a)}),n?new Ts(o,r,e.type,n):new Ts(o,r,"SphereEmitterShape")}else return new Ts(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new nL(new sL(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,n=1/r;if(o>=n){let a=Math.max(1,Math.floor(o/n));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(Gi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as dL,Float32BufferAttribute as pL,MeshBasicMaterial as fL}from"three";var Cs=class extends It{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new dL;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...Gi(r)},this.geometry.setAttribute("position",new pL([],3)),this.material=new fL({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new _d(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let n=this.actualTime/1e3;this.emitter.update(n,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...at.drop(e,1).props}}),Be(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...at.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function hL(){try{let i=window.location.href;if(i.includes("reducesubdiv=")){let t=i.indexOf("reducesubdiv=")+13;return parseInt(i.slice(t,t+1))}}catch{}}var im=hL();function mL(i,t,e){im!==void 0&&(t?.geometry?.subdivisions??0)>im&&(console.log("reducing subdivisions",t.name,t.geometry.subdivisions),t.geometry.subdivisions=im);let r;return t.geometry.type==="TextGeometry"?new Ei(i,t,e):t.geometry.type==="InputGeometry"?new Id(i,t,e):(t.geometry.type==="SubdivGeometry"?r=new wn(i,t,e):t.geometry.type==="PathGeometry"?r=new Os(i,t,e):t.geometry.type==="VectorGeometry"?r=new Md(i,t,e):t.geometry.type==="BooleanGeometry"?r=new sr(i,t,e):t.geometry.type==="ShapeBlendGeometry"?r=new Fi(i,t,e):t.geometry.type==="UIGeometry"?r=new Mn(i,t,e):r=new tt(i,t,e),r)}function Ld(i,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?mL(i,t,e):t.type==="Empty"?new Ri(i,t):t.type==="Particle"?new Cs(i,t,e):t.type==="ParticleCollider"?new gs(i,t,e):t.type==="Splat"?new Ri(i,t):t.type==="Bone"?new Ed(i,t):t.type==="Page"?new Nr(i,t,e):t.type==="PointLight"?new Ad(i,t,e):t.type==="SpotLight"?new Ss(i,t,e):t.type==="DirectionalLight"?new vs(i,t,e):t.type==="Component"||t.type==="Instance"?new ei(i,t,e):Lr.is(t.type)?new Qo(i,t):(console.error(t),new Ri(i,t))}zr.createEntity=Ld;function yL(i,t,e){let r=Ld(i.identity,t,e),o=i.children,n=i.attachedPaths,a=i.parent,s=i.component,l=i.instances,c=i.overrideData,u=i.uuid,p=i.stateSelection;i.dispose();for(let d of Object.keys(i))delete i[d];Object.setPrototypeOf(i,Object.getPrototypeOf(r));for(let d of Object.keys(r))i[d]=r[d];i.children=[...i.children,...o],i.attachedPaths=n,i.parent=a,i.component=s,i.instances=l,i.uuid=u,i.overrideData=c,i.updateState(i.data,e),p&&i.changeSelectedState(p,e),i.resetBBoxNeedsUpdate()}zr.changeEntityProptotype=yL;zr.Cloner=_i;function dS(i,t,e,r){i.updateByOp(t,e,r,!1)}import{BufferAttribute as fS,BufferGeometry as hS,DataTexture as cm,FloatType as ri,Matrix4 as yS,Mesh as nm,NearestFilter as Po,PlaneGeometry as CL,Quaternion as gS,RedFormat as am,RGBAFormat as Is,Scene as sm,ShaderMaterial as mS,Vector2 as lm,Vector3 as zd,WebGLMultipleRenderTargets as AL,WebGLRenderTarget as Bd}from"three";import{Box2 as gL,BufferAttribute as xL,BufferGeometry as bL,Camera as vL,GLSL3 as SL,Mesh as wL,RawShaderMaterial as PL,Scene as OL,Vector4 as TL}from"three";var ji=5,As=new bL;As.setAttribute("position",new xL(new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),3));var In=class extends PL{constructor(t){super({...t,depthTest:!1,depthWrite:!1,glslVersion:SL,vertexShader:`
|
|
3548
3548
|
precision highp float;
|
|
3549
3549
|
in vec3 position;
|
|
3550
3550
|
void main() {
|
|
3551
3551
|
gl_Position = vec4(position, 1);
|
|
3552
3552
|
}
|
|
3553
|
-
`})}customProgramCacheKey(){return""}};function
|
|
3554
|
-
const float posRowCoord = ${.5/
|
|
3555
|
-
const float quatRowCoord = ${1.5/
|
|
3556
|
-
const float param1RowCoord = ${2.5/
|
|
3557
|
-
const float param2RowCoord = ${3.5/
|
|
3558
|
-
const float colorRowCoord = ${4.5/
|
|
3553
|
+
`})}customProgramCacheKey(){return""}};function pS(){return{shapeInput:()=>`
|
|
3554
|
+
const float posRowCoord = ${.5/ji}; // vec4: px py pz opType
|
|
3555
|
+
const float quatRowCoord = ${1.5/ji}; // vec4: qx qy qz qw
|
|
3556
|
+
const float param1RowCoord = ${2.5/ji};// vec4: type param1 param2 param3
|
|
3557
|
+
const float param2RowCoord = ${3.5/ji};// vec4: blendRange roundness scale param4
|
|
3558
|
+
const float colorRowCoord = ${4.5/ji}; // vec4: r g b a
|
|
3559
3559
|
uniform sampler2D shapesDataTexture;
|
|
3560
3560
|
vec4 shapePos(float iin) {
|
|
3561
3561
|
vec4 r = texture(shapesDataTexture, vec2(iin, posRowCoord));
|
|
@@ -3603,7 +3603,7 @@ void main() {
|
|
|
3603
3603
|
a = t;
|
|
3604
3604
|
return r;
|
|
3605
3605
|
}
|
|
3606
|
-
`,triTable:new Float32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,1,8,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,9,9,2,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,2,8,10,2,8,9,10,-1,-1,-1,-1,-1,-1,-1,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,0,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,1,11,9,1,11,8,9,-1,-1,-1,-1,-1,-1,-1,1,10,3,3,10,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,10,0,10,8,0,10,11,8,-1,-1,-1,-1,-1,-1,-1,0,9,3,9,11,3,9,10,11,-1,-1,-1,-1,-1,-1,-1,10,8,9,11,8,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,4,3,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,4,1,7,4,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,2,1,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,3,4,0,3,10,2,1,-1,-1,-1,-1,-1,-1,-1,10,2,9,2,0,9,7,4,8,-1,-1,-1,-1,-1,-1,-1,9,10,2,7,9,2,3,7,2,4,9,7,-1,-1,-1,-1,7,4,8,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,11,4,2,11,4,0,2,-1,-1,-1,-1,-1,-1,-1,1,0,9,7,4,8,11,3,2,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,9,2,11,9,1,2,9,-1,-1,-1,-1,1,10,3,10,11,3,4,8,7,-1,-1,-1,-1,-1,-1,-1,10,11,1,11,4,1,4,0,1,4,11,7,-1,-1,-1,-1,8,7,4,11,0,9,10,11,9,3,0,11,-1,-1,-1,-1,11,7,4,9,11,4,10,11,9,-1,-1,-1,-1,-1,-1,-1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,9,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,0,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,8,5,3,8,5,1,3,-1,-1,-1,-1,-1,-1,-1,10,2,1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,10,2,1,5,9,4,-1,-1,-1,-1,-1,-1,-1,10,2,5,2,4,5,2,0,4,-1,-1,-1,-1,-1,-1,-1,5,10,2,5,2,3,4,5,3,8,4,3,-1,-1,-1,-1,4,5,9,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,11,8,0,5,9,4,-1,-1,-1,-1,-1,-1,-1,4,5,0,5,1,0,11,3,2,-1,-1,-1,-1,-1,-1,-1,5,1,2,8,5,2,11,8,2,5,8,4,-1,-1,-1,-1,11,3,10,3,1,10,4,5,9,-1,-1,-1,-1,-1,-1,-1,5,9,4,1,8,0,1,10,8,10,11,8,-1,-1,-1,-1,0,4,5,11,0,5,10,11,5,3,0,11,-1,-1,-1,-1,8,4,5,10,8,5,11,8,10,-1,-1,-1,-1,-1,-1,-1,8,7,9,9,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,9,3,5,9,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,7,0,7,1,0,7,5,1,-1,-1,-1,-1,-1,-1,-1,3,5,1,7,5,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,9,7,5,9,2,1,10,-1,-1,-1,-1,-1,-1,-1,2,1,10,0,5,9,0,3,5,3,7,5,-1,-1,-1,-1,2,0,8,5,2,8,7,5,8,2,5,10,-1,-1,-1,-1,5,10,2,3,5,2,7,5,3,-1,-1,-1,-1,-1,-1,-1,5,9,7,9,8,7,2,11,3,-1,-1,-1,-1,-1,-1,-1,7,5,9,2,7,9,0,2,9,11,7,2,-1,-1,-1,-1,11,3,2,8,1,0,8,7,1,7,5,1,-1,-1,-1,-1,1,2,11,7,1,11,5,1,7,-1,-1,-1,-1,-1,-1,-1,8,5,9,7,5,8,3,1,10,11,3,10,-1,-1,-1,-1,0,7,5,9,0,5,0,11,7,10,0,1,0,10,11,-1,0,10,11,3,0,11,0,5,10,7,0,8,0,7,5,-1,5,10,11,5,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,9,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,8,9,1,6,10,5,-1,-1,-1,-1,-1,-1,-1,5,6,1,1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,1,6,2,1,8,0,3,-1,-1,-1,-1,-1,-1,-1,5,6,9,6,0,9,6,2,0,-1,-1,-1,-1,-1,-1,-1,8,9,5,2,8,5,6,2,5,8,2,3,-1,-1,-1,-1,11,3,2,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,11,0,2,11,5,6,10,-1,-1,-1,-1,-1,-1,-1,9,1,0,11,3,2,6,10,5,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,9,1,2,11,9,11,8,9,-1,-1,-1,-1,11,3,6,3,5,6,3,1,5,-1,-1,-1,-1,-1,-1,-1,11,8,0,5,11,0,1,5,0,6,11,5,-1,-1,-1,-1,6,11,3,6,3,0,5,6,0,9,5,0,-1,-1,-1,-1,9,5,6,11,9,6,8,9,11,-1,-1,-1,-1,-1,-1,-1,6,10,5,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,3,7,4,10,5,6,-1,-1,-1,-1,-1,-1,-1,0,9,1,6,10,5,7,4,8,-1,-1,-1,-1,-1,-1,-1,5,6,10,7,9,1,3,7,1,4,9,7,-1,-1,-1,-1,2,1,6,1,5,6,8,7,4,-1,-1,-1,-1,-1,-1,-1,5,2,1,6,2,5,4,0,3,7,4,3,-1,-1,-1,-1,7,4,8,5,0,9,5,6,0,6,2,0,-1,-1,-1,-1,9,3,7,4,9,7,9,2,3,6,9,5,9,6,2,-1,2,11,3,4,8,7,5,6,10,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,7,4,0,2,4,11,7,2,-1,-1,-1,-1,9,1,0,8,7,4,11,3,2,6,10,5,-1,-1,-1,-1,1,2,9,2,11,9,11,4,9,4,11,7,6,10,5,-1,7,4,8,5,11,3,1,5,3,6,11,5,-1,-1,-1,-1,11,1,5,6,11,5,11,0,1,4,11,7,11,4,0,-1,9,5,0,5,6,0,6,3,0,3,6,11,7,4,8,-1,9,5,6,11,9,6,9,7,4,9,11,7,-1,-1,-1,-1,9,4,10,10,4,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,4,10,9,4,3,8,0,-1,-1,-1,-1,-1,-1,-1,1,0,10,0,6,10,0,4,6,-1,-1,-1,-1,-1,-1,-1,1,3,8,6,1,8,4,6,8,10,1,6,-1,-1,-1,-1,9,4,1,4,2,1,4,6,2,-1,-1,-1,-1,-1,-1,-1,8,0,3,9,2,1,9,4,2,4,6,2,-1,-1,-1,-1,4,2,0,6,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,4,2,8,6,2,4,-1,-1,-1,-1,-1,-1,-1,9,4,10,4,6,10,3,2,11,-1,-1,-1,-1,-1,-1,-1,2,8,0,11,8,2,10,9,4,6,10,4,-1,-1,-1,-1,2,11,3,6,1,0,4,6,0,10,1,6,-1,-1,-1,-1,1,4,6,10,1,6,1,8,4,11,1,2,1,11,8,-1,4,6,9,6,3,9,3,1,9,3,6,11,-1,-1,-1,-1,1,11,8,0,1,8,1,6,11,4,1,9,1,4,6,-1,6,11,3,0,6,3,4,6,0,-1,-1,-1,-1,-1,-1,-1,8,4,6,8,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,7,10,8,7,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,7,0,7,10,0,10,9,0,10,7,6,-1,-1,-1,-1,7,6,10,7,10,1,8,7,1,0,8,1,-1,-1,-1,-1,7,6,10,1,7,10,3,7,1,-1,-1,-1,-1,-1,-1,-1,6,2,1,8,6,1,9,8,1,7,6,8,-1,-1,-1,-1,9,6,2,1,9,2,9,7,6,3,9,0,9,3,7,-1,0,8,7,6,0,7,2,0,6,-1,-1,-1,-1,-1,-1,-1,2,3,7,2,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,2,8,6,10,9,8,10,7,6,8,-1,-1,-1,-1,7,0,2,11,7,2,7,9,0,10,7,6,7,10,9,-1,0,8,1,8,7,1,7,10,1,10,7,6,11,3,2,-1,1,2,11,7,1,11,1,6,10,1,7,6,-1,-1,-1,-1,6,9,8,7,6,8,6,1,9,3,6,11,6,3,1,-1,1,9,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,6,0,7,0,11,3,0,6,11,-1,-1,-1,-1,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,8,1,3,8,6,7,11,-1,-1,-1,-1,-1,-1,-1,2,1,10,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,8,0,3,7,11,6,-1,-1,-1,-1,-1,-1,-1,0,9,2,9,10,2,7,11,6,-1,-1,-1,-1,-1,-1,-1,7,11,6,3,10,2,3,8,10,8,9,10,-1,-1,-1,-1,3,2,7,7,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,7,0,6,7,0,2,6,-1,-1,-1,-1,-1,-1,-1,6,7,2,7,3,2,9,1,0,-1,-1,-1,-1,-1,-1,-1,2,6,1,6,8,1,8,9,1,6,7,8,-1,-1,-1,-1,6,7,10,7,1,10,7,3,1,-1,-1,-1,-1,-1,-1,-1,6,7,10,10,7,1,7,8,1,8,0,1,-1,-1,-1,-1,7,3,0,10,7,0,9,10,0,7,10,6,-1,-1,-1,-1,10,6,7,8,10,7,9,10,8,-1,-1,-1,-1,-1,-1,-1,4,8,6,6,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,3,6,0,3,6,4,0,-1,-1,-1,-1,-1,-1,-1,11,6,8,6,4,8,1,0,9,-1,-1,-1,-1,-1,-1,-1,6,4,9,3,6,9,1,3,9,6,3,11,-1,-1,-1,-1,4,8,6,8,11,6,1,10,2,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,0,3,11,6,0,6,4,0,-1,-1,-1,-1,8,11,4,11,6,4,9,2,0,9,10,2,-1,-1,-1,-1,3,9,10,2,3,10,3,4,9,6,3,11,3,6,4,-1,3,2,8,2,4,8,2,6,4,-1,-1,-1,-1,-1,-1,-1,2,4,0,2,6,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,4,3,2,6,4,2,8,3,4,-1,-1,-1,-1,4,9,1,2,4,1,6,4,2,-1,-1,-1,-1,-1,-1,-1,3,1,8,1,6,8,6,4,8,1,10,6,-1,-1,-1,-1,0,1,10,6,0,10,4,0,6,-1,-1,-1,-1,-1,-1,-1,3,6,4,8,3,4,3,10,6,9,3,0,3,9,10,-1,4,9,10,4,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,9,4,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,5,9,4,6,7,11,-1,-1,-1,-1,-1,-1,-1,1,0,5,0,4,5,11,6,7,-1,-1,-1,-1,-1,-1,-1,6,7,11,4,3,8,4,5,3,5,1,3,-1,-1,-1,-1,4,5,9,2,1,10,11,6,7,-1,-1,-1,-1,-1,-1,-1,7,11,6,10,2,1,3,8,0,5,9,4,-1,-1,-1,-1,11,6,7,10,4,5,10,2,4,2,0,4,-1,-1,-1,-1,8,4,3,4,5,3,5,2,3,2,5,10,6,7,11,-1,3,2,7,2,6,7,9,4,5,-1,-1,-1,-1,-1,-1,-1,4,5,9,6,8,0,2,6,0,7,8,6,-1,-1,-1,-1,2,6,3,6,7,3,0,5,1,0,4,5,-1,-1,-1,-1,8,2,6,7,8,6,8,1,2,5,8,4,8,5,1,-1,4,5,9,6,1,10,6,7,1,7,3,1,-1,-1,-1,-1,10,6,1,6,7,1,7,0,1,0,7,8,4,5,9,-1,10,0,4,5,10,4,10,3,0,7,10,6,10,7,3,-1,10,6,7,8,10,7,10,4,5,10,8,4,-1,-1,-1,-1,5,9,6,9,11,6,9,8,11,-1,-1,-1,-1,-1,-1,-1,11,6,3,3,6,0,6,5,0,5,9,0,-1,-1,-1,-1,8,11,0,11,5,0,5,1,0,11,6,5,-1,-1,-1,-1,3,11,6,5,3,6,1,3,5,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,5,9,8,11,9,6,5,11,-1,-1,-1,-1,3,11,0,11,6,0,6,9,0,9,6,5,10,2,1,-1,5,8,11,6,5,11,5,0,8,2,5,10,5,2,0,-1,3,11,6,5,3,6,3,10,2,3,5,10,-1,-1,-1,-1,9,8,5,8,2,5,2,6,5,2,8,3,-1,-1,-1,-1,6,5,9,0,6,9,2,6,0,-1,-1,-1,-1,-1,-1,-1,8,5,1,0,8,1,8,6,5,2,8,3,8,2,6,-1,6,5,1,6,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,3,1,10,6,1,6,8,3,9,6,5,6,9,8,-1,0,1,10,6,0,10,0,5,9,0,6,5,-1,-1,-1,-1,8,3,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,5,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,11,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,5,7,11,0,3,8,-1,-1,-1,-1,-1,-1,-1,7,11,5,11,10,5,0,9,1,-1,-1,-1,-1,-1,-1,-1,5,7,10,7,11,10,1,8,9,1,3,8,-1,-1,-1,-1,2,1,11,1,7,11,1,5,7,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,2,1,5,7,1,11,2,7,-1,-1,-1,-1,5,7,9,7,2,9,2,0,9,7,11,2,-1,-1,-1,-1,2,5,7,11,2,7,2,9,5,8,2,3,2,8,9,-1,10,5,2,5,3,2,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,2,8,2,5,8,5,7,8,5,2,10,-1,-1,-1,-1,1,0,9,3,10,5,7,3,5,2,10,3,-1,-1,-1,-1,2,8,9,1,2,9,2,7,8,5,2,10,2,5,7,-1,5,3,1,5,7,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,1,7,0,5,7,1,-1,-1,-1,-1,-1,-1,-1,3,0,9,5,3,9,7,3,5,-1,-1,-1,-1,-1,-1,-1,7,8,9,7,9,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,5,8,10,5,8,11,10,-1,-1,-1,-1,-1,-1,-1,4,0,5,0,11,5,11,10,5,0,3,11,-1,-1,-1,-1,9,1,0,10,4,8,11,10,8,5,4,10,-1,-1,-1,-1,4,11,10,5,4,10,4,3,11,1,4,9,4,1,3,-1,1,5,2,5,8,2,8,11,2,8,5,4,-1,-1,-1,-1,11,4,0,3,11,0,11,5,4,1,11,2,11,1,5,-1,5,2,0,9,5,0,5,11,2,8,5,4,5,8,11,-1,5,4,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,2,2,5,3,5,4,3,4,8,3,-1,-1,-1,-1,2,10,5,4,2,5,0,2,4,-1,-1,-1,-1,-1,-1,-1,2,10,3,10,5,3,5,8,3,8,5,4,9,1,0,-1,2,10,5,4,2,5,2,9,1,2,4,9,-1,-1,-1,-1,5,4,8,3,5,8,1,5,3,-1,-1,-1,-1,-1,-1,-1,5,4,0,5,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,4,8,3,5,8,5,0,9,5,3,0,-1,-1,-1,-1,5,4,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,11,4,11,9,4,11,10,9,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,9,4,7,11,9,11,10,9,-1,-1,-1,-1,11,10,1,4,11,1,0,4,1,11,4,7,-1,-1,-1,-1,4,1,3,8,4,3,4,10,1,11,4,7,4,11,10,-1,7,11,4,4,11,9,11,2,9,2,1,9,-1,-1,-1,-1,4,7,9,7,11,9,11,1,9,1,11,2,3,8,0,-1,4,7,11,2,4,11,0,4,2,-1,-1,-1,-1,-1,-1,-1,4,7,11,2,4,11,4,3,8,4,2,3,-1,-1,-1,-1,10,9,2,9,7,2,7,3,2,9,4,7,-1,-1,-1,-1,7,10,9,4,7,9,7,2,10,0,7,8,7,0,2,-1,10,7,3,2,10,3,10,4,7,0,10,1,10,0,4,-1,2,10,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,3,1,7,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,1,8,0,1,7,8,-1,-1,-1,-1,3,0,4,3,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,10,9,8,11,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,10,9,11,-1,-1,-1,-1,-1,-1,-1,10,1,0,8,10,0,11,10,8,-1,-1,-1,-1,-1,-1,-1,10,1,3,10,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,1,9,11,1,8,11,9,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,9,2,1,9,11,2,-1,-1,-1,-1,11,2,0,11,0,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,9,8,10,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,8,1,0,8,10,1,-1,-1,-1,-1,2,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,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]),numTrisTable:new Float32Array([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,2,3,4,4,3,3,4,4,3,4,5,5,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,2,3,3,4,3,4,2,3,3,4,4,5,4,5,3,2,3,4,4,3,4,5,3,2,4,5,5,4,5,2,4,1,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,2,4,3,4,3,5,2,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,3,4,4,3,4,5,5,4,4,3,5,2,5,4,2,1,2,3,3,4,3,4,4,5,3,4,4,5,2,3,3,2,3,4,4,5,4,5,5,2,4,3,5,4,3,2,4,1,3,4,4,5,4,5,3,4,4,5,5,2,3,4,2,1,2,3,3,2,3,4,2,1,3,2,4,1,2,1,1,0])}}var Vl=new hR,Ed=class{constructor(){this.pyramidPassScene=new xR;this.pyramidPassMaterial=new Cn({name:"PyramidPass"});this.pyramidPassUniforms={inputTexture:{value:void 0},inputWidth:{value:0},inputHeight:{value:0},inputShiftX:{value:0},outputShiftX:{value:0}};this.pyramidTopLevelReadPixelBuffer=new Float32Array(4);let t=`
|
|
3606
|
+
`,triTable:new Float32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,1,8,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,9,9,2,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,2,8,10,2,8,9,10,-1,-1,-1,-1,-1,-1,-1,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,0,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,1,11,9,1,11,8,9,-1,-1,-1,-1,-1,-1,-1,1,10,3,3,10,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,10,0,10,8,0,10,11,8,-1,-1,-1,-1,-1,-1,-1,0,9,3,9,11,3,9,10,11,-1,-1,-1,-1,-1,-1,-1,10,8,9,11,8,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,4,3,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,4,1,7,4,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,2,1,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,3,4,0,3,10,2,1,-1,-1,-1,-1,-1,-1,-1,10,2,9,2,0,9,7,4,8,-1,-1,-1,-1,-1,-1,-1,9,10,2,7,9,2,3,7,2,4,9,7,-1,-1,-1,-1,7,4,8,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,11,4,2,11,4,0,2,-1,-1,-1,-1,-1,-1,-1,1,0,9,7,4,8,11,3,2,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,9,2,11,9,1,2,9,-1,-1,-1,-1,1,10,3,10,11,3,4,8,7,-1,-1,-1,-1,-1,-1,-1,10,11,1,11,4,1,4,0,1,4,11,7,-1,-1,-1,-1,8,7,4,11,0,9,10,11,9,3,0,11,-1,-1,-1,-1,11,7,4,9,11,4,10,11,9,-1,-1,-1,-1,-1,-1,-1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,9,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,0,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,8,5,3,8,5,1,3,-1,-1,-1,-1,-1,-1,-1,10,2,1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,10,2,1,5,9,4,-1,-1,-1,-1,-1,-1,-1,10,2,5,2,4,5,2,0,4,-1,-1,-1,-1,-1,-1,-1,5,10,2,5,2,3,4,5,3,8,4,3,-1,-1,-1,-1,4,5,9,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,11,8,0,5,9,4,-1,-1,-1,-1,-1,-1,-1,4,5,0,5,1,0,11,3,2,-1,-1,-1,-1,-1,-1,-1,5,1,2,8,5,2,11,8,2,5,8,4,-1,-1,-1,-1,11,3,10,3,1,10,4,5,9,-1,-1,-1,-1,-1,-1,-1,5,9,4,1,8,0,1,10,8,10,11,8,-1,-1,-1,-1,0,4,5,11,0,5,10,11,5,3,0,11,-1,-1,-1,-1,8,4,5,10,8,5,11,8,10,-1,-1,-1,-1,-1,-1,-1,8,7,9,9,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,9,3,5,9,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,7,0,7,1,0,7,5,1,-1,-1,-1,-1,-1,-1,-1,3,5,1,7,5,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,9,7,5,9,2,1,10,-1,-1,-1,-1,-1,-1,-1,2,1,10,0,5,9,0,3,5,3,7,5,-1,-1,-1,-1,2,0,8,5,2,8,7,5,8,2,5,10,-1,-1,-1,-1,5,10,2,3,5,2,7,5,3,-1,-1,-1,-1,-1,-1,-1,5,9,7,9,8,7,2,11,3,-1,-1,-1,-1,-1,-1,-1,7,5,9,2,7,9,0,2,9,11,7,2,-1,-1,-1,-1,11,3,2,8,1,0,8,7,1,7,5,1,-1,-1,-1,-1,1,2,11,7,1,11,5,1,7,-1,-1,-1,-1,-1,-1,-1,8,5,9,7,5,8,3,1,10,11,3,10,-1,-1,-1,-1,0,7,5,9,0,5,0,11,7,10,0,1,0,10,11,-1,0,10,11,3,0,11,0,5,10,7,0,8,0,7,5,-1,5,10,11,5,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,9,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,8,9,1,6,10,5,-1,-1,-1,-1,-1,-1,-1,5,6,1,1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,1,6,2,1,8,0,3,-1,-1,-1,-1,-1,-1,-1,5,6,9,6,0,9,6,2,0,-1,-1,-1,-1,-1,-1,-1,8,9,5,2,8,5,6,2,5,8,2,3,-1,-1,-1,-1,11,3,2,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,11,0,2,11,5,6,10,-1,-1,-1,-1,-1,-1,-1,9,1,0,11,3,2,6,10,5,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,9,1,2,11,9,11,8,9,-1,-1,-1,-1,11,3,6,3,5,6,3,1,5,-1,-1,-1,-1,-1,-1,-1,11,8,0,5,11,0,1,5,0,6,11,5,-1,-1,-1,-1,6,11,3,6,3,0,5,6,0,9,5,0,-1,-1,-1,-1,9,5,6,11,9,6,8,9,11,-1,-1,-1,-1,-1,-1,-1,6,10,5,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,3,7,4,10,5,6,-1,-1,-1,-1,-1,-1,-1,0,9,1,6,10,5,7,4,8,-1,-1,-1,-1,-1,-1,-1,5,6,10,7,9,1,3,7,1,4,9,7,-1,-1,-1,-1,2,1,6,1,5,6,8,7,4,-1,-1,-1,-1,-1,-1,-1,5,2,1,6,2,5,4,0,3,7,4,3,-1,-1,-1,-1,7,4,8,5,0,9,5,6,0,6,2,0,-1,-1,-1,-1,9,3,7,4,9,7,9,2,3,6,9,5,9,6,2,-1,2,11,3,4,8,7,5,6,10,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,7,4,0,2,4,11,7,2,-1,-1,-1,-1,9,1,0,8,7,4,11,3,2,6,10,5,-1,-1,-1,-1,1,2,9,2,11,9,11,4,9,4,11,7,6,10,5,-1,7,4,8,5,11,3,1,5,3,6,11,5,-1,-1,-1,-1,11,1,5,6,11,5,11,0,1,4,11,7,11,4,0,-1,9,5,0,5,6,0,6,3,0,3,6,11,7,4,8,-1,9,5,6,11,9,6,9,7,4,9,11,7,-1,-1,-1,-1,9,4,10,10,4,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,4,10,9,4,3,8,0,-1,-1,-1,-1,-1,-1,-1,1,0,10,0,6,10,0,4,6,-1,-1,-1,-1,-1,-1,-1,1,3,8,6,1,8,4,6,8,10,1,6,-1,-1,-1,-1,9,4,1,4,2,1,4,6,2,-1,-1,-1,-1,-1,-1,-1,8,0,3,9,2,1,9,4,2,4,6,2,-1,-1,-1,-1,4,2,0,6,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,4,2,8,6,2,4,-1,-1,-1,-1,-1,-1,-1,9,4,10,4,6,10,3,2,11,-1,-1,-1,-1,-1,-1,-1,2,8,0,11,8,2,10,9,4,6,10,4,-1,-1,-1,-1,2,11,3,6,1,0,4,6,0,10,1,6,-1,-1,-1,-1,1,4,6,10,1,6,1,8,4,11,1,2,1,11,8,-1,4,6,9,6,3,9,3,1,9,3,6,11,-1,-1,-1,-1,1,11,8,0,1,8,1,6,11,4,1,9,1,4,6,-1,6,11,3,0,6,3,4,6,0,-1,-1,-1,-1,-1,-1,-1,8,4,6,8,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,7,10,8,7,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,7,0,7,10,0,10,9,0,10,7,6,-1,-1,-1,-1,7,6,10,7,10,1,8,7,1,0,8,1,-1,-1,-1,-1,7,6,10,1,7,10,3,7,1,-1,-1,-1,-1,-1,-1,-1,6,2,1,8,6,1,9,8,1,7,6,8,-1,-1,-1,-1,9,6,2,1,9,2,9,7,6,3,9,0,9,3,7,-1,0,8,7,6,0,7,2,0,6,-1,-1,-1,-1,-1,-1,-1,2,3,7,2,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,2,8,6,10,9,8,10,7,6,8,-1,-1,-1,-1,7,0,2,11,7,2,7,9,0,10,7,6,7,10,9,-1,0,8,1,8,7,1,7,10,1,10,7,6,11,3,2,-1,1,2,11,7,1,11,1,6,10,1,7,6,-1,-1,-1,-1,6,9,8,7,6,8,6,1,9,3,6,11,6,3,1,-1,1,9,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,6,0,7,0,11,3,0,6,11,-1,-1,-1,-1,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,8,1,3,8,6,7,11,-1,-1,-1,-1,-1,-1,-1,2,1,10,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,8,0,3,7,11,6,-1,-1,-1,-1,-1,-1,-1,0,9,2,9,10,2,7,11,6,-1,-1,-1,-1,-1,-1,-1,7,11,6,3,10,2,3,8,10,8,9,10,-1,-1,-1,-1,3,2,7,7,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,7,0,6,7,0,2,6,-1,-1,-1,-1,-1,-1,-1,6,7,2,7,3,2,9,1,0,-1,-1,-1,-1,-1,-1,-1,2,6,1,6,8,1,8,9,1,6,7,8,-1,-1,-1,-1,6,7,10,7,1,10,7,3,1,-1,-1,-1,-1,-1,-1,-1,6,7,10,10,7,1,7,8,1,8,0,1,-1,-1,-1,-1,7,3,0,10,7,0,9,10,0,7,10,6,-1,-1,-1,-1,10,6,7,8,10,7,9,10,8,-1,-1,-1,-1,-1,-1,-1,4,8,6,6,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,3,6,0,3,6,4,0,-1,-1,-1,-1,-1,-1,-1,11,6,8,6,4,8,1,0,9,-1,-1,-1,-1,-1,-1,-1,6,4,9,3,6,9,1,3,9,6,3,11,-1,-1,-1,-1,4,8,6,8,11,6,1,10,2,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,0,3,11,6,0,6,4,0,-1,-1,-1,-1,8,11,4,11,6,4,9,2,0,9,10,2,-1,-1,-1,-1,3,9,10,2,3,10,3,4,9,6,3,11,3,6,4,-1,3,2,8,2,4,8,2,6,4,-1,-1,-1,-1,-1,-1,-1,2,4,0,2,6,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,4,3,2,6,4,2,8,3,4,-1,-1,-1,-1,4,9,1,2,4,1,6,4,2,-1,-1,-1,-1,-1,-1,-1,3,1,8,1,6,8,6,4,8,1,10,6,-1,-1,-1,-1,0,1,10,6,0,10,4,0,6,-1,-1,-1,-1,-1,-1,-1,3,6,4,8,3,4,3,10,6,9,3,0,3,9,10,-1,4,9,10,4,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,9,4,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,5,9,4,6,7,11,-1,-1,-1,-1,-1,-1,-1,1,0,5,0,4,5,11,6,7,-1,-1,-1,-1,-1,-1,-1,6,7,11,4,3,8,4,5,3,5,1,3,-1,-1,-1,-1,4,5,9,2,1,10,11,6,7,-1,-1,-1,-1,-1,-1,-1,7,11,6,10,2,1,3,8,0,5,9,4,-1,-1,-1,-1,11,6,7,10,4,5,10,2,4,2,0,4,-1,-1,-1,-1,8,4,3,4,5,3,5,2,3,2,5,10,6,7,11,-1,3,2,7,2,6,7,9,4,5,-1,-1,-1,-1,-1,-1,-1,4,5,9,6,8,0,2,6,0,7,8,6,-1,-1,-1,-1,2,6,3,6,7,3,0,5,1,0,4,5,-1,-1,-1,-1,8,2,6,7,8,6,8,1,2,5,8,4,8,5,1,-1,4,5,9,6,1,10,6,7,1,7,3,1,-1,-1,-1,-1,10,6,1,6,7,1,7,0,1,0,7,8,4,5,9,-1,10,0,4,5,10,4,10,3,0,7,10,6,10,7,3,-1,10,6,7,8,10,7,10,4,5,10,8,4,-1,-1,-1,-1,5,9,6,9,11,6,9,8,11,-1,-1,-1,-1,-1,-1,-1,11,6,3,3,6,0,6,5,0,5,9,0,-1,-1,-1,-1,8,11,0,11,5,0,5,1,0,11,6,5,-1,-1,-1,-1,3,11,6,5,3,6,1,3,5,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,5,9,8,11,9,6,5,11,-1,-1,-1,-1,3,11,0,11,6,0,6,9,0,9,6,5,10,2,1,-1,5,8,11,6,5,11,5,0,8,2,5,10,5,2,0,-1,3,11,6,5,3,6,3,10,2,3,5,10,-1,-1,-1,-1,9,8,5,8,2,5,2,6,5,2,8,3,-1,-1,-1,-1,6,5,9,0,6,9,2,6,0,-1,-1,-1,-1,-1,-1,-1,8,5,1,0,8,1,8,6,5,2,8,3,8,2,6,-1,6,5,1,6,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,3,1,10,6,1,6,8,3,9,6,5,6,9,8,-1,0,1,10,6,0,10,0,5,9,0,6,5,-1,-1,-1,-1,8,3,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,5,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,11,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,5,7,11,0,3,8,-1,-1,-1,-1,-1,-1,-1,7,11,5,11,10,5,0,9,1,-1,-1,-1,-1,-1,-1,-1,5,7,10,7,11,10,1,8,9,1,3,8,-1,-1,-1,-1,2,1,11,1,7,11,1,5,7,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,2,1,5,7,1,11,2,7,-1,-1,-1,-1,5,7,9,7,2,9,2,0,9,7,11,2,-1,-1,-1,-1,2,5,7,11,2,7,2,9,5,8,2,3,2,8,9,-1,10,5,2,5,3,2,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,2,8,2,5,8,5,7,8,5,2,10,-1,-1,-1,-1,1,0,9,3,10,5,7,3,5,2,10,3,-1,-1,-1,-1,2,8,9,1,2,9,2,7,8,5,2,10,2,5,7,-1,5,3,1,5,7,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,1,7,0,5,7,1,-1,-1,-1,-1,-1,-1,-1,3,0,9,5,3,9,7,3,5,-1,-1,-1,-1,-1,-1,-1,7,8,9,7,9,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,5,8,10,5,8,11,10,-1,-1,-1,-1,-1,-1,-1,4,0,5,0,11,5,11,10,5,0,3,11,-1,-1,-1,-1,9,1,0,10,4,8,11,10,8,5,4,10,-1,-1,-1,-1,4,11,10,5,4,10,4,3,11,1,4,9,4,1,3,-1,1,5,2,5,8,2,8,11,2,8,5,4,-1,-1,-1,-1,11,4,0,3,11,0,11,5,4,1,11,2,11,1,5,-1,5,2,0,9,5,0,5,11,2,8,5,4,5,8,11,-1,5,4,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,2,2,5,3,5,4,3,4,8,3,-1,-1,-1,-1,2,10,5,4,2,5,0,2,4,-1,-1,-1,-1,-1,-1,-1,2,10,3,10,5,3,5,8,3,8,5,4,9,1,0,-1,2,10,5,4,2,5,2,9,1,2,4,9,-1,-1,-1,-1,5,4,8,3,5,8,1,5,3,-1,-1,-1,-1,-1,-1,-1,5,4,0,5,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,4,8,3,5,8,5,0,9,5,3,0,-1,-1,-1,-1,5,4,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,11,4,11,9,4,11,10,9,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,9,4,7,11,9,11,10,9,-1,-1,-1,-1,11,10,1,4,11,1,0,4,1,11,4,7,-1,-1,-1,-1,4,1,3,8,4,3,4,10,1,11,4,7,4,11,10,-1,7,11,4,4,11,9,11,2,9,2,1,9,-1,-1,-1,-1,4,7,9,7,11,9,11,1,9,1,11,2,3,8,0,-1,4,7,11,2,4,11,0,4,2,-1,-1,-1,-1,-1,-1,-1,4,7,11,2,4,11,4,3,8,4,2,3,-1,-1,-1,-1,10,9,2,9,7,2,7,3,2,9,4,7,-1,-1,-1,-1,7,10,9,4,7,9,7,2,10,0,7,8,7,0,2,-1,10,7,3,2,10,3,10,4,7,0,10,1,10,0,4,-1,2,10,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,3,1,7,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,1,8,0,1,7,8,-1,-1,-1,-1,3,0,4,3,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,10,9,8,11,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,10,9,11,-1,-1,-1,-1,-1,-1,-1,10,1,0,8,10,0,11,10,8,-1,-1,-1,-1,-1,-1,-1,10,1,3,10,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,1,9,11,1,8,11,9,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,9,2,1,9,11,2,-1,-1,-1,-1,11,2,0,11,0,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,9,8,10,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,8,1,0,8,10,1,-1,-1,-1,-1,2,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,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]),numTrisTable:new Float32Array([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,2,3,4,4,3,3,4,4,3,4,5,5,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,2,3,3,4,3,4,2,3,3,4,4,5,4,5,3,2,3,4,4,3,4,5,3,2,4,5,5,4,5,2,4,1,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,2,4,3,4,3,5,2,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,3,4,4,3,4,5,5,4,4,3,5,2,5,4,2,1,2,3,3,4,3,4,4,5,3,4,4,5,2,3,3,2,3,4,4,5,4,5,5,2,4,3,5,4,3,2,4,1,3,4,4,5,4,5,3,4,4,5,5,2,3,4,2,1,2,3,3,2,3,4,2,1,3,2,4,1,2,1,1,0])}}var Ul=new vL,Rd=class{constructor(){this.pyramidPassScene=new OL;this.pyramidPassMaterial=new In({name:"PyramidPass"});this.pyramidPassUniforms={inputTexture:{value:void 0},inputWidth:{value:0},inputHeight:{value:0},inputShiftX:{value:0},outputShiftX:{value:0}};this.pyramidTopLevelReadPixelBuffer=new Float32Array(4);let t=`
|
|
3607
3607
|
precision highp float;
|
|
3608
3608
|
precision highp sampler2D;
|
|
3609
3609
|
layout(location = 0) out vec4 pc_FragColor;
|
|
@@ -3643,13 +3643,13 @@ void main() {
|
|
|
3643
3643
|
pc_FragColor.g = pc_FragColor.b + tr;
|
|
3644
3644
|
pc_FragColor.r = pc_FragColor.g + tl;
|
|
3645
3645
|
}
|
|
3646
|
-
`;this.pyramidPassMaterial.fragmentShader=t,this.pyramidPassMaterial.uniforms=this.pyramidPassUniforms,this.pyramidPassMaterial.depthTest=!1,this.pyramidPassMaterial.depthWrite=!1;let e=new
|
|
3646
|
+
`;this.pyramidPassMaterial.fragmentShader=t,this.pyramidPassMaterial.uniforms=this.pyramidPassUniforms,this.pyramidPassMaterial.depthTest=!1,this.pyramidPassMaterial.depthWrite=!1;let e=new wL(As,this.pyramidPassMaterial);e.frustumCulled=!1,this.pyramidPassScene.add(e)}renderPyramid(t,e,r,o,n){new gL().min.setScalar(0);let s=e.length-1,l=new TL;r.getViewport(l),this.pyramidPassUniforms.inputShiftX.value=0,this.pyramidPassUniforms.outputShiftX.value=0;let c=s-1;for(let p=c;p>=0;p--){let d=p%2===c%2?n[0]:n[1],f=p===c?o:p%2===c%2?n[1]:n[0];this.pyramidPassUniforms.inputTexture.value=Array.isArray(f.texture)?f.texture[1]:f.texture,this.pyramidPassUniforms.inputWidth.value=f.width,this.pyramidPassUniforms.inputHeight.value=f.height,r.setRenderTarget(d);let h=e[p],m=r.getPixelRatio();r.setViewport(this.pyramidPassUniforms.outputShiftX.value/m,0,h/m,h/m),p===2&&t%2!==0&&r.setViewport(this.pyramidPassUniforms.outputShiftX.value/m,0,3/m,3/m),r.render(this.pyramidPassScene,Ul);let y=this.pyramidPassUniforms.inputShiftX.value;this.pyramidPassUniforms.inputShiftX.value=this.pyramidPassUniforms.outputShiftX.value,this.pyramidPassUniforms.outputShiftX.value=y,p<c&&(this.pyramidPassUniforms.outputShiftX.value+=e[p+1])}r.setViewport(l);let u=e.length%2===0?0:1;return r.readRenderTargetPixelsAsync(n[u],n[u].width-1,0,1,1,this.pyramidTopLevelReadPixelBuffer).then(()=>this.pyramidTopLevelReadPixelBuffer[0])}};var Kr=24,Ht=96,Oo=pS(),ti=2,um=class extends tt{constructor(e,r,o){super(e,r,o);this.data=r;this.needsRebuild=!0;this.customDepthMaterialNeedsUpdate=!1;this._npart=-1;this.spatialn=1;this.drawRangeNeedsForceUpdate=!0;this._resolutionLevel=-1;this.resolution=64;this.spatialDivisions=25;this.zLayersPerRow=8;this.basePyramidSize=512;this.pyramidTexture1Width=341;this.pyramidTexture1Height=256;this.pyramidTexture2Width=170;this.pyramidTexture2Height=128;this.numLevels=9;this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512];this.bboxSize=0;this.bboxOffset=0;this.shapesDataTexture={value:void 0};this.spatialscene=new sm;this.potentialPassScene=new sm;this.voxelPassScene=new sm;this._spatialPassRenderTargets=[];this._potentialPassRenderTargets=[];this._voxelPassRenderTargets=[];this._pyramidRenderTargets=[];this.geometry=new hS,this.geometry.drawRange.count=0,this.spatialPassUniforms={span:{value:-1},shapesDataTexture:this.shapesDataTexture,npart:{value:this.npart},spatialn:{value:this.spatialn}},this.spatialMesh=new nm(As,this.spatialPassMaterial()),this.spatialMesh.frustumCulled=!1,this.spatialscene.add(this.spatialMesh);let n=new cm(Oo.triTable,16,256,am,ri);n.needsUpdate=!0;let a=new cm(Oo.numTrisTable,256,1,am,ri);a.needsUpdate=!0,this.voxelPassUniforms={potentialPassTexture:{value:void 0},numTrisTable:{value:a}},this.voxelMesh=new nm(As,this.voxelPassMaterial()),this.voxelMesh.frustumCulled=!1,this.voxelPassScene.add(this.voxelMesh),this.potentialPassUniforms={shapesDataTexture:this.shapesDataTexture,spatialPassTexture:{value:void 0},npart:{value:this.npart},spatialn:{value:this.spatialn}},this.potentialMesh=new nm(As,this.potentialPassMaterial()),this.potentialMesh.frustumCulled=!1,this.potentialPassScene.add(this.potentialMesh),this.marchPassUniforms={triTable:{value:n},potentialPassTexture:{value:void 0},voxelPassTexture:{value:void 0},pyramidTexture1:{value:void 0},pyramidTexture1Size:{value:void 0},pyramidTexture2:{value:void 0},pyramidTexture2Size:{value:void 0}},this.frustumCulled=!1,this.onBeforeShadowPass=s=>{if(DL.call(this),this.npart===0){this.geometry.drawRange.count=0;return}let l=this.material.root;if(!l.shadersPatchedForShapeBlend)this.patchVertexShaderForShapeBlend(l),l.shadersPatchedForShapeBlend=!0,this.customDepthMaterialNeedsUpdate=!0;else if(this.customDepthMaterialNeedsUpdate){this.customDepthMaterialNeedsUpdate=!1,this.customDepthMaterial=new mS({vertexShader:l.vertexShader,fragmentShader:`
|
|
3647
3647
|
#include <packing>
|
|
3648
3648
|
void main()
|
|
3649
3649
|
{
|
|
3650
3650
|
gl_FragColor = packDepthToRGBA(gl_FragCoord.z);
|
|
3651
3651
|
}
|
|
3652
|
-
`,uniforms:l.uniforms,defines:this.material.defines}),this.isMeshDepthMaterial=!0,this.customDistanceMaterial=new
|
|
3652
|
+
`,uniforms:l.uniforms,defines:this.material.defines}),this.isMeshDepthMaterial=!0,this.customDistanceMaterial=new mS({vertexShader:l.vertexShader,fragmentShader:`
|
|
3653
3653
|
#include <common>
|
|
3654
3654
|
#include <packing>
|
|
3655
3655
|
uniform vec3 referencePosition;
|
|
@@ -3664,7 +3664,7 @@ void main() {
|
|
|
3664
3664
|
dist = saturate(dist);
|
|
3665
3665
|
// Required by Three.js for this to work
|
|
3666
3666
|
gl_FragColor = packDepthToRGBA( dist );
|
|
3667
|
-
}`,uniforms:{nearDistance:{value:0},farDistance:{value:0},referencePosition:{value:new
|
|
3667
|
+
}`,uniforms:{nearDistance:{value:0},farDistance:{value:0},referencePosition:{value:new zd},opacity:{value:0},...l.uniforms},defines:this.material.defines});let p=this.customDistanceMaterial;p.referencePosition=new zd,p.nearDistance=0,p.farDistance=0,p.opacity=1,p.isMeshDistanceMaterial=!0}if(this.spatialPassUniforms.npart.value=this.npart,this.spatialPassUniforms.spatialn.value=this.spatialn,this.potentialPassUniforms.npart.value=this.npart,this.potentialPassUniforms.spatialn.value=this.spatialn,this.needsRebuild){this.needsRebuild=!1,this.spatialMesh.material.defines.RES=this.resolutionLevel,this.spatialMesh.material.needsUpdate=!0,this.potentialMesh.material.defines.RES=this.resolutionLevel,this.potentialPassUniforms.spatialPassTexture.value=this.spatialPassRenderTarget.texture,this.potentialMesh.material.needsUpdate=!0,this.voxelMesh.material.defines.RES=this.resolutionLevel,this.voxelMesh.material.needsUpdate=!0,this.voxelPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.voxelPassTexture.value=this.voxelPassRenderTarget.texture[0],this.material.defines.RES=this.resolutionLevel,this.material.defines.LEVELS=this.pyramidLevelSizes.length,this.material.defines.LOOP=this.pyramidLevelSizes.length%2===0?this.pyramidLevelSizes.length-3:this.pyramidLevelSizes.length-2,this.material.defines.HALF=this.pyramidLevelSizes.length%2===0?1:0,this.material.needsUpdate=!0;let p=this.pyramidLevelSizes.length%2===0?0:1,d=this.pyramidLevelSizes.length%2===0?1:0;this.marchPassUniforms.pyramidTexture2.value=this.pyramidRenderTarget[p].texture,this.marchPassUniforms.pyramidTexture2Size.value=new lm(this.pyramidRenderTarget[p].width,this.pyramidRenderTarget[p].height),this.marchPassUniforms.pyramidTexture1.value=this.pyramidRenderTarget[d].texture,this.marchPassUniforms.pyramidTexture1Size.value=new lm(this.pyramidRenderTarget[d].width,this.pyramidRenderTarget[d].height),Object.assign(this.material.uniforms,this.marchPassUniforms)}let c=s.shadowMap.enabled;s.shadowMap.enabled=!1;let u=s.getRenderTarget();s.setRenderTarget(this.spatialPassRenderTarget),s.render(this.spatialscene,Ul),s.setRenderTarget(this.potentialPassRenderTarget),s.render(this.potentialPassScene,Ul),s.setRenderTarget(this.voxelPassRenderTarget),s.render(this.voxelPassScene,Ul),um.streamCompaction.renderPyramid(this.resolutionLevel,this.pyramidLevelSizes,s,this.voxelPassRenderTarget,this.pyramidRenderTarget).then(p=>{this.material.wireframe&&(p*3>this.geometry.attributes.position.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.dispose(),this.geometry=new hS,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.geometry.attributes.position=new fS(new Float32Array(p*3*2),3)),(p*3>this.geometry.drawRange.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.drawRange.count=Math.floor(p*1.2)*3),this.drawRangeNeedsForceUpdate=!1}),s.shadowMap.enabled=c,s.setRenderTarget(u)}}set npart(e){e!==this._npart&&(this.drawRangeNeedsForceUpdate=!0,this._npart=e,this.spatialn=Math.ceil(e/(4*Kr)))}get npart(){return this._npart}set resolutionLevel(e){let r=Math.min(8,Math.max(5,e));if(r!==this._resolutionLevel){switch(this._resolutionLevel=r,this.resolution=Math.pow(2,r),this.resolutionLevel){case 5:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192],this.bboxSize=31*8*ti,this.bboxOffset=8*ti*-1/2;break;case 6:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512],this.bboxSize=63*4*ti,this.bboxOffset=4*ti*-1/2;break;case 7:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192,384,768,1536],this.bboxSize=127*2*ti,this.bboxOffset=2*ti*-1/2;break;case 8:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512,1024,2048,4096],this.bboxSize=255*ti,this.bboxOffset=ti*-1/2;break}this.pyramidTexture1Width=0,this.pyramidTexture2Width=0,this.pyramidTexture1Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-2],this.pyramidTexture2Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-3];for(let o=this.pyramidLevelSizes.length-2;o>=0;o--)(this.pyramidLevelSizes.length-2)%2===o%2?this.pyramidTexture1Width+=this.pyramidLevelSizes[o]:this.pyramidTexture2Width+=this.pyramidLevelSizes[o];this.basePyramidSize=this.pyramidLevelSizes[this.pyramidLevelSizes.length-1],this.zLayersPerRow=this.basePyramidSize/this.resolution,this.numLevels=this.pyramidLevelSizes.length-1,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.needsRebuild=!0,this.customDepthMaterialNeedsUpdate=!0}}get resolutionLevel(){return this._resolutionLevel}get spatialPassRenderTarget(){let e=this._spatialPassRenderTargets[this.resolutionLevel];return e||(e=new Bd(this.spatialDivisions*this.spatialn,this.spatialDivisions**2,{format:Is,type:ri,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),this._spatialPassRenderTargets[this.resolutionLevel]=e),e}get potentialPassRenderTarget(){let e=this._potentialPassRenderTargets[this.resolutionLevel];return e||(e=new Bd(this.basePyramidSize,this.basePyramidSize,{format:Is,type:ri,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),this._potentialPassRenderTargets[this.resolutionLevel]=e),e}get voxelPassRenderTarget(){let e=this._voxelPassRenderTargets[this.resolutionLevel];return e||(e=new AL(this.basePyramidSize,this.basePyramidSize,2,{stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),e.texture[0].format=Is,e.texture[0].type=ri,e.texture[1].format=am,e.texture[1].type=ri,this._voxelPassRenderTargets[this.resolutionLevel]=e),e}get pyramidRenderTarget(){let e=this._pyramidRenderTargets[this.resolutionLevel];if(!e){let r=new Bd(this.pyramidTexture1Width,this.pyramidTexture1Height,{format:Is,type:ri,stencilBuffer:!1,depthBuffer:!1,magFilter:Po,minFilter:Po}),o=new Bd(this.pyramidTexture2Width,this.pyramidTexture2Height,{format:Is,type:ri,stencilBuffer:!1,depthBuffer:!1,magFilter:Po,minFilter:Po});e=[r,o],this._pyramidRenderTargets[this.resolutionLevel]=e}return e}updateState(e,r){let o=this.material;super.updateState(e,r),o!==this.material&&(this.needsRebuild=!0),e.geometry&&(this.resolutionLevel=e.geometry.resolutionLevel,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]}),e.wireframe&&!this.geometry.getAttribute("position")?this.geometry.setAttribute("position",new fS(new Float32Array(this.geometry.drawRange.count*3),3)):!e.wireframe&&this.geometry.getAttribute("position")&&this.geometry.deleteAttribute("position")}spatialPassMaterial(){let e=`
|
|
3668
3668
|
precision highp float;
|
|
3669
3669
|
out vec4 pc_FragColor;
|
|
3670
3670
|
const float spatialDivisions = ${this.spatialDivisions}.;
|
|
@@ -3680,7 +3680,7 @@ void main() {
|
|
|
3680
3680
|
// gives a key to which spheres from lowi..lowi+23 are active within given div (low..high)
|
|
3681
3681
|
float spatialKey(float lowi) {
|
|
3682
3682
|
float t = 0.;
|
|
3683
|
-
for (float ii = ${
|
|
3683
|
+
for (float ii = ${Kr-1}.; ii >= 0.; ii--) {
|
|
3684
3684
|
float i = ii + lowi;
|
|
3685
3685
|
float iin = (i + 0.5) / ${Ht}.;
|
|
3686
3686
|
vec4 shape = shapePos(iin);
|
|
@@ -3709,7 +3709,7 @@ void main() {
|
|
|
3709
3709
|
div.z = yz; // getpart(yz, spatialDivisions.z); // what's left, should be the same as getpart
|
|
3710
3710
|
|
|
3711
3711
|
float lx = float(gl_FragCoord.x - 0.5); // contains x, lowi faster moving
|
|
3712
|
-
float lowi = getpart(lx, spatialn) * ${4*
|
|
3712
|
+
float lowi = getpart(lx, spatialn) * ${4*Kr}.;
|
|
3713
3713
|
div.x = lx;
|
|
3714
3714
|
|
|
3715
3715
|
low = div / spatialDivisions * 2. - 1. - span;
|
|
@@ -3717,11 +3717,11 @@ void main() {
|
|
|
3717
3717
|
|
|
3718
3718
|
// find active range of spheres
|
|
3719
3719
|
pc_FragColor.x = spatialKey(lowi);
|
|
3720
|
-
pc_FragColor.y = spatialKey(lowi+${
|
|
3721
|
-
pc_FragColor.z = spatialKey(lowi+${2*
|
|
3722
|
-
pc_FragColor.w = spatialKey(lowi+${3*
|
|
3720
|
+
pc_FragColor.y = spatialKey(lowi+${Kr}.);
|
|
3721
|
+
pc_FragColor.z = spatialKey(lowi+${2*Kr}.);
|
|
3722
|
+
pc_FragColor.w = spatialKey(lowi+${3*Kr}.);
|
|
3723
3723
|
}
|
|
3724
|
-
`;return new
|
|
3724
|
+
`;return new In({name:"Spatial Pass",fragmentShader:e,uniforms:this.spatialPassUniforms})}potentialPassMaterial(){let e=`
|
|
3725
3725
|
precision highp float;
|
|
3726
3726
|
out vec4 pc_FragColor;
|
|
3727
3727
|
|
|
@@ -3836,7 +3836,7 @@ void main() {
|
|
|
3836
3836
|
inout float colorDivisor,
|
|
3837
3837
|
inout vec4 trackColor
|
|
3838
3838
|
) {
|
|
3839
|
-
for (float i = 0.; i < ${
|
|
3839
|
+
for (float i = 0.; i < ${Kr}.; i++) {
|
|
3840
3840
|
if (activeKey < 1.) break; // activeKey exhausted, no more active spheres
|
|
3841
3841
|
activeKey *= 0.5;
|
|
3842
3842
|
if (fract(activeKey) < 0.5) continue;
|
|
@@ -3897,13 +3897,13 @@ void main() {
|
|
|
3897
3897
|
// spatialPassTexture holds x=> lowi, x faster moving and y=> z, y faster moving
|
|
3898
3898
|
float divyz = (div.y + div.z * spatialDivisions + 0.5) / (spatialDivisions2);
|
|
3899
3899
|
for (float ii = 0.; ii < spatialn; ii++) {
|
|
3900
|
-
float i = ii * ${4*
|
|
3900
|
+
float i = ii * ${4*Kr}.;
|
|
3901
3901
|
|
|
3902
3902
|
vec4 activeKey = texture(spatialPassTexture, vec2((div.x * spatialn + ii + 0.5)/(spatialn * spatialDivisions), divyz));
|
|
3903
3903
|
fillSpatialInner(i, activeKey.x, corner, sdf, colorDivisor, trackColor);
|
|
3904
|
-
fillSpatialInner(i+${
|
|
3905
|
-
fillSpatialInner(i+${2*
|
|
3906
|
-
fillSpatialInner(i+${3*
|
|
3904
|
+
fillSpatialInner(i+${Kr}., activeKey.y, corner, sdf, colorDivisor, trackColor);
|
|
3905
|
+
fillSpatialInner(i+${2*Kr}., activeKey.z, corner, sdf, colorDivisor, trackColor);
|
|
3906
|
+
fillSpatialInner(i+${3*Kr}., activeKey.w, corner, sdf, colorDivisor, trackColor);
|
|
3907
3907
|
}
|
|
3908
3908
|
|
|
3909
3909
|
trackColor /= colorDivisor;
|
|
@@ -3923,7 +3923,7 @@ void main() {
|
|
|
3923
3923
|
|
|
3924
3924
|
pc_FragColor = vec4(t, packRGBAToVec3(c)); // RGB texture
|
|
3925
3925
|
}
|
|
3926
|
-
`;return new
|
|
3926
|
+
`;return new In({name:"PotentialPass",fragmentShader:e,uniforms:this.potentialPassUniforms})}voxelPassMaterial(){let e=`
|
|
3927
3927
|
precision highp float;
|
|
3928
3928
|
layout(location = 0) out vec4 pc_FragColor;
|
|
3929
3929
|
layout(location = 1) out vec4 numTris;
|
|
@@ -3986,7 +3986,7 @@ void main() {
|
|
|
3986
3986
|
|
|
3987
3987
|
numTris = texture(numTrisTable, vec2((key + 0.5) / 256., 0.5));
|
|
3988
3988
|
}
|
|
3989
|
-
`;return new
|
|
3989
|
+
`;return new In({name:"VoxelPass",fragmentShader:e,uniforms:this.voxelPassUniforms})}patchVertexShaderForShapeBlend(e){let r=`
|
|
3990
3990
|
#ifdef SHAPEBLEND
|
|
3991
3991
|
precision highp sampler2D;
|
|
3992
3992
|
|
|
@@ -4009,7 +4009,7 @@ void main() {
|
|
|
4009
4009
|
const float Z_LAYERS_PER_ROW = ceil(pow(2., res / 2.));
|
|
4010
4010
|
const float INV_VOXEL_RESOLUTION = 1.0 / VOXEL_RESOLUTION;
|
|
4011
4011
|
|
|
4012
|
-
const float scale_factor = ${
|
|
4012
|
+
const float scale_factor = ${ti}.;
|
|
4013
4013
|
|
|
4014
4014
|
#if SHAPEBLEND == 5
|
|
4015
4015
|
const float levelShiftX[7] = float[7](4., 6., 12., 24., 48., 96., 192.);
|
|
@@ -4198,7 +4198,7 @@ void main() {
|
|
|
4198
4198
|
${n[0]}
|
|
4199
4199
|
#endif
|
|
4200
4200
|
`;e.fragmentShader=`in vec4 marchColor;
|
|
4201
|
-
`+e.fragmentShader.replace(n[0],s),Object.assign(e.uniforms,this.marchPassUniforms)}initDebugPass(e){console.log("fboToDebug.width",e.width,e.height),this.geometry=new
|
|
4201
|
+
`+e.fragmentShader.replace(n[0],s),Object.assign(e.uniforms,this.marchPassUniforms)}initDebugPass(e){console.log("fboToDebug.width",e.width,e.height),this.geometry=new CL(e.width,e.height),this.geometry.userData={parameters:{width:4,height:4}};let r={inputTexture:{value:Array.isArray(e.texture)?e.texture[1]:e.texture},pyramidTextureSize:{value:void 0}},o=n=>{n.vertexShader=`
|
|
4202
4202
|
precision highp float;
|
|
4203
4203
|
|
|
4204
4204
|
varying vec2 vUv;
|
|
@@ -4222,7 +4222,7 @@ void main() {
|
|
|
4222
4222
|
gl_FragColor = texture(inputTexture, vUv);
|
|
4223
4223
|
gVelocity = vec4(0.0);
|
|
4224
4224
|
}
|
|
4225
|
-
`,r.pyramidTextureSize.value=new om(this.pyramidRenderTarget.width,this.pyramidRenderTarget.height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},zi=nm;zi.streamCompaction=new Ed;var wR=new dS,PR=new dS,Os=new pS,Fi=new _d,Dd=new _d,OR=new pS;function TR(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];Fo.is(r)&&fS.call(r,i,t+1)}}function fS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];Fo.is(o)&&fS.call(o,i,t+1)}}}function CR(){if(this.shapesDataTexture.value===void 0){let a=new im(new Float32Array(4*Ht*Gi),Ht,Gi,Ts,ti);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=wR.copy(this.matrixWorld).invert(),n=0;TR.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof Ni)return;if(a instanceof fs||a instanceof ws)return;a instanceof Br?s=a.object:s=a;let l=a.data?.cloner;if(De.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof et))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(PR.multiplyMatrices(o,a.matrixWorld).decompose(Dd,Os,Fi),c.type==="TorusGeometry"&&c.arc!==360){let v=c.arc*Math.PI/180;v=v/4,Os.multiply(OR.set(0,0,Math.sin(v),Math.cos(v)))}let p=u.overrideGlobalBlend?u.blendRange:r;p=p/this.bboxSize*2,t[n*4]=(Dd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(Dd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(Dd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[Ht*4+n*4]=-Os.x,t[Ht*4+n*4+1]=-Os.y,t[Ht*4+n*4+2]=-Os.z,t[Ht*4+n*4+3]=Os.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*Fi.x+p,f[2]*Fi.x+p,f[3]*Fi.x+p);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let v=c.width,w=c.height,O=c.depth;f[0]=2,f[1]=(v-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(O-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(v**2+w**2+O**2)/this.bboxSize*Fi.x+p)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let v=c.height,w=c.radiusBottom,O=c.radiusTop;if(O>=w){let S=Math.atan2(O-w,v),T=(Math.PI/2-S)/2;O-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>O){let S=Math.atan2(w-O,v),T=(Math.PI/2-S)/2;O-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===O?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=O/this.bboxSize*2),e=Math.max(e,f[1]*4*Fi.x+p)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[Ht*12+n*4+3]=f[2];let v=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-v;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*Fi.x/this.bboxSize+p)}t.set(f,Ht*8+n*4),t[Ht*12+n*4]=p,t[Ht*12+n*4+1]=h/this.bboxSize*2,t[Ht*12+n*4+2]=Fi.x;let m=s.material,y=m.uniforms.nodeU0.node.value,x=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(x=-1),t[Ht*16+n*4]=y.r,t[Ht*16+n*4+1]=y.g,t[Ht*16+n*4+2]=y.b,t[Ht*16+n*4+3]=x,x<1&&this.material.defines.SHAPEBLEND_C===1&&(this.material.transparent=!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as IR,Ray as ER,Raycaster as NR}from"three";var yS=1<<9;function hS(i,t){let e=!1,r=i.layers.mask&yS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ls(i),ss(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof nr&&i.needsAO&&i.layers.enable(5),e}function mS(i,t){if(!t.layers)return!1;let e=i.layers.mask&yS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function gS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)hS(e,e.material[r])&&(t=!0);else hS(e,e.material)&&(t=!0)}),t}function xS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)mS(e,e.material[r])&&(t=!0);else mS(e,e.material)&&(t=!0)}),t}var DR=new NR,_R=new IR,RR=new ER;function Ll(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=_R.copy(n.matrixWorld).invert(),s=RR.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=DR;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var Rd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var bS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var To=class{};Xi(To,"DepthMapRange",1<<16),Xi(To,"MemoryPageSize",65536),Xi(To,"BytesPerFloat",4),Xi(To,"BytesPerInt",4);function LR(i){let t,e,r,o,n,a,s,l,c,u,d,p,f,h,m,y;function x(I){let N=new Float64Array(u,a,16);for(let R=0;R<16;R++)N[R]=I[R];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,p.DepthMapRange,r);let R=new Uint32Array(r);_=R.buffer,R.set(new Uint32Array(u,l,r))}else if(r===1){let R=new Uint32Array(r);R[0]=new Uint32Array(u,o,e)[0],_=R.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function v(I,N,_){let R=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=N[U],q=I[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):D(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):D(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||O(W,ee,te,j))&&(F.length===0||!O(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);R[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,R[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,R[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(I,N){let _=[],R=N.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):D(B)),V=N.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):D(B)),U=I.length;for(let B=0;B<U;B+=3){let q=I[B],j=I[B+1],F=I[B+2];(R.length===0||O(q,j,F,R))&&(V.length===0||!O(q,j,F,V))||_.push(B/3)}return _}function O(I,N,_,R,V){return R[V==="Intersect"?"every":"some"](U=>{let B=S(I,N,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?g(B.x,B.y,B.z,U):E(B.x,B.y,B.z,U)})}function S(I,N,_,R,V){let U=I-V[0],B=N-V[1],q=_-V[2],j=1/(R[3]*U+R[7]*B+R[11]*q+R[15]);return{x:(R[0]*U+R[4]*B+R[8]*q+R[12])*j+V[0],y:(R[1]*U+R[5]*B+R[9]*q+R[13])*j+V[1],z:(R[2]*U+R[6]*B+R[10]*q+R[14])*j+V[2]}}function T(I){let N=I.cropSize[0]/2,_=I.cropSize[1]/2,R=I.cropSize[2]/2,V=[I.cropCenter[0]-N,I.cropCenter[1]-_,I.cropCenter[2]-R,I.cropCenter[0]+N,I.cropCenter[1]+_,I.cropCenter[2]+R],U=M(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function M(I){let N=[],_=I[0]*Math.PI/180,R=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(R),j=Math.sin(R),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return N[0]=q*F,N[1]=-q*H,N[2]=j,N[4]=ee+te*j,N[5]=W-Y*j,N[6]=-B*q,N[8]=Y-W*j,N[9]=te+ee*j,N[10]=U*q,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(I,N,_,R){return I>=R[0]&&I<=R[3]&&N>=R[1]&&N<=R[4]&&_>=R[2]&&_<=R[5]}function D(I){let N=2/I.cropSize[0],_=2/I.cropSize[1],R=2/I.cropSize[2],V=M(I.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:R,cropCenter:I.cropCenter,invRotationMatrix:V}}function E(I,N,_,R){let V=(I-R.cropCenter[0])*R.invRadiusX,U=(N-R.cropCenter[1])*R.invRadiusY,B=(_-R.cropCenter[2])*R.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=I=>{if(I.data.getCroppedIndexes){let N=new Uint32Array(w(new Float32Array(I.data.positions),I.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:N},[N])}else if(I.data.positions)d=I.data.positions,f=new Float32Array(d),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,h=I.data.meshIndexIntervals,v(m,y,h),i.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,h)),x(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){p=I.data.init.Constants,e=I.data.init.splatCount;let N=p.BytesPerInt,_=p.BytesPerFloat*3,R=new Uint8Array(I.data.init.sorterWasmBytes),V=N+_,U=e*V,B=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,q=p.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/p.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(R).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*N,a=n+e*_,c=a+16*p.BytesPerFloat*2,s=c+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function vS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",LR.toString(),")(self)"],{type:"application/javascript"}))),e=atob(bS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:To.BytesPerFloat,BytesPerInt:To.BytesPerInt,DepthMapRange:To.DepthMapRange,MemoryPageSize:To.MemoryPageSize}}}),t}import{Matrix4 as CS,Quaternion as AS,Vector2 as QR,Vector3 as Cs}from"three";import{BufferAttribute as BR,BufferGeometry as VR,Color as zR,DataTexture as Bd,DataUtils as GR,DoubleSide as FR,DynamicDrawUsage as jR,FloatType as wS,HalfFloatType as UR,InstancedBufferAttribute as kR,InstancedBufferGeometry as HR,Mesh as WR,NormalBlending as qR,RGBAFormat as $R,RGBAIntegerFormat as XR,RGFormat as PS,ShaderMaterial as YR,UnsignedIntType as KR,Vector2 as ji}from"three";var Ld=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),SS=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var Vd=new ji;function zd(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var Ui=class extends WR{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=Ui.buildGeomtery(r),c=Ui.buildMaterial(a);return new Ui(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
|
|
4225
|
+
`,r.pyramidTextureSize.value=new lm(this.pyramidRenderTarget.width,this.pyramidRenderTarget.height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},Fi=um;Fi.streamCompaction=new Rd;var ML=new yS,IL=new yS,Ms=new gS,Ui=new zd,Vd=new zd,NL=new gS;function EL(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];Fo.is(r)&&xS.call(r,i,t+1)}}function xS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];Fo.is(o)&&xS.call(o,i,t+1)}}}function DL(){if(this.shapesDataTexture.value===void 0){let a=new cm(new Float32Array(4*Ht*ji),Ht,ji,Is,ri);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=ML.copy(this.matrixWorld).invert(),n=0;EL.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof _i)return;if(a instanceof gs||a instanceof Cs)return;a instanceof Vr?s=a.object:s=a;let l=a.data?.cloner;if(_e.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof tt))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(IL.multiplyMatrices(o,a.matrixWorld).decompose(Vd,Ms,Ui),c.type==="TorusGeometry"&&c.arc!==360){let v=c.arc*Math.PI/180;v=v/4,Ms.multiply(NL.set(0,0,Math.sin(v),Math.cos(v)))}let d=u.overrideGlobalBlend?u.blendRange:r;d=d/this.bboxSize*2,t[n*4]=(Vd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(Vd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(Vd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[Ht*4+n*4]=-Ms.x,t[Ht*4+n*4+1]=-Ms.y,t[Ht*4+n*4+2]=-Ms.z,t[Ht*4+n*4+3]=Ms.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*Ui.x+d,f[2]*Ui.x+d,f[3]*Ui.x+d);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let v=c.width,w=c.height,O=c.depth;f[0]=2,f[1]=(v-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(O-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(v**2+w**2+O**2)/this.bboxSize*Ui.x+d)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let v=c.height,w=c.radiusBottom,O=c.radiusTop;if(O>=w){let S=Math.atan2(O-w,v),T=(Math.PI/2-S)/2;O-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>O){let S=Math.atan2(w-O,v),T=(Math.PI/2-S)/2;O-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===O?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=O/this.bboxSize*2),e=Math.max(e,f[1]*4*Ui.x+d)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[Ht*12+n*4+3]=f[2];let v=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-v;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*Ui.x/this.bboxSize+d)}t.set(f,Ht*8+n*4),t[Ht*12+n*4]=d,t[Ht*12+n*4+1]=h/this.bboxSize*2,t[Ht*12+n*4+2]=Ui.x;let m=s.material,y=m.uniforms.nodeU0.node.value,b=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(b=-1),t[Ht*16+n*4]=y.r,t[Ht*16+n*4+1]=y.g,t[Ht*16+n*4+2]=y.b,t[Ht*16+n*4+3]=b,b<1&&this.material.defines.SHAPEBLEND_C===1&&(this.material.transparent=!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as RL,Ray as BL,Raycaster as VL}from"three";var SS=1<<9;function bS(i,t){let e=!1,r=i.layers.mask&SS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ps(i),ds(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof ar&&i.needsAO&&i.layers.enable(5),e}function vS(i,t){if(!t.layers)return!1;let e=i.layers.mask&SS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function wS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)bS(e,e.material[r])&&(t=!0);else bS(e,e.material)&&(t=!0)}),t}function PS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof ar)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)vS(e,e.material[r])&&(t=!0);else vS(e,e.material)&&(t=!0)}),t}var zL=new VL,GL=new RL,FL=new BL;function Fl(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=GL.copy(n.matrixWorld).invert(),s=FL.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=zL;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var Gd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var OS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var To=class{};Ki(To,"DepthMapRange",1<<16),Ki(To,"MemoryPageSize",65536),Ki(To,"BytesPerFloat",4),Ki(To,"BytesPerInt",4);function jL(i){let t,e,r,o,n,a,s,l,c,u,p,d,f,h,m,y;function b(I){let E=new Float64Array(u,a,16);for(let L=0;L<16;L++)E[L]=I[L];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,d.DepthMapRange,r);let L=new Uint32Array(r);_=L.buffer,L.set(new Uint32Array(u,l,r))}else if(r===1){let L=new Uint32Array(r);L[0]=new Uint32Array(u,o,e)[0],_=L.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function v(I,E,_){let L=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=E[U],q=I[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):D(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):D(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||O(W,ee,te,j))&&(F.length===0||!O(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);L[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,L[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,L[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(I,E){let _=[],L=E.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):D(B)),V=E.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):D(B)),U=I.length;for(let B=0;B<U;B+=3){let q=I[B],j=I[B+1],F=I[B+2];(L.length===0||O(q,j,F,L))&&(V.length===0||!O(q,j,F,V))||_.push(B/3)}return _}function O(I,E,_,L,V){return L[V==="Intersect"?"every":"some"](U=>{let B=S(I,E,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?g(B.x,B.y,B.z,U):N(B.x,B.y,B.z,U)})}function S(I,E,_,L,V){let U=I-V[0],B=E-V[1],q=_-V[2],j=1/(L[3]*U+L[7]*B+L[11]*q+L[15]);return{x:(L[0]*U+L[4]*B+L[8]*q+L[12])*j+V[0],y:(L[1]*U+L[5]*B+L[9]*q+L[13])*j+V[1],z:(L[2]*U+L[6]*B+L[10]*q+L[14])*j+V[2]}}function T(I){let E=I.cropSize[0]/2,_=I.cropSize[1]/2,L=I.cropSize[2]/2,V=[I.cropCenter[0]-E,I.cropCenter[1]-_,I.cropCenter[2]-L,I.cropCenter[0]+E,I.cropCenter[1]+_,I.cropCenter[2]+L],U=M(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function M(I){let E=[],_=I[0]*Math.PI/180,L=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(L),j=Math.sin(L),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return E[0]=q*F,E[1]=-q*H,E[2]=j,E[4]=ee+te*j,E[5]=W-Y*j,E[6]=-B*q,E[8]=Y-W*j,E[9]=te+ee*j,E[10]=U*q,E[12]=0,E[13]=0,E[14]=0,E[3]=0,E[7]=0,E[11]=0,E[15]=1,E}function g(I,E,_,L){return I>=L[0]&&I<=L[3]&&E>=L[1]&&E<=L[4]&&_>=L[2]&&_<=L[5]}function D(I){let E=2/I.cropSize[0],_=2/I.cropSize[1],L=2/I.cropSize[2],V=M(I.cropRotation);return{invRadiusX:E,invRadiusY:_,invRadiusZ:L,cropCenter:I.cropCenter,invRotationMatrix:V}}function N(I,E,_,L){let V=(I-L.cropCenter[0])*L.invRadiusX,U=(E-L.cropCenter[1])*L.invRadiusY,B=(_-L.cropCenter[2])*L.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=I=>{if(I.data.getCroppedIndexes){let E=new Uint32Array(w(new Float32Array(I.data.positions),I.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:E},[E])}else if(I.data.positions)p=I.data.positions,f=new Float32Array(p),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,h=I.data.meshIndexIntervals,v(m,y,h),i.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,h)),b(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){d=I.data.init.Constants,e=I.data.init.splatCount;let E=d.BytesPerInt,_=d.BytesPerFloat*3,L=new Uint8Array(I.data.init.sorterWasmBytes),V=E+_,U=e*V,B=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,q=d.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(L).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*E,a=n+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function TS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",jL.toString(),")(self)"],{type:"application/javascript"}))),e=atob(OS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:To.BytesPerFloat,BytesPerInt:To.BytesPerInt,DepthMapRange:To.DepthMapRange,MemoryPageSize:To.MemoryPageSize}}}),t}import{Matrix4 as ES,Quaternion as DS,Vector2 as oR,Vector3 as Ns}from"three";import{BufferAttribute as UL,BufferGeometry as kL,Color as HL,DataTexture as jd,DataUtils as WL,DoubleSide as qL,DynamicDrawUsage as $L,FloatType as AS,HalfFloatType as XL,InstancedBufferAttribute as YL,InstancedBufferGeometry as KL,Mesh as QL,NormalBlending as ZL,RGBAFormat as JL,RGBAIntegerFormat as eR,RGFormat as MS,ShaderMaterial as tR,UnsignedIntType as rR,Vector2 as ki}from"three";var Fd=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),CS=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var Ud=new ki;function kd(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var Hi=class extends QL{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=Hi.buildGeomtery(r),c=Hi.buildMaterial(a);return new Hi(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
|
|
4226
4226
|
precision highp float;
|
|
4227
4227
|
#include <common>
|
|
4228
4228
|
|
|
@@ -4376,4 +4376,4 @@ void main() {
|
|
|
4376
4376
|
A = exp(A) * vColor.a;
|
|
4377
4377
|
gl_FragColor = vec4(color.rgb, A);
|
|
4378
4378
|
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
4379
|
-
}`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new ji},viewport:{type:"v2",value:new ji},basisViewport:{type:"v2",value:new ji},debugColor:{type:"v3",value:new zR},covariancesTextureSize:{type:"v2",value:new ji(1024,1024)},centersColorsTextureSize:{type:"v2",value:new ji(1024,1024)},orthoZoom:{type:"f",value:-1}};return new YR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:qR,depthTest:!0,depthWrite:!1,side:FR})}static buildGeomtery(e){let r=new VR;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new BR(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new HR().copy(r),s=new Uint32Array(e),l=new kR(s,1,!1);return l.setUsage(jR),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new ji(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new ji(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=GR.toHalfFloat(this.covariances[h]);s=new Bd(l,n.x,n.y,PS,UR)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new Bd(l,n.x,n.y,PS,wS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,x=h*4;c[x]=SS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[x+1]=Ld(this.centers[y]),c[x+2]=Ld(this.centers[y+1]),c[x+3]=Ld(this.centers[y+2])}let u=new Bd(c,a.x,a.y,XR,KR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Bd(p,d,1,$R,wS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Vd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Vd),this.material.uniforms.basisViewport.value.set(2/Vd.x,2/Vd.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var TS,am=new Promise(i=>{TS=i}),OS=!1;var Gd;function sm(){if(OS)return;if(Gd)return Gd;async function i(){let e=await import("./gaussian-splat-compression.js");TS(e),OS=!0}return Gd=i(),Gd}var MS;am.then(i=>MS=i);var zl=class{constructor(t={}){Xi(this,"updateView",function(){let t=new CS,e=[],r=new Cs(0,0,-1),o=new Cs(0,0,-1),n=new Cs,a=new Cs;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!p&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let d={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=d:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(d))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new CS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new QR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Cs().fromArray(t.position)),t.orientation&&(t.orientation=new AS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new MS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Cs,o=new AS,n=!1,a=1,s,l){this.splatMesh=Ui.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,d)=>this.update(c,d)}setupSortWorker(t){this.sortWorker=vS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var iL=new rL;iL.wireframe=!0;var IS=new JR,Fd=class extends ZR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Rd;this.invisibleObjects=new _i("jflkdsafjasdifjaslk",{...Yc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Ir("fdasfa",{..._o.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=xS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=gS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Ir&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>$l(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===hi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Ir&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Ir&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Tn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Ir&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Di(n)&&Al(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof zi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Al(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Di(o)&&(o.freeBooleanPointer(),n instanceof ar&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof vs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Di(o)&&(o.invalidateUpstreamBooleanData(),Al(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof ar&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Ir&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{aS(a,r,o,{scene:this,shared:n}),a instanceof et&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Tn||l instanceof Ir)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Ko&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{De.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=li(u.data,d=>{let p=d.events.data(l.id),f=u.goUp(s);if(f){let h=[...ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,x=Ze.zoom(p,r);x[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Jo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=li(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of Jc.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof Jo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Td(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Jo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)De.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(De.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let d=s.matrixWorld.clone().invert();u.point.applyMatrix4(d),o.push(u)}}else(Di(s)||Ml(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Ll(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Di(a)||Ml(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Ll(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)De.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)De.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)De.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof et&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Al(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Fo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)De.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Id(e,r,l);return c instanceof zi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof et&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let d=u.dataPatched;if(u instanceof et&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new eL().fromArray(m)),h=new oL(p,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new tL;return o.setFromPoints(r),o.getCenter(IS),IS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Mt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof ir&&e(r.material[o]);else r.material instanceof ir&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Ko&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new zl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as nL}from"three/examples/jsm/loaders/DRACOLoader.js";var ki;function ES(i){return ki||(ki=new nL,ki.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ki.decoderPending}async function aL(i){if(ki){let t={attributeIDs:ki.defaultAttributeIDs,attributeTypes:ki.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ki.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 NS(i,t){let[e,r]=up(Bc.deserialize(new Uint8Array(i)));return ru(e),t&&t(e),r.result().data}function DS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function _S(i){for(let t of i){let e=await aL(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as Pme}from"three";import{mergeBufferGeometries as Cme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function RS(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 LS,ShaderLib as sL}from"three";function BS(i){let t=new Set;return i.traverse(e=>{if(e instanceof nr)if(pt(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(lL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new LS,specularColor:new LS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},sL.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=ev(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else cL(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function lL(i){return i.getLayersOfType("transmission").length>0}function cL(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function VS(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function zS(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 a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as uL}from"three/examples/jsm/utils/BufferGeometryUtils.js";function GS(i){let t=[];return i.traverse(e=>{e instanceof Ni&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&RS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof Mt&&a.unshift(r.geometry),a.length){let s=uL(a);r instanceof Mt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Pv})}),i}function FS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function jS(i){Object.values(i.shared.materials).forEach(t=>{lm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?lm(e.material):"materials"in e&&e.materials.forEach(r=>{lm(r)})})}function lm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var WS=Is(kS(),1);var HS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",cm=class extends pL{load(t,e,r,o=console.error){let n=new dL(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(HS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(HS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await NS(t,jS),r=DS(e);e.version&&(0,WS.default)(e.version,"1.10.97")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&ES(),Nv(e)&&Mb(),jv(e)&&mv(),O1(e)&&S1(),zd(e)&&sm()].filter(Boolean)),r.length&&await _S(r);let o=!1,n=new xn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Fd(e.scene,n);zd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=GS(a),a=BS(a),a=VS(a),a=zS(a),a=FS(a),a}};export{cm as default};
|
|
4379
|
+
}`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new ki},viewport:{type:"v2",value:new ki},basisViewport:{type:"v2",value:new ki},debugColor:{type:"v3",value:new HL},covariancesTextureSize:{type:"v2",value:new ki(1024,1024)},centersColorsTextureSize:{type:"v2",value:new ki(1024,1024)},orthoZoom:{type:"f",value:-1}};return new tR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ZL,depthTest:!0,depthWrite:!1,side:qL})}static buildGeomtery(e){let r=new kL;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new UL(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new KL().copy(r),s=new Uint32Array(e),l=new YL(s,1,!1);return l.setUsage($L),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new ki(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new ki(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=WL.toHalfFloat(this.covariances[h]);s=new jd(l,n.x,n.y,MS,XL)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new jd(l,n.x,n.y,MS,AS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,b=h*4;c[b]=CS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Fd(this.centers[y]),c[b+2]=Fd(this.centers[y+1]),c[b+3]=Fd(this.centers[y+2])}let u=new jd(c,a.x,a.y,eR,rR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)d.set(this.meshMatrixWorlds[h].elements,h*16);let f=new jd(d,p,1,JL,AS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Ud.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Ud),this.material.uniforms.basisViewport.value.set(2/Ud.x,2/Ud.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var NS,dm=new Promise(i=>{NS=i}),IS=!1;var Hd;function pm(){if(IS)return;if(Hd)return Hd;async function i(){let e=await import("./gaussian-splat-compression.js");NS(e),IS=!0}return Hd=i(),Hd}var _S;dm.then(i=>_S=i);var kl=class{constructor(t={}){Ki(this,"updateView",function(){let t=new ES,e=[],r=new Ns(0,0,-1),o=new Ns(0,0,-1),n=new Ns,a=new Ns;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,f=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new ES().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new oR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Ns().fromArray(t.position)),t.orientation&&(t.orientation=new DS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new _S.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Ns,o=new DS,n=!1,a=1,s,l){this.splatMesh=Hi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(t){this.sortWorker=TS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var uR=new lR;uR.wireframe=!0;var LS=new nR,Wd=class extends iR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Gd;this.invisibleObjects=new Ri("jflkdsafjasdifjaslk",{...eu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Nr("fdasfa",{..._o.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=PS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=wS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Nr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>Zl(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===mi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Nr&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Mn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Nr&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Li(n)&&Dl(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof Fi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Dl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Li(o)&&(o.freeBooleanPointer(),n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Os&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Li(o)&&(o.invalidateUpstreamBooleanData(),Dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof sr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Nr&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{dS(a,r,o,{scene:this,shared:n}),a instanceof tt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Mn||l instanceof Nr)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Qo&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_e.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{_e.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ci(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...Ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=Je.zoom(d,r);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ei&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ci(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of iu.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof ei&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Nd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ei&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)_e.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(_e.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(Li(s)||_l(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Fl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||_l(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Fl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)_e.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)_e.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)_e.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof tt&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Fo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)_e.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Ld(e,r,l);return c instanceof Fi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof tt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof tt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new aR().fromArray(m)),h=new cR(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new sR;return o.setFromPoints(r),o.getCenter(LS),LS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof nr&&e(r.material[o]);else r.material instanceof nr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Qo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new kl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as dR}from"three/examples/jsm/loaders/DRACOLoader.js";var Wi;function RS(i){return Wi||(Wi=new dR,Wi.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Wi.decoderPending}async function pR(i){if(Wi){let t={attributeIDs:Wi.defaultAttributeIDs,attributeTypes:Wi.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Wi.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 BS(i,t){let[e,r]=mp(jc.deserialize(new Uint8Array(i)));return su(e),t&&t(e),r.result().data}function VS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function zS(i){for(let t of i){let e=await pR(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as $me}from"three";import{mergeBufferGeometries as Kme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function GS(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 FS,ShaderLib as fR}from"three";function jS(i){let t=new Set;return i.traverse(e=>{if(e instanceof ar)if(ft(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(hR(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new FS,specularColor:new FS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},fR.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=nv(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else mR(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function hR(i){return i.getLayersOfType("transmission").length>0}function mR(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function US(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function kS(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 a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as yR}from"three/examples/jsm/utils/BufferGeometryUtils.js";function HS(i){let t=[];return i.traverse(e=>{e instanceof _i&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&GS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=yR(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Mv})}),i}function WS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function qS(i){Object.values(i.shared.materials).forEach(t=>{fm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?fm(e.material):"materials"in e&&e.materials.forEach(r=>{fm(r)})})}function fm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var KS=_s(XS(),1);var YS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hm=class extends xR{load(t,e,r,o=console.error){let n=new gR(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(YS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(YS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await BS(t,qS),r=VS(e);e.version&&(0,KS.default)(e.version,"1.10.99")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&RS(),Bv(e)&&_b(),qv(e)&&vv(),I1(e)&&C1(),kd(e)&&pm()].filter(Boolean)),r.length&&await zS(r);let o=!1,n=new Sn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Wd(e.scene,n);kd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=HS(a),a=jS(a),a=US(a),a=kS(a),a=WS(a),a}};export{hm as default};
|