@splinetool/loader 1.9.45 → 1.9.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- "use strict";var v1=Object.create;var Hs=Object.defineProperty;var S1=Object.getOwnPropertyDescriptor;var w1=Object.getOwnPropertyNames;var P1=Object.getPrototypeOf,C1=Object.prototype.hasOwnProperty;var O1=(n,r,e)=>r in n?Hs(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Ws=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Qh=(n,r)=>{for(var e in r)Hs(n,e,{get:r[e],enumerable:!0})},Zh=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of w1(r))!C1.call(n,o)&&o!==e&&Hs(n,o,{get:()=>r[o],enumerable:!(t=S1(r,o))||t.enumerable});return n};var qs=(n,r,e)=>(e=n!=null?v1(P1(n)):{},Zh(r||!n||!n.__esModule?Hs(e,"default",{value:n,enumerable:!0}):e,n)),A1=n=>Zh(Hs({},"__esModule",{value:!0}),n);var go=(n,r,e)=>(O1(n,typeof r!="symbol"?r+"":r,e),e);var Gx=Ws((tf,zx)=>{(function(n,r){typeof tf=="object"?zx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(tf,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=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[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var qx=Ws((Eu,Wx)=>{(function(n,r){typeof Eu=="object"&&typeof Wx<"u"?r(Eu):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Eu,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,f,h,m,y,b,S=r[0].length,P=r.length;if(P<S)throw new TypeError("Invalid matrix: m < n");for(var O=[],v=[],A=[],T=e==="f"?P:S,g=m=d=0;g<P;g++)v[g]=new Array(T).fill(0);for(g=0;g<S;g++)A[g]=new Array(S).fill(0);var D,E=new Array(S).fill(0);for(g=0;g<P;g++)for(a=0;a<S;a++)v[g][a]=r[g][a];for(g=0;g<S;g++){for(O[g]=d,h=0,l=g+1,a=g;a<P;a++)h+=Math.pow(v[a][g],2);if(h<i)d=0;else for(f=(p=v[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g]=p-d,a=l;a<S;a++){for(h=0,s=g;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(E[g]=d,h=0,a=l;a<S;a++)h+=Math.pow(v[g][a],2);if(h<i)d=0;else{for(f=(p=v[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g+1]=p-d,a=l;a<S;a++)O[a]=v[g][a]/f;for(a=l;a<P;a++){for(h=0,s=l;s<S;s++)h+=v[a][s]*v[g][s];for(s=l;s<S;s++)v[a][s]=v[a][s]+h*O[s]}}m<(y=Math.abs(E[g])+Math.abs(O[g]))&&(m=y)}if(t)for(g=S-1;0<=g;g--){if(d!==0){for(f=v[g][g+1]*d,a=l;a<S;a++)A[a][g]=v[g][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<S;s++)h+=v[g][s]*A[s][a];for(s=l;s<S;s++)A[s][a]=A[s][a]+h*A[s][g]}}for(a=l;a<S;a++)A[g][a]=0,A[a][g]=0;A[g][g]=1,d=O[g],l=g}if(e){if(e==="f")for(g=S;g<P;g++){for(a=S;a<P;a++)v[g][a]=0;v[g][g]=1}for(g=S-1;0<=g;g--){for(l=g+1,d=E[g],a=l;a<T;a++)v[g][a]=0;if(d!==0){for(f=v[g][g]*d,a=l;a<T;a++){for(h=0,s=l;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(a=g;a<P;a++)v[a][g]=v[a][g]/d}else for(a=g;a<P;a++)v[a][g]=0;v[g][g]=v[g][g]+1}}for(o*=m,s=S-1;0<=s;s--)for(var M=0;M<50;M++){for(D=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){D=!0;break}if(Math.abs(E[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=E[g],E[g]=Math.sqrt(p*p+d*d),u=d/(f=E[g]),h=-p/f,e)for(a=0;a<P;a++)y=v[a][c],b=v[a][g],v[a][c]=y*u+b*h,v[a][g]=-y*h+b*u}if(b=E[s],l===s){if(b<0&&(E[s]=-b,t))for(a=0;a<S;a++)A[a][s]=-A[a][s];break}for(m=E[l],p=(((y=E[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=E[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,t)for(a=0;a<S;a++)m=A[a][g-1],b=A[a][g],A[a][g-1]=m*u+b*h,A[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(E[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<P;a++)y=v[a][g-1],b=v[a][g],v[a][g-1]=y*u+b*h,v[a][g]=-y*h+b*u}O[l]=0,O[s]=p,E[s]=m}for(g=0;g<S;g++)E[g]<o&&(E[g]=0);return{u:v,q:E,v:A}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var qv=Ws((kre,Wv)=>{"use strict";function kE(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Bi(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bi)}kE(Bi,Error);Bi.buildMessage=function(n,r){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?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(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 t(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(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(n)+" but "+l(r)+" found."};function UE(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Us},o=Us,i=function(x){if(!x)return[];for(var w=[],R=0;R<x.length;R++)w=w.concat.apply(w,x[R]);var I=w[0];return I&&I.code=="m"&&(delete I.relative,I.code="M"),w},a=function(x,w){return b1(x,w)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(x,w,R){var I=Gi(x,[w]);return R&&(I=I.concat(Gi(x=="M"?"L":"l",R[1]))),I},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Gi("Z")},f=/^[Ll]/,h=nt(["L","l"],!1,!1),m=function(x,w){return Gi(x,w)},y=/^[Hh]/,b=nt(["H","h"],!1,!1),S=function(x,w){return Gi(x,w.map(function(R){return{x:R}}))},P=/^[Vv]/,O=nt(["V","v"],!1,!1),v=function(x,w){return Gi(x,w.map(function(R){return{y:R}}))},A=/^[Cc]/,T=nt(["C","c"],!1,!1),g=function(x,w,R){return{x1:x.x,y1:x.y,x2:w.x,y2:w.y,x:R.x,y:R.y}},D=/^[Ss]/,E=nt(["S","s"],!1,!1),M=function(x,w){return{x2:x.x,y2:x.y,x:w.x,y:w.y}},N=/^[Qq]/,_=nt(["Q","q"],!1,!1),B=function(x,w){return{x1:x.x,y1:x.y,x:w.x,y:w.y}},V=/^[Tt]/,k=nt(["T","t"],!1,!1),L=/^[Aa]/,W=nt(["A","a"],!1,!1),F=function(x,w,R,I,z,oe){return{rx:x,ry:w,xAxisRotation:R,largeArc:I,sweep:z,x:oe.x,y:oe.y}},j=function(x,w){return{x,y:w}},H=function(x){return x*1},q=function(x){return x.join("")*1},re=/^[01]/,ee=nt(["0","1"],!1,!1),X=function(x){return x=="1"},te=function(){return""},K=",",Z=yt(",",!1),Q=function(x){return x.join("")},$=".",ue=yt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),ye=/^[0-9]/,fe=nt([["0","9"]],!1,!1),me=function(x){return x.join("")},be=/^[ \t\n\r]/,ge=nt([" "," ",`
2
- `,"\r"],!1,!1),C=0,ie=0,Ve=[{line:1,column:1}],ke=0,ze=[],Oe=0,Lt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function De(){return n.substring(ie,C)}function _t(){return ai(ie,C)}function Vt(x,w){throw w=w!==void 0?w:ai(ie,C),Rr([op(x)],n.substring(ie,C),w)}function ii(x,w){throw w=w!==void 0?w:ai(ie,C),np(x,w)}function yt(x,w){return{type:"literal",text:x,ignoreCase:w}}function nt(x,w,R){return{type:"class",parts:x,inverted:w,ignoreCase:R}}function Zr(){return{type:"any"}}function rp(){return{type:"end"}}function op(x){return{type:"other",description:x}}function lc(x){var w=Ve[x],R;if(w)return w;for(R=x-1;!Ve[R];)R--;for(w=Ve[R],w={line:w.line,column:w.column};R<x;)n.charCodeAt(R)===10?(w.line++,w.column=1):w.column++,R++;return Ve[x]=w,w}function ai(x,w){var R=lc(x),I=lc(w);return{start:{offset:x,line:R.line,column:R.column},end:{offset:w,line:I.line,column:I.column}}}function wt(x){C<ke||(C>ke&&(ke=C,ze=[]),ze.push(x))}function np(x,w){return new Bi(x,null,null,w)}function Rr(x,w,R){return new Bi(Bi.buildMessage(x,w),x,w,R)}function Us(){var x,w,R,I,z;for(x=C,w=[],R=Ue();R!==e;)w.push(R),R=Ue();if(w!==e)if(R=ar(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(ie=x,w=i(R),x=w):(C=x,x=e)}else C=x,x=e;else C=x,x=e;return x}function ar(){var x,w,R,I,z,oe;if(x=C,w=si(),w!==e){for(R=[],I=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;){for(R.push(I),I=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function si(){var x,w,R,I,z,oe;if(x=C,w=Vi(),w!==e){for(R=[],I=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=cc(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;){for(R.push(I),I=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=cc(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function cc(){var x;return x=n1(),x===e&&(x=i1(),x===e&&(x=a1(),x===e&&(x=s1(),x===e&&(x=l1(),x===e&&(x=u1(),x===e&&(x=p1(),x===e&&(x=h1(),x===e&&(x=y1())))))))),x}function Vi(){var x,w,R,I,z,oe,Fi;if(x=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(l)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=cr(),I!==e?(z=C,oe=pt(),oe===e&&(oe=null),oe!==e?(Fi=Uh(),Fi!==e?(oe=[oe,Fi],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=x,w=c(w,I,z),x=w):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function n1(){var x,w;return x=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(p)),w!==e&&(ie=x,w=d()),x=w,x}function i1(){var x,w,R,I;if(x=C,f.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(h)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Uh(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function Uh(){var x,w,R,I,z,oe;if(x=C,w=cr(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function a1(){var x,w,R,I;if(x=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(b)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Hh(),I!==e?(ie=x,w=S(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function Hh(){var x,w,R,I,z,oe;if(x=C,w=zi(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function s1(){var x,w,R,I;if(x=C,P.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(O)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Hh(),I!==e?(ie=x,w=v(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function l1(){var x,w,R,I;if(x=C,A.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(T)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=c1(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function c1(){var x,w,R,I,z,oe;if(x=C,w=ip(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function ip(){var x,w,R,I,z,oe;return x=C,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(ie=x,w=g(w,I,oe),x=w):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function u1(){var x,w,R,I;if(x=C,D.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(E)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=d1(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function d1(){var x,w,R,I,z,oe;if(x=C,w=ap(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function ap(){var x,w,R,I;return x=C,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=M(w,I),x=w):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function p1(){var x,w,R,I;if(x=C,N.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(_)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=f1(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function f1(){var x,w,R,I,z,oe;if(x=C,w=sp(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function sp(){var x,w,R,I;return x=C,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=B(w,I),x=w):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function h1(){var x,w,R,I;if(x=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(k)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=m1(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function m1(){var x,w,R,I,z,oe;if(x=C,w=cr(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function y1(){var x,w,R,I;if(x=C,L.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(W)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=g1(),I!==e?(ie=x,w=m(w,I),x=w):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function g1(){var x,w,R,I,z,oe;if(x=C,w=lp(),w!==e){for(R=[],I=C,z=pt(),z===e&&(z=null),z!==e?(oe=lp(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);I!==e;)R.push(I),I=C,z=pt(),z===e&&(z=null),z!==e?(oe=lp(),oe!==e?(z=[z,oe],I=z):(C=I,I=e)):(C=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(C=x,x=e)}else C=x,x=e;return x}function lp(){var x,w,R,I,z,oe,Fi,up,dc,dp,pc,pp;return x=C,w=Wh(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=Wh(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(Fi=pt(),Fi!==e?(up=qh(),up!==e?(dc=pt(),dc===e&&(dc=null),dc!==e?(dp=qh(),dp!==e?(pc=pt(),pc===e&&(pc=null),pc!==e?(pp=cr(),pp!==e?(ie=x,w=F(w,I,oe,up,dp,pp),x=w):(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 cr(){var x,w,R,I;return x=C,w=zi(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=zi(),I!==e?(ie=x,w=j(w,I),x=w):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function Wh(){var x,w;return x=C,w=Yh(),w===e&&(w=li()),w!==e&&(ie=x,w=H(w)),x=w,x}function zi(){var x,w,R,I;return x=C,w=C,R=cp(),R===e&&(R=null),R!==e?(I=Yh(),I!==e?(R=[R,I],w=R):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,R=cp(),R===e&&(R=null),R!==e?(I=li(),I!==e?(R=[R,I],w=R):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=x,w=q(w)),x=w,x}function qh(){var x,w;return x=C,re.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(ee)),w!==e&&(ie=x,w=X(w)),x=w,x}function pt(){var x,w,R,I,z;if(x=C,w=[],R=Ue(),R!==e)for(;R!==e;)w.push(R),R=Ue();else w=e;if(w!==e)if(R=$h(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(w=[w,R,I],x=w):(C=x,x=e)}else C=x,x=e;else C=x,x=e;if(x===e){if(x=C,w=C,R=$h(),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(R=[R,I],w=R):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=x,w=te()),x=w}return x}function $h(){var x;return n.charCodeAt(C)===44?(x=K,C++):(x=e,Oe===0&&wt(Z)),x}function Yh(){var x,w,R,I;return x=C,w=C,R=x1(),R!==e?(I=Xh(),I===e&&(I=null),I!==e?(R=[R,I],w=R):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,R=li(),R!==e?(I=Xh(),I!==e?(R=[R,I],w=R):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function x1(){var x,w,R,I,z;return x=C,w=C,R=li(),R===e&&(R=null),R!==e?(n.charCodeAt(C)===46?(I=$,C++):(I=e,Oe===0&&wt(ue)),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,R=li(),R!==e?(n.charCodeAt(C)===46?(I=$,C++):(I=e,Oe===0&&wt(ue)),I!==e?(R=[R,I],w=R):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function Xh(){var x,w,R,I,z;return x=C,w=C,le.test(n.charAt(C))?(R=n.charAt(C),C++):(R=e,Oe===0&&wt(ne)),R!==e?(I=cp(),I===e&&(I=null),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=x,w=Q(w)),x=w,x}function cp(){var x;return ce.test(n.charAt(C))?(x=n.charAt(C),C++):(x=e,Oe===0&&wt(ae)),x}function li(){var x,w,R;if(x=C,w=[],ye.test(n.charAt(C))?(R=n.charAt(C),C++):(R=e,Oe===0&&wt(fe)),R!==e)for(;R!==e;)w.push(R),ye.test(n.charAt(C))?(R=n.charAt(C),C++):(R=e,Oe===0&&wt(fe));else w=e;return w!==e&&(ie=x,w=me(w)),x=w,x}function Ue(){var x,w;return x=C,be.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Oe===0&&wt(ge)),w!==e&&(ie=x,w=te()),x=w,x}function b1(x,w){if(!w)return[x];for(var R=[x],I=0,z=w.length;I<z;I++)R[I+1]=w[I][1];return R}var uc={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 Kh in uc)uc[Kh.toUpperCase()]=uc[Kh];function Gi(x,w){w||(w=[{}]);for(var R=w.length;R--;){var I={code:x,command:uc[x]};x==x.toLowerCase()&&(I.relative=!0);for(var z in w[R])I[z]=w[R][z];w[R]=I}return w}if(Lt=o(),Lt!==e&&C===n.length)return Lt;throw Lt!==e&&C<n.length&&wt(rp()),Rr(ze,ke<n.length?n.charAt(ke):null,ke<n.length?ai(ke,ke+1):ai(ke,ke))}Wv.exports={SyntaxError:Bi,parse:UE}});var Ih=Ws((Ure,$v)=>{var zd=qv().parse;zd.parseSVG=zd;zd.makeAbsolute=HE;$v.exports=zd;function HE(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var t1=Ws((fce,e1)=>{e1.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var xN={};Qh(xN,{default:()=>ep});module.exports=A1(xN);var tp=require("three");function fc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function hc(n){return Array.isArray(n)?n:[n]}function mc(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var T1=typeof global=="object"&&global&&global.Object===Object&&global,yc=T1;var I1=typeof self=="object"&&self&&self.Object===Object&&self,M1=yc||I1||Function("return this")(),Pt=M1;var E1=Pt.Symbol,Wt=E1;var Jh=Object.prototype,N1=Jh.hasOwnProperty,D1=Jh.toString,$s=Wt?Wt.toStringTag:void 0;function _1(n){var r=N1.call(n,$s),e=n[$s];try{n[$s]=void 0;var t=!0}catch{}var o=D1.call(n);return t&&(r?n[$s]=e:delete n[$s]),o}var em=_1;var B1=Object.prototype,R1=B1.toString;function L1(n){return R1.call(n)}var tm=L1;var V1="[object Null]",z1="[object Undefined]",rm=Wt?Wt.toStringTag:void 0;function G1(n){return n==null?n===void 0?z1:V1:rm&&rm in Object(n)?em(n):tm(n)}var Ir=G1;function F1(n){return n!=null&&typeof n=="object"}var er=F1;var j1="[object Symbol]";function k1(n){return typeof n=="symbol"||er(n)&&Ir(n)==j1}var gn=k1;function U1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var gc=U1;var H1=Array.isArray,Ct=H1;var W1=1/0,om=Wt?Wt.prototype:void 0,nm=om?om.toString:void 0;function im(n){if(typeof n=="string")return n;if(Ct(n))return gc(n,im)+"";if(gn(n))return nm?nm.call(n):"";var r=n+"";return r=="0"&&1/n==-W1?"-0":r}var am=im;var q1=/\s/;function $1(n){for(var r=n.length;r--&&q1.test(n.charAt(r)););return r}var sm=$1;var Y1=/^\s+/;function X1(n){return n&&n.slice(0,sm(n)+1).replace(Y1,"")}var lm=X1;function K1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var qt=K1;var cm=0/0,Q1=/^[-+]0x[0-9a-f]+$/i,Z1=/^0b[01]+$/i,J1=/^0o[0-7]+$/i,ew=parseInt;function tw(n){if(typeof n=="number")return n;if(gn(n))return cm;if(qt(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=qt(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=lm(n);var e=Z1.test(n);return e||J1.test(n)?ew(n.slice(2),e?2:8):Q1.test(n)?cm:+n}var fp=tw;function rw(n){return n}var um=rw;var ow="[object AsyncFunction]",nw="[object Function]",iw="[object GeneratorFunction]",aw="[object Proxy]";function sw(n){if(!qt(n))return!1;var r=Ir(n);return r==nw||r==iw||r==ow||r==aw}var xc=sw;var lw=Pt["__core-js_shared__"],bc=lw;var dm=function(){var n=/[^.]+$/.exec(bc&&bc.keys&&bc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function cw(n){return!!dm&&dm in n}var pm=cw;var uw=Function.prototype,dw=uw.toString;function pw(n){if(n!=null){try{return dw.call(n)}catch{}try{return n+""}catch{}}return""}var ko=pw;var fw=/[\\^$.*+?()[\]{}|]/g,hw=/^\[object .+?Constructor\]$/,mw=Function.prototype,yw=Object.prototype,gw=mw.toString,xw=yw.hasOwnProperty,bw=RegExp("^"+gw.call(xw).replace(fw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vw(n){if(!qt(n)||pm(n))return!1;var r=xc(n)?bw:hw;return r.test(ko(n))}var fm=vw;function Sw(n,r){return n?.[r]}var hm=Sw;function ww(n,r){var e=hm(n,r);return fm(e)?e:void 0}var yr=ww;var Pw=yr(Pt,"WeakMap"),vc=Pw;var mm=Object.create,Cw=function(){function n(){}return function(r){if(!qt(r))return{};if(mm)return mm(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),ym=Cw;function Ow(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var gm=Ow;function Aw(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var xm=Aw;var Tw=800,Iw=16,Mw=Date.now;function Ew(n){var r=0,e=0;return function(){var t=Mw(),o=Iw-(t-e);if(e=t,o>0){if(++r>=Tw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var bm=Ew;function Nw(n){return function(){return n}}var vm=Nw;var Dw=function(){try{var n=yr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ji=Dw;var _w=ji?function(n,r){return ji(n,"toString",{configurable:!0,enumerable:!1,value:vm(r),writable:!0})}:um,Sm=_w;var Bw=bm(Sm),wm=Bw;function Rw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Pm=Rw;var Lw=9007199254740991,Vw=/^(?:0|[1-9]\d*)$/;function zw(n,r){var e=typeof n;return r=r??Lw,!!r&&(e=="number"||e!="symbol"&&Vw.test(n))&&n>-1&&n%1==0&&n<r}var ki=zw;function Gw(n,r,e){r=="__proto__"&&ji?ji(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Sc=Gw;function Fw(n,r){return n===r||n!==n&&r!==r}var Ui=Fw;var jw=Object.prototype,kw=jw.hasOwnProperty;function Uw(n,r,e){var t=n[r];(!(kw.call(n,r)&&Ui(t,e))||e===void 0&&!(r in n))&&Sc(n,r,e)}var Hi=Uw;function Hw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Sc(e,s,l):Hi(e,s,l)}return e}var xo=Hw;var Cm=Math.max;function Ww(n,r,e){return r=Cm(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Cm(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),gm(n,this,s)}}var Om=Ww;var qw=9007199254740991;function $w(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=qw}var Wi=$w;function Yw(n){return n!=null&&Wi(n.length)&&!xc(n)}var wc=Yw;var Xw=Object.prototype;function Kw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Xw;return n===e}var qi=Kw;function Qw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Am=Qw;var Zw="[object Arguments]";function Jw(n){return er(n)&&Ir(n)==Zw}var hp=Jw;var Tm=Object.prototype,e2=Tm.hasOwnProperty,t2=Tm.propertyIsEnumerable,r2=hp(function(){return arguments}())?hp:function(n){return er(n)&&e2.call(n,"callee")&&!t2.call(n,"callee")},$i=r2;function o2(){return!1}var Im=o2;var Nm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Mm=Nm&&typeof module=="object"&&module&&!module.nodeType&&module,n2=Mm&&Mm.exports===Nm,Em=n2?Pt.Buffer:void 0,i2=Em?Em.isBuffer:void 0,a2=i2||Im,ci=a2;var s2="[object Arguments]",l2="[object Array]",c2="[object Boolean]",u2="[object Date]",d2="[object Error]",p2="[object Function]",f2="[object Map]",h2="[object Number]",m2="[object Object]",y2="[object RegExp]",g2="[object Set]",x2="[object String]",b2="[object WeakMap]",v2="[object ArrayBuffer]",S2="[object DataView]",w2="[object Float32Array]",P2="[object Float64Array]",C2="[object Int8Array]",O2="[object Int16Array]",A2="[object Int32Array]",T2="[object Uint8Array]",I2="[object Uint8ClampedArray]",M2="[object Uint16Array]",E2="[object Uint32Array]",ft={};ft[w2]=ft[P2]=ft[C2]=ft[O2]=ft[A2]=ft[T2]=ft[I2]=ft[M2]=ft[E2]=!0;ft[s2]=ft[l2]=ft[v2]=ft[c2]=ft[S2]=ft[u2]=ft[d2]=ft[p2]=ft[f2]=ft[h2]=ft[m2]=ft[y2]=ft[g2]=ft[x2]=ft[b2]=!1;function N2(n){return er(n)&&Wi(n.length)&&!!ft[Ir(n)]}var Dm=N2;function D2(n){return function(r){return n(r)}}var Yi=D2;var _m=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ys=_m&&typeof module=="object"&&module&&!module.nodeType&&module,_2=Ys&&Ys.exports===_m,mp=_2&&yc.process,B2=function(){try{var n=Ys&&Ys.require&&Ys.require("util").types;return n||mp&&mp.binding&&mp.binding("util")}catch{}}(),Uo=B2;var Bm=Uo&&Uo.isTypedArray,R2=Bm?Yi(Bm):Dm,Pc=R2;var L2=Object.prototype,V2=L2.hasOwnProperty;function z2(n,r){var e=Ct(n),t=!e&&$i(n),o=!e&&!t&&ci(n),i=!e&&!t&&!o&&Pc(n),a=e||t||o||i,s=a?Am(n.length,String):[],l=s.length;for(var c in n)(r||V2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||ki(c,l)))&&s.push(c);return s}var Cc=z2;function G2(n,r){return function(e){return n(r(e))}}var Oc=G2;var F2=Oc(Object.keys,Object),Rm=F2;var j2=Object.prototype,k2=j2.hasOwnProperty;function U2(n){if(!qi(n))return Rm(n);var r=[];for(var e in Object(n))k2.call(n,e)&&e!="constructor"&&r.push(e);return r}var Lm=U2;function H2(n){return wc(n)?Cc(n):Lm(n)}var Xi=H2;function W2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Vm=W2;var q2=Object.prototype,$2=q2.hasOwnProperty;function Y2(n){if(!qt(n))return Vm(n);var r=qi(n),e=[];for(var t in n)t=="constructor"&&(r||!$2.call(n,t))||e.push(t);return e}var zm=Y2;function X2(n){return wc(n)?Cc(n,!0):zm(n)}var Ki=X2;var K2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Q2=/^\w*$/;function Z2(n,r){if(Ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||gn(n)?!0:Q2.test(n)||!K2.test(n)||r!=null&&n in Object(r)}var Gm=Z2;var J2=yr(Object,"create"),Ho=J2;function eP(){this.__data__=Ho?Ho(null):{},this.size=0}var Fm=eP;function tP(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var jm=tP;var rP="__lodash_hash_undefined__",oP=Object.prototype,nP=oP.hasOwnProperty;function iP(n){var r=this.__data__;if(Ho){var e=r[n];return e===rP?void 0:e}return nP.call(r,n)?r[n]:void 0}var km=iP;var aP=Object.prototype,sP=aP.hasOwnProperty;function lP(n){var r=this.__data__;return Ho?r[n]!==void 0:sP.call(r,n)}var Um=lP;var cP="__lodash_hash_undefined__";function uP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ho&&r===void 0?cP:r,this}var Hm=uP;function Qi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Qi.prototype.clear=Fm;Qi.prototype.delete=jm;Qi.prototype.get=km;Qi.prototype.has=Um;Qi.prototype.set=Hm;var yp=Qi;function dP(){this.__data__=[],this.size=0}var Wm=dP;function pP(n,r){for(var e=n.length;e--;)if(Ui(n[e][0],r))return e;return-1}var xn=pP;var fP=Array.prototype,hP=fP.splice;function mP(n){var r=this.__data__,e=xn(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():hP.call(r,e,1),--this.size,!0}var qm=mP;function yP(n){var r=this.__data__,e=xn(r,n);return e<0?void 0:r[e][1]}var $m=yP;function gP(n){return xn(this.__data__,n)>-1}var Ym=gP;function xP(n,r){var e=this.__data__,t=xn(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Xm=xP;function Zi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Zi.prototype.clear=Wm;Zi.prototype.delete=qm;Zi.prototype.get=$m;Zi.prototype.has=Ym;Zi.prototype.set=Xm;var bn=Zi;var bP=yr(Pt,"Map"),vn=bP;function vP(){this.size=0,this.__data__={hash:new yp,map:new(vn||bn),string:new yp}}var Km=vP;function SP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Qm=SP;function wP(n,r){var e=n.__data__;return Qm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Sn=wP;function PP(n){var r=Sn(this,n).delete(n);return this.size-=r?1:0,r}var Zm=PP;function CP(n){return Sn(this,n).get(n)}var Jm=CP;function OP(n){return Sn(this,n).has(n)}var ey=OP;function AP(n,r){var e=Sn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var ty=AP;function Ji(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ji.prototype.clear=Km;Ji.prototype.delete=Zm;Ji.prototype.get=Jm;Ji.prototype.has=ey;Ji.prototype.set=ty;var ui=Ji;var TP="Expected a function";function gp(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(TP);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(gp.Cache||ui),e}gp.Cache=ui;var ry=gp;var IP=500;function MP(n){var r=ry(n,function(t){return e.size===IP&&e.clear(),t}),e=r.cache;return r}var oy=MP;var EP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,NP=/\\(\\)?/g,DP=oy(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(EP,function(e,t,o,i){r.push(o?i.replace(NP,"$1"):t||e)}),r}),ny=DP;function _P(n){return n==null?"":am(n)}var iy=_P;function BP(n,r){return Ct(n)?n:Gm(n,r)?[n]:ny(iy(n))}var Lr=BP;var RP=1/0;function LP(n){if(typeof n=="string"||gn(n))return n;var r=n+"";return r=="0"&&1/n==-RP?"-0":r}var wn=LP;function VP(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[wn(r[e++])];return e&&e==t?n:void 0}var Ac=VP;function zP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ea=zP;var ay=Wt?Wt.isConcatSpreadable:void 0;function GP(n){return Ct(n)||$i(n)||!!(ay&&n&&n[ay])}var sy=GP;function ly(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=sy),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?ly(s,r-1,e,t,o):ea(o,s):t||(o[o.length]=s)}return o}var cy=ly;function FP(n){var r=n==null?0:n.length;return r?cy(n,1):[]}var uy=FP;function jP(n){return wm(Om(n,void 0,uy),n+"")}var Tc=jP;var kP=Oc(Object.getPrototypeOf,Object),ta=kP;var UP="[object Object]",HP=Function.prototype,WP=Object.prototype,dy=HP.toString,qP=WP.hasOwnProperty,$P=dy.call(Object);function YP(n){if(!er(n)||Ir(n)!=UP)return!1;var r=ta(n);if(r===null)return!0;var e=qP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&dy.call(e)==$P}var py=YP;function XP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var fy=XP;function KP(){this.__data__=new bn,this.size=0}var hy=KP;function QP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var my=QP;function ZP(n){return this.__data__.get(n)}var yy=ZP;function JP(n){return this.__data__.has(n)}var gy=JP;var eC=200;function tC(n,r){var e=this.__data__;if(e instanceof bn){var t=e.__data__;if(!vn||t.length<eC-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new ui(t)}return e.set(n,r),this.size=e.size,this}var xy=tC;function ra(n){var r=this.__data__=new bn(n);this.size=r.size}ra.prototype.clear=hy;ra.prototype.delete=my;ra.prototype.get=yy;ra.prototype.has=gy;ra.prototype.set=xy;var oa=ra;function rC(n,r){return n&&xo(r,Xi(r),n)}var by=rC;function oC(n,r){return n&&xo(r,Ki(r),n)}var vy=oC;var Cy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sy=Cy&&typeof module=="object"&&module&&!module.nodeType&&module,nC=Sy&&Sy.exports===Cy,wy=nC?Pt.Buffer:void 0,Py=wy?wy.allocUnsafe:void 0;function iC(n,r){if(r)return n.slice();var e=n.length,t=Py?Py(e):new n.constructor(e);return n.copy(t),t}var Oy=iC;function aC(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Ay=aC;function sC(){return[]}var Ic=sC;var lC=Object.prototype,cC=lC.propertyIsEnumerable,Ty=Object.getOwnPropertySymbols,uC=Ty?function(n){return n==null?[]:(n=Object(n),Ay(Ty(n),function(r){return cC.call(n,r)}))}:Ic,na=uC;function dC(n,r){return xo(n,na(n),r)}var Iy=dC;var pC=Object.getOwnPropertySymbols,fC=pC?function(n){for(var r=[];n;)ea(r,na(n)),n=ta(n);return r}:Ic,Mc=fC;function hC(n,r){return xo(n,Mc(n),r)}var My=hC;function mC(n,r,e){var t=r(n);return Ct(n)?t:ea(t,e(n))}var Ec=mC;function yC(n){return Ec(n,Xi,na)}var Xs=yC;function gC(n){return Ec(n,Ki,Mc)}var Nc=gC;var xC=yr(Pt,"DataView"),Dc=xC;var bC=yr(Pt,"Promise"),_c=bC;var vC=yr(Pt,"Set"),Bc=vC;var Ey="[object Map]",SC="[object Object]",Ny="[object Promise]",Dy="[object Set]",_y="[object WeakMap]",By="[object DataView]",wC=ko(Dc),PC=ko(vn),CC=ko(_c),OC=ko(Bc),AC=ko(vc),di=Ir;(Dc&&di(new Dc(new ArrayBuffer(1)))!=By||vn&&di(new vn)!=Ey||_c&&di(_c.resolve())!=Ny||Bc&&di(new Bc)!=Dy||vc&&di(new vc)!=_y)&&(di=function(n){var r=Ir(n),e=r==SC?n.constructor:void 0,t=e?ko(e):"";if(t)switch(t){case wC:return By;case PC:return Ey;case CC:return Ny;case OC:return Dy;case AC:return _y}return r});var Wo=di;var TC=Object.prototype,IC=TC.hasOwnProperty;function MC(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&IC.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Ry=MC;var EC=Pt.Uint8Array,ia=EC;function NC(n){var r=new n.constructor(n.byteLength);return new ia(r).set(new ia(n)),r}var aa=NC;function DC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ly=DC;var _C=/\w*$/;function BC(n){var r=new n.constructor(n.source,_C.exec(n));return r.lastIndex=n.lastIndex,r}var Vy=BC;var zy=Wt?Wt.prototype:void 0,Gy=zy?zy.valueOf:void 0;function RC(n){return Gy?Object(Gy.call(n)):{}}var Fy=RC;function LC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var jy=LC;var VC="[object Boolean]",zC="[object Date]",GC="[object Map]",FC="[object Number]",jC="[object RegExp]",kC="[object Set]",UC="[object String]",HC="[object Symbol]",WC="[object ArrayBuffer]",qC="[object DataView]",$C="[object Float32Array]",YC="[object Float64Array]",XC="[object Int8Array]",KC="[object Int16Array]",QC="[object Int32Array]",ZC="[object Uint8Array]",JC="[object Uint8ClampedArray]",eO="[object Uint16Array]",tO="[object Uint32Array]";function rO(n,r,e){var t=n.constructor;switch(r){case WC:return aa(n);case VC:case zC:return new t(+n);case qC:return Ly(n,e);case $C:case YC:case XC:case KC:case QC:case ZC:case JC:case eO:case tO:return jy(n,e);case GC:return new t;case FC:case UC:return new t(n);case jC:return Vy(n);case kC:return new t;case HC:return Fy(n)}}var ky=rO;function oO(n){return typeof n.constructor=="function"&&!qi(n)?ym(ta(n)):{}}var Uy=oO;var nO="[object Map]";function iO(n){return er(n)&&Wo(n)==nO}var Hy=iO;var Wy=Uo&&Uo.isMap,aO=Wy?Yi(Wy):Hy,qy=aO;var sO="[object Set]";function lO(n){return er(n)&&Wo(n)==sO}var $y=lO;var Yy=Uo&&Uo.isSet,cO=Yy?Yi(Yy):$y,Xy=cO;var uO=1,dO=2,pO=4,Ky="[object Arguments]",fO="[object Array]",hO="[object Boolean]",mO="[object Date]",yO="[object Error]",Qy="[object Function]",gO="[object GeneratorFunction]",xO="[object Map]",bO="[object Number]",Zy="[object Object]",vO="[object RegExp]",SO="[object Set]",wO="[object String]",PO="[object Symbol]",CO="[object WeakMap]",OO="[object ArrayBuffer]",AO="[object DataView]",TO="[object Float32Array]",IO="[object Float64Array]",MO="[object Int8Array]",EO="[object Int16Array]",NO="[object Int32Array]",DO="[object Uint8Array]",_O="[object Uint8ClampedArray]",BO="[object Uint16Array]",RO="[object Uint32Array]",ut={};ut[Ky]=ut[fO]=ut[OO]=ut[AO]=ut[hO]=ut[mO]=ut[TO]=ut[IO]=ut[MO]=ut[EO]=ut[NO]=ut[xO]=ut[bO]=ut[Zy]=ut[vO]=ut[SO]=ut[wO]=ut[PO]=ut[DO]=ut[_O]=ut[BO]=ut[RO]=!0;ut[yO]=ut[Qy]=ut[CO]=!1;function Rc(n,r,e,t,o,i){var a,s=r&uO,l=r&dO,c=r&pO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!qt(n))return n;var u=Ct(n);if(u){if(a=Ry(n),!s)return xm(n,a)}else{var p=Wo(n),d=p==Qy||p==gO;if(ci(n))return Oy(n,s);if(p==Zy||p==Ky||d&&!o){if(a=l||d?{}:Uy(n),!s)return l?My(n,vy(a,n)):Iy(n,by(a,n))}else{if(!ut[p])return o?n:{};a=ky(n,p,s)}}i||(i=new oa);var f=i.get(n);if(f)return f;i.set(n,a),Xy(n)?n.forEach(function(y){a.add(Rc(y,r,e,y,n,i))}):qy(n)&&n.forEach(function(y,b){a.set(b,Rc(y,r,e,b,n,i))});var h=c?l?Nc:Xs:l?Ki:Xi,m=u?void 0:h(n);return Pm(m||n,function(y,b){m&&(b=y,y=n[b]),Hi(a,b,Rc(y,r,e,b,n,i))}),a}var Lc=Rc;var LO=1,VO=4;function zO(n){return Lc(n,LO|VO)}var qo=zO;var GO="__lodash_hash_undefined__";function FO(n){return this.__data__.set(n,GO),this}var Jy=FO;function jO(n){return this.__data__.has(n)}var eg=jO;function Vc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new ui;++r<e;)this.add(n[r])}Vc.prototype.add=Vc.prototype.push=Jy;Vc.prototype.has=eg;var tg=Vc;function kO(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var rg=kO;function UO(n,r){return n.has(r)}var og=UO;var HO=1,WO=2;function qO(n,r,e,t,o,i){var a=e&HO,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,f=e&WO?new tg:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var h=n[p],m=r[p];if(t)var y=a?t(m,h,p,r,n,i):t(h,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!rg(r,function(b,S){if(!og(f,S)&&(h===b||o(h,b,e,t,i)))return f.push(S)})){d=!1;break}}else if(!(h===m||o(h,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var zc=qO;function $O(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var ng=$O;function YO(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var ig=YO;var XO=1,KO=2,QO="[object Boolean]",ZO="[object Date]",JO="[object Error]",eA="[object Map]",tA="[object Number]",rA="[object RegExp]",oA="[object Set]",nA="[object String]",iA="[object Symbol]",aA="[object ArrayBuffer]",sA="[object DataView]",ag=Wt?Wt.prototype:void 0,xp=ag?ag.valueOf:void 0;function lA(n,r,e,t,o,i,a){switch(e){case sA:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case aA:return!(n.byteLength!=r.byteLength||!i(new ia(n),new ia(r)));case QO:case ZO:case tA:return Ui(+n,+r);case JO:return n.name==r.name&&n.message==r.message;case rA:case nA:return n==r+"";case eA:var s=ng;case oA:var l=t&XO;if(s||(s=ig),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=KO,a.set(n,r);var u=zc(s(n),s(r),t,o,i,a);return a.delete(n),u;case iA:if(xp)return xp.call(n)==xp.call(r)}return!1}var sg=lA;var cA=1,uA=Object.prototype,dA=uA.hasOwnProperty;function pA(n,r,e,t,o,i){var a=e&cA,s=Xs(n),l=s.length,c=Xs(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:dA.call(r,d)))return!1}var f=i.get(n),h=i.get(r);if(f&&h)return f==r&&h==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var b=n[d],S=r[d];if(t)var P=a?t(S,b,d,r,n,i):t(b,S,d,n,r,i);if(!(P===void 0?b===S||o(b,S,e,t,i):P)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=n.constructor,v=r.constructor;O!=v&&"constructor"in n&&"constructor"in r&&!(typeof O=="function"&&O instanceof O&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(r),m}var lg=pA;var fA=1,cg="[object Arguments]",ug="[object Array]",Gc="[object Object]",hA=Object.prototype,dg=hA.hasOwnProperty;function mA(n,r,e,t,o,i){var a=Ct(n),s=Ct(r),l=a?ug:Wo(n),c=s?ug:Wo(r);l=l==cg?Gc:l,c=c==cg?Gc:c;var u=l==Gc,p=c==Gc,d=l==c;if(d&&ci(n)){if(!ci(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new oa),a||Pc(n)?zc(n,r,e,t,o,i):sg(n,r,l,e,t,o,i);if(!(e&fA)){var f=u&&dg.call(n,"__wrapped__"),h=p&&dg.call(r,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?r.value():r;return i||(i=new oa),o(m,y,e,t,i)}}return d?(i||(i=new oa),lg(n,r,e,t,o,i)):!1}var pg=mA;function fg(n,r,e,t,o){return n===r?!0:n==null||r==null||!er(n)&&!er(r)?n!==n&&r!==r:pg(n,r,e,t,fg,o)}var hg=fg;function yA(n,r){return n!=null&&r in Object(n)}var mg=yA;function gA(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=wn(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Wi(o)&&ki(a,o)&&(Ct(n)||$i(n)))}var yg=gA;function xA(n,r){return n!=null&&yg(n,r,mg)}var gg=xA;var bA=function(){return Pt.Date.now()},Fc=bA;var vA="Expected a function",SA=Math.max,wA=Math.min;function PA(n,r,e){var t,o,i,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof n!="function")throw new TypeError(vA);r=fp(r)||0,qt(e)&&(u=!!e.leading,p="maxWait"in e,i=p?SA(fp(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function f(A){var T=t,g=o;return t=o=void 0,c=A,a=n.apply(g,T),a}function h(A){return c=A,s=setTimeout(b,r),u?f(A):a}function m(A){var T=A-l,g=A-c,D=r-T;return p?wA(D,i-g):D}function y(A){var T=A-l,g=A-c;return l===void 0||T>=r||T<0||p&&g>=i}function b(){var A=Fc();if(y(A))return S(A);s=setTimeout(b,m(A))}function S(A){return s=void 0,d&&t?f(A):(t=o=void 0,a)}function P(){s!==void 0&&clearTimeout(s),c=0,t=l=o=s=void 0}function O(){return s===void 0?a:S(Fc())}function v(){var A=Fc(),T=y(A);if(t=arguments,o=this,l=A,T){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,r),f(l)}return s===void 0&&(s=setTimeout(b,r)),a}return v.cancel=P,v.flush=O,v}var jc=PA;function CA(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var xg=CA;function OA(n,r){return r.length<2?n:Ac(n,fy(r,0,-1))}var bg=OA;function AA(n,r){return hg(n,r)}var bp=AA;function TA(n,r){return r=Lr(r,n),n=bg(n,r),n==null||delete n[wn(xg(r))]}var vg=TA;function IA(n){return py(n)?void 0:n}var Sg=IA;var MA=1,EA=2,NA=4,DA=Tc(function(n,r){var e={};if(n==null)return e;var t=!1;r=gc(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),xo(n,Nc(n),e),t&&(e=Lc(e,MA|EA|NA,Sg));for(var o=r.length;o--;)vg(e,r[o]);return e}),sa=DA;function _A(n,r,e,t){if(!qt(n))return n;r=Lr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=wn(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=qt(u)?u:ki(r[o+1])?[]:{})}Hi(s,l,c),s=s[l]}return n}var wg=_A;function BA(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Ac(n,a);e(s,a)&&wg(i,Lr(a,n),s)}return i}var Pg=BA;function RA(n,r){return Pg(n,r,function(e,t){return gg(n,t)})}var Cg=RA;var LA=Tc(function(n,r){return n==null?{}:Cg(n,r)}),Jr=LA;var he=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,he.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,he.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,he.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ks(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Ks(t)}return Object.freeze(n)}function Og(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var la=class extends Error{};function kc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bo(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function ca(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Ag(){return typeof process<"u"}function Tg(n,r){for(let e of n)r(e.id,e.data)!==!0&&Tg(e.children,r)}function Ig(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Ig(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Ig(o,t)}}traverse(e){Tg(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,st.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,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:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new la("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,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:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Og(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return bo(0,o,o);{let a=i[0].fi;return bo(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return bo(l,l+o,o)}else return bo(a.fi,s.fi,o)}}};var ua;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(ua||(ua={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Ag()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return bo(0,t,t);{let i=o[0].fi;return bo(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return bo(s,s+t,t)}else return bo(i.fi,a.fi,t)}}};function da(n){return n&&typeof n=="object"&&n instanceof lt}var lt=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!da(t))return null;o+=1}t=t?kc(t):new lt;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=kc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=kc(l);c[r.path[o-1]]=t,t=c}else{let c=new lt;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,lt.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},vo;(t=>{function n(o,i){return Qs(o,i)??o}t.apply=n;function r(o,i){return Sp(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ct.zoomOnce(l,s[a]),l===void 0)return i;if(!da(l))return;a+=1}if(l===void 0)return i;if(!!da(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=vp([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(vo||(vo={}));function vp(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=vp(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function VA(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Qs(n,r){if(!da(r))return r;if(n instanceof st){let e=vp(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return VA(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Qs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof lt)return Sp(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Qs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Sp(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!da(r))return r;if(!da(n))return vo.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new lt;for(let o of e){let i=Sp(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Mg(n,r){let e={cur:[],result:[],len:0};return n=Zs(n,r,e)??n,[n,e.result]}function Uc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Hc(n){n&&(n.len-=1)}function zA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Eg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=Zs(i.data,r,Uc(e,a));Hc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=Eg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function GA(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=Zs(i.data,r,Uc(e,a));return Hc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Zs(n,r,e){if(n instanceof st){let t=Eg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return GA(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Zs(i,r,Uc(e,a));return Hc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!ca(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"&&i!=="variableId"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Zs(a,r,Uc(e,i));Hc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&zA(e),t}else return}}var pa;(r=>{function n(e,t){let o=ct.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(pa||(pa={}));var gt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof lt&&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 st||l instanceof ve||l instanceof he?d=l.runOp(c):d=ua.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],S=p[y];if(S instanceof st){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof ve){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof he){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof lt){let P={...S,[b]:m};m=Object.setPrototypeOf(P,lt.prototype)}else if(typeof S=="object")if(Array.isArray(S)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let P=m;m=[...S],m[b]=P}else m={...S,[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 st){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ve){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 t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(gt||(gt={}));var Js;(l=>{function n(){return[]}l.empty=n;function r(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=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(f=>gt.subsumed(d,f))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>gt.commutative(p,d)))}l.commutative=i;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=ct.zoom(p,[...h.path,h.id]),b=gt.apply(p,{...h,type:2})):(m=ct.zoom(p,[...h.path,h.id,"value"]),b=gt.apply(p,h)),b!==null){p=b.data;let[S,P]=Mg(p,{[h.id]:m});p=S;for(let O=0;O<P.length;O++){let v=P[O],A=v.pop();if(typeof A=="number"){let T=[A];for(let D=O+1;D<P.length;D++){let E=P[D],M=E[E.length-1];if(typeof M=="number"&&ct.equal(v,E.slice(0,E.length-1)))T.push(M),P.splice(D,1);else break}let g=ct.zoom(p,v);y=g.map((D,E)=>T.includes(E)?h.id:D),m=g,A=v.pop()}else{if(A==="alphaOverride"||A==="alpha"){m/=100;let T=m,g=ct.zoom(p,v.slice(0,v.length-2)),D=g.layers.map(E=>E.id===v[v.length-1]?{...E,data:{...E.data,[A]:T}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:v,props:{[A]:m}}),f.push({type:0,path:v,props:{[A]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=gt.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof la)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Js||(Js={}));var Ng=Symbol(),FA=Symbol(),qc=Symbol(),pi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Wc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[qc];t&&t(),delete this._children[r]}}}},Pp=class extends pi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,ua.runOp(this._current,r),r.path)}},Cp=class extends pi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,he.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Dg={get(n,r){if(r===qc)return()=>{n._parent=null};if(r===Ng)return n._current;if(r===FA)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=$c(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},jA={...Dg,set(n,r,e){let t={type:0,props:{[r]:xt(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},kA={...Dg,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},fa=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[qc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=$c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ha=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[qc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=$c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function wp(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ct.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Wc=class extends pi{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){wp(this.ts,e,r),wp(this.actual,t,r),wp(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function $c(n,r,e){return e instanceof st?new fa(n,r,e):e instanceof ve?new ha(n,r,e):e instanceof he?new Proxy(new Cp(n,r,e),kA):e!==null&&typeof e=="object"?ca(e)?e:new Proxy(new Pp(n,r,e),jA):e}function Op(n){let r=new Wc(n);return[$c(r,"",n),r]}function Pn(n,r){let[e,t]=Op(n);return r(e),t.result()}function xt(n){return n instanceof fa||n instanceof ha?n._current:n!==null&&typeof n=="object"?n[Ng]:n}var ct;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof st||i instanceof fa)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ha)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ct||(ct={}));function _g(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Fe(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Yc=class{},el=class extends Yc{constructor(e){super();this.id=e}},tl=class extends Yc{constructor(e){super();this.data=e}};var Tp;try{Tp=new TextDecoder}catch{}var de,On,G=0;var jg=[],Ip=jg,Mp=0,gr={},Ke,Cn,Vr=0,So=0,Mr,$o,ur=[],et,Bg={useRecords:!1,mapsAsObjects:!0},rl=class{},Np=new rl;Np.name="MessagePack 0xC1";var ma=!1,wo=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return qg(()=>(Kc(),this?this.unpack(r,e):wo.prototype.unpack.call(Bg,r,e)));On=e>-1?e:r.length,G=0,Mp=0,So=0,Cn=null,Ip=jg,Mr=null,de=r;try{et=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof wo){if(gr=this,this.structures)return Ke=this.structures,Xc();(!Ke||Ke.length>0)&&(Ke=[])}else gr=Bg,(!Ke||Ke.length>0)&&(Ke=[]);return Xc()}unpackMultiple(r,e){let t,o=0;try{ma=!0;let i=r.length,a=this?this.unpack(r,i):Jc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Xc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Xc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ma=!1,Kc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Xc(){try{if(!gr.trusted&&!ma){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==On)Ke.restoreStructures&&Rg(),Ke=null,de=null,$o&&($o=null);else if(G>On){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ma)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&Rg(),Kc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rg(){for(let n in Ke.restoreStructures)Ke[n]=Ke.restoreStructures[n];Ke.restoreStructures=null}function Ot(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=Ke[n&63]||gr.getStructures&&kg()[n&63];return r?(r.read||(r.read=Dp(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Hg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}else if(n<192){let r=n-160;if(So>=G)return Cn.slice(G-Vr,(G+=r)-Vr);if(So==0&&On<140){let e=r<16?_p(r):Ug(r);if(e!=null)return e}return Ep(r)}else{let r;switch(n){case 192:return null;case 193:return Mr?(r=Ot(),r>0?Mr[1].slice(Mr.position1,Mr.position1+=r):Mr[0].slice(Mr.position0,Mr.position0-=r)):Np;case 194:return!1;case 195:return!0;case 196:return Ap(de[G++]);case 197:return r=et.getUint16(G),G+=2,Ap(r);case 198:return r=et.getUint32(G),G+=4,Ap(r);case 199:return fi(de[G++]);case 200:return r=et.getUint16(G),G+=2,fi(r);case 201:return r=et.getUint32(G),G+=4,fi(r);case 202:if(r=et.getFloat32(G),gr.useFloat32>2){let e=Zc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=et.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=et.getUint16(G),G+=2,r;case 206:return r=et.getUint32(G),G+=4,r;case 207:return gr.int64AsNumber?(r=et.getUint32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigUint64(G),G+=8,r;case 208:return et.getInt8(G++);case 209:return r=et.getInt16(G),G+=2,r;case 210:return r=et.getInt32(G),G+=4,r;case 211:return gr.int64AsNumber?(r=et.getInt32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return Fg(de[G++]&63);{let e=ur[r];if(e)return e.read?(G++,e.read(Ot())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,Fg(de[G++]&63,de[G++])):fi(2);case 214:return fi(4);case 215:return fi(8);case 216:return fi(16);case 217:return r=de[G++],So>=G?Cn.slice(G-Vr,(G+=r)-Vr):HA(r);case 218:return r=et.getUint16(G),G+=2,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):WA(r);case 219:return r=et.getUint32(G),G+=4,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):qA(r);case 220:return r=et.getUint16(G),G+=2,Vg(r);case 221:return r=et.getUint32(G),G+=4,Vg(r);case 222:return r=et.getUint16(G),G+=2,zg(r);case 223:return r=et.getUint32(G),G+=4,zg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var UA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Dp(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>UA.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=Lg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=Ot()}return t}return e.count=0,n.highByte===0?Lg(r,e):e}var Lg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ke[t]||kg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Dp(o,n)),o.read()};function kg(){let n=qg(()=>(de=null,gr.getStructures()));return Ke=gr._mergeStructures(n,Ke)}var Ep=Qc,HA=Qc,WA=Qc,qA=Qc;function Qc(n){let r;if(n<16&&(r=_p(n)))return r;if(n>64&&Tp)return Tp.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=$t.apply(String,t),t.length=0)}return t.length>0&&(r+=$t.apply(String,t)),r}function Vg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}function zg(n){if(gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Hg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var $t=String.fromCharCode;function Ug(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return $t.apply(String,e)}function _p(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return $t(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return $t(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return $t(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return $t(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return $t(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return $t(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return $t(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return $t(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return $t(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return $t(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return $t(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return $t(r,e,t,o,i,a,s,l,c,u,p,d);{let f=de[G++];if((f&128)>0){G-=13;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f)}}else{let f=de[G++],h=de[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(n<15)return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h);let m=de[G++];if((m&128)>0){G-=15;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h,m)}}}}}function Ap(n){return gr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function fi(n){let r=de[G++];if(ur[r])return ur[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var Gg=new Array(4096);function Hg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,So>=G)return Cn.slice(G-Vr,(G+=n)-Vr);if(!(So==0&&On<180))return Ep(n)}else return G--,Ot();let r=(n<<5^(n>1?et.getUint16(G):n>0?de[G]:0))&4095,e=Gg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=et.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],Gg[r]=e,e.bytes=n;t<o;)i=et.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?_p(n):Ug(n);return s!=null?e.string=s:e.string=Ep(n)}var Fg=(n,r)=>{var e=Ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ke[n];return o&&o.isShared&&((Ke.restoreStructures||(Ke.restoreStructures=[]))[n]=o),Ke[n]=e,e.read=Dp(e,t),e.read()},Wg=typeof self=="object"?self:global;ur[0]=()=>{};ur[0].noBuffer=!0;ur[101]=()=>{let n=Ot();return(Wg[n[0]]||Error)(n[1])};ur[105]=n=>{let r=et.getUint32(G-4);$o||($o=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};$o.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};ur[112]=n=>{let r=et.getUint32(G-4),e=$o.get(r);return e.used=!0,e.target};ur[115]=()=>new Set(Ot());var Bp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ur[116]=n=>{let r=n[0],e=Bp[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Wg[e](Uint8Array.prototype.slice.call(n,1).buffer)};ur[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};ur[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,Mr=[Ot(),Ot()],Mr.position0=0,Mr.position1=0;let t=G;G=e;try{return Ot()}finally{G=t}};ur[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function qg(n){let r=On,e=G,t=Mp,o=Vr,i=So,a=Cn,s=Ip,l=$o,c=Mr,u=new Uint8Array(de.slice(0,On)),p=Ke,d=Ke.slice(0,Ke.length),f=gr,h=ma,m=n();return On=r,G=e,Mp=t,Vr=o,So=i,Cn=a,Ip=s,$o=l,Mr=c,de=u,ma=h,Ke=p,Ke.splice(0,Ke.length,...d),gr=f,et=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Kc(){de=null,$o=null,Ke=null}function $g(n){n.unpack?ur[n.type]=n.unpack:ur[n.type]=n}var Zc=new Array(147);for(let n=0;n<256;n++)Zc[n]=+("1e"+Math.floor(45.15-n*.30103));var Jc=new wo({useRecords:!1}),$A=Jc.unpack,YA=Jc.unpackMultiple,XA=Jc.unpack,eu={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},KA=new Float32Array(1),QG=new Uint8Array(KA.buffer,0,4);var tu;try{tu=new TextEncoder}catch{}var ru,Lp,ou=typeof Buffer<"u",Rp=ou?Buffer.allocUnsafeSlow:Uint8Array,Qg=ou?Buffer:Uint8Array,Yg=ou?4294967296:2144337920,Y,Mt,U=0,Po,Co=null,QA=/[\u0080-\uFFFF]/,ol=Symbol("record-id"),hi=class extends wo{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Qg.prototype.utf8Write?function(g,D,E){return Y.utf8Write(g,D,E)}:tu&&tu.encodeInto?function(g,D){return tu.encodeInto(g,Y.subarray(D)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=r.maxOwnStructures;h==null&&(h=d?32:64),p&&!r.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 S=[],P=0,O=0;this.pack=this.encode=function(g,D){if(Y||(Y=new Rp(8192),Mt=new DataView(Y.buffer,0,8192),U=0),Po=Y.length-10,Po-U<2048?(Y=new Rp(Y.length),Mt=new DataView(Y.buffer,0,Y.length),Po=Y.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Co=["",""],Y[U++]=214,Y[U++]=98,Co.position=U-t,U+=4):Co=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 M=0;M<E;M++){let N=o[M];if(!N)continue;let _,B=o.transitions;for(let V=0,k=N.length;V<k;V++){let L=N[V];_=B[L],_||(_=B[L]=Object.create(null)),B=_}B[ol]=M+64}l=E}p||(o.nextId=E+64)}i&&(i=!1),a=o||[];try{if(v(g),Co){Mt.setUint32(Co.position+t,U-Co.position-t);let E=Co;Co=null,v(E[0]),v(E[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Po&&T(U),u.offset=U;let E=JA(Y.subarray(t,U),s.idsToInsert);return s=null,E}return D&Jg?(Y.start=t,Y.end=U,Y):Y.subarray(t,U)}finally{if(o){if(O<10&&O++,P>1e4)o.transitions=null,O=0,P=0,S.length>0&&(S=[]);else if(S.length>0&&!p){for(let E=0,M=S.length;E<M;E++)S[E][ol]=0;S=[]}if(i&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let M=Y.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,M)}}D&aT&&(U=t)}};let v=g=>{U>Po&&(Y=T(U));var D=typeof g,E;if(D==="string"){let M=g.length;if(Co&&M>=8&&M<4096){let B=QA.test(g);Co[B?0:1]+=g,Y[U++]=193,v(B?-M:M);return}let N;M<32?N=1:M<256?N=2:M<65536?N=3:N=5;let _=M*3;if(U+_>Po&&(Y=T(U+_)),M<64||!c){let B,V,k,L=U+N;for(B=0;B<M;B++)V=g.charCodeAt(B),V<128?Y[L++]=V:V<2048?(Y[L++]=V>>6|192,Y[L++]=V&63|128):(V&64512)===55296&&((k=g.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(k&1023),B++,Y[L++]=V>>18|240,Y[L++]=V>>12&63|128,Y[L++]=V>>6&63|128,Y[L++]=V&63|128):(Y[L++]=V>>12|224,Y[L++]=V>>6&63|128,Y[L++]=V&63|128);E=L-U-N}else E=c(g,U+N,_);E<32?Y[U++]=160|E:E<256?(N<2&&Y.copyWithin(U+2,U+1,U+1+E),Y[U++]=217,Y[U++]=E):E<65536?(N<3&&Y.copyWithin(U+3,U+2,U+2+E),Y[U++]=218,Y[U++]=E>>8,Y[U++]=E&255):(N<5&&Y.copyWithin(U+5,U+3,U+3+E),Y[U++]=219,Mt.setUint32(U,E),U+=4),U+=E}else if(D==="number")if(g>>>0===g)g<64?Y[U++]=g:g<256?(Y[U++]=204,Y[U++]=g):g<65536?(Y[U++]=205,Y[U++]=g>>8,Y[U++]=g&255):(Y[U++]=206,Mt.setUint32(U,g),U+=4);else if(g>>0===g)g>=-32?Y[U++]=256+g:g>=-128?(Y[U++]=208,Y[U++]=g+256):g>=-32768?(Y[U++]=209,Mt.setInt16(U,g),U+=2):(Y[U++]=210,Mt.setInt32(U,g),U+=4);else{let M;if((M=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){Y[U++]=202,Mt.setFloat32(U,g);let N;if(M<4||(N=g*Zc[(Y[U]&127)<<1|Y[U+1]>>7])>>0===N){U+=4;return}else U--}Y[U++]=203,Mt.setFloat64(U,g),U+=8}else if(D==="object")if(!g)Y[U++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}Y[U++]=214,Y[U++]=112,Mt.setUint32(U,N.id),U+=4;return}else s.set(g,{offset:U-t})}let M=g.constructor;if(M===Object)A(g,!0);else if(M===Array){E=g.length,E<16?Y[U++]=144|E:E<65536?(Y[U++]=220,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=221,Mt.setUint32(U,E),U+=4);for(let N=0;N<E;N++)v(g[N])}else if(M===Map){E=g.size,E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);for(let[N,_]of g)v(N),v(_)}else{for(let N=0,_=ru.length;N<_;N++){let B=Lp[N];if(g instanceof B){let V=ru[N];if(V.write){V.type&&(Y[U++]=212,Y[U++]=V.type,Y[U++]=0),v(V.write.call(this,g));return}let k=Y,L=Mt,W=U;Y=null;let F;try{F=V.pack.call(this,g,j=>(Y=k,k=null,U+=j,U>Po&&T(U),{target:Y,targetView:Mt,position:U-j}),v)}finally{k&&(Y=k,Mt=L,U=W,Po=Y.length-10)}F&&(F.length+U>Po&&T(F.length+U),U=ZA(F,Y,U,V.type));return}}A(g,!g.hasOwnProperty)}}else if(D==="boolean")Y[U++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))Y[U++]=211,Mt.setBigInt64(U,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)Y[U++]=207,Mt.setBigUint64(U,g);else if(this.largeBigIntToFloat)Y[U++]=203,Mt.setFloat64(U,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");U+=8}else if(D==="undefined")this.encodeUndefinedAsNil?Y[U++]=192:(Y[U++]=212,Y[U++]=0,Y[U++]=0);else if(D==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},A=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);let M;for(let N=0;N<E;N++)v(M=D[N]),v(g[M])}:(g,D)=>{Y[U++]=222;let E=U-t;U+=2;let M=0;for(let N in g)(D||g.hasOwnProperty(N))&&(v(N),v(g[N]),M++);Y[E+++t]=M>>8,Y[E+t]=M&255}:g=>{let D=Object.keys(g),E,M=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=D.length;B<V;B++){let k=D[B];E=M[k],E||(E=M[k]=Object.create(null),N++),M=E}let _=M[ol];if(_)_>=96&&m?(Y[U++]=((_-=96)&31)+96,Y[U++]=_>>5):Y[U++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let B=D.highByte=_>=96&&m?_-96>>5:-1;M[ol]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[U++]=(_&31)+96,Y[U++]=B):Y[U++]=_):(B>=0?(Y[U++]=213,Y[U++]=114,Y[U++]=(_&31)+96,Y[U++]=B):(Y[U++]=212,Y[U++]=114,Y[U++]=_),N&&(P+=O*N),S.length>=h&&(S.shift()[ol]=0),S.push(M),v(D))}for(let B=0,V=D.length;B<V;B++)v(g[D[B]])},T=g=>{let D;if(g>16777216){if(g-t>Yg)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(Yg,Math.round(Math.max((g-t)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-t<<2,Y.length-1)>>12)+1<<12;let E=new Rp(D);return Mt=new DataView(E.buffer,0,D),Y.copy?Y.copy(E,0,t,g):E.set(Y.slice(t,g)),U-=t,t=0,Po=E.length-10,Y=E}}useBuffer(r){Y=r,Mt=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),U=0}};Lp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,rl];ru=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Xg(n,16,r):Kg(ou?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Qg&&this.structuredClone?Xg(n,Bp.indexOf(e.name),r):Kg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Xg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Kg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function ZA(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function JA(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function An(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Lp.unshift(n.Class),ru.unshift(n)}$g(n)}var Zg=new hi({useRecords:!1}),eT=Zg.pack,tT=Zg.pack;var{NEVER:rT,ALWAYS:oT,DECIMAL_ROUND:nT,DECIMAL_FIT:iT}=eu,Jg=512,aT=1024;var ex=new hi({structuredClone:!0});An({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});An({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});An({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});An({Class:el.prototype.constructor,type:4,write(n){return n.id},read(n){return new el(n)}});An({Class:tl.prototype.constructor,type:5,write(n){return n.data},read(n){return new tl(n)}});An({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function sT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Vp(n){if(ca(n))return n;if(Array.isArray(n))return n.map(Vp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Vp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var nu;(t=>{function n(o){return ex.pack(o)}t.serialize=n;function r(o){return ex.unpack(o)}t.deserialize=r;function e(o){return sT(n(Vp(o))).toString()}t.checksum=e})(nu||(nu={}));var Mn="personal camera",En="a218fcc3-276b-49b9-b485-49037fd14f5f",ax=2960946,Et=5526619;var ya;(f=>{function n(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=n;function r(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=r;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function t(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=t;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function i(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=i;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),S=f.sub(y,h),P=f.dot(b,S)/f.dot(b,b),O=f.scalarMultiply(b,P);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})(ya||(ya={}));var Tn;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(Tn||(Tn={}));var tx;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(tx||(tx={}));var rx;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(rx||(rx={}));var In;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(In||(In={}));var zt;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,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(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,f){return d.r===f.r&&d.g===f.g&&d.b===f.b}p.equals=l;function c(d,f){return d.r.toFixed(2)===f.r.toFixed(2)&&d.g.toFixed(2)===f.g.toFixed(2)&&d.b.toFixed(2)===f.b.toFixed(2)}p.equalsFixed=c;function u(d,f,h){return{r:d.r+(f.r-d.r)*h,g:d.g+(f.g-d.g)*h,b:d.b+(f.b-d.b)*h}}p.lerp=u})(zt||(zt={}));var _e;(c=>{c.white={...zt.white,a:1},c.transparent={...zt.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...zt.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return zt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return zt.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:f}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${f})`}c.toStyle=l})(_e||(_e={}));var iu;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(iu||(iu={}));var ox;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(ox||(ox={}));var nx;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(nx||(nx={}));var ix;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(ix||(ix={}));function zp(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var eo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(eo||(eo={}));var Nn;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(Nn||(Nn={}));var Oo;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(lT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;cT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;uT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;dT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;pT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;fT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Oo||(Oo={}));var au;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(au||(au={}));var lT=["count"],cT=["radius","start","end","position","scale","rotation"],uT=["position","scale","rotation"],dT=["count","size"],pT=["count","position","scale","rotation"],fT=["strength","scale","rotation","position","movement","seed","freqScale"];var su;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(su||(su={}));var lu;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:_e.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(lu||(lu={}));var ga;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...t.defaultCollisionData}))(ga||(ga={}));var Dn;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Dn||(Dn={}));var Gp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Gp||(Gp={}));var Fp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Fp||(Fp={}));var cu;(r=>r.defaultData={...Fp.defaultData,...Gp.defaultData})(cu||(cu={}));var sx;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(sx||(sx={}));var xa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(xa||(xa={}));var lx;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(lx||(lx={}));function ux(n){return n.type!=="displace"}var cx;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(cx||(cx={}));var dx=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],px=["wrapping","image","video","name","minFilter","magFilter"],Bt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],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:xa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:zt.fromHex(Et)};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:{...zt.fromHex(6710886),a:1},colorB:{...zt.fromHex(6710886),a:1},colorC:{...zt.fromHex(16777215),a:1},colorD:{...zt.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:_e.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:_e.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:_e.fromHexAndA(0,1),contourColor:_e.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:{...zt.fromHex(0),a:1},colorB:{...zt.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}}}})(Bt||(Bt={}));var Yt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let 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=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let f=new ve;return f.push({fi:0,data:Bt.defaultData("light",u),id:p}),f.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=i;function a(u){let p=Bt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...Bt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...Bt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("video");Object.assign(h.texture,{video:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Yt||(Yt={}));var ba;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(ba||(ba={}));var va;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(va||(va={}));var jp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var uu;(r=>{function n(e,t){let o={...e};return hT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(uu||(uu={}));var du={shape:jp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},hT=["depth","offset","angle","twist","startScale","endScale"];var nl;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"||t==="InputGeometry"}e.isParametricMesh=r})(nl||(nl={}));var pu;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,uu.merge(o.extrusion,t.extrusion))),o}r.merge=n})(pu||(pu={}));var Yo;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="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:va.defaultData(),extrusion:du};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ba.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...r.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")}r.defaultData=n})(Yo||(Yo={}));var fu;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:zt.white,near:.1,far:2e3})(fu||(fu={}));var hu;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(hu||(hu={}));var kp;(r=>r.defaultData={softShadowQuality:"low"})(kp||(kp={}));var Up;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Up||(Up={}));var Hp;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Hp||(Hp={}));var il;(r=>r.defaultData={usePhysics:!1,gravity:-10})(il||(il={}));var Wp;(r=>r.defaultData={playCamera:Mn,gameControlObject:null})(Wp||(Wp={}));var mu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(ax,1),postprocessing:hu.defaultData,fog:fu.defaultData,globalPhysics:il.defaultData,ambient:Up.defaultData,ao:Hp.defaultData,shadow:kp.defaultData,publish:Wp.defaultData})(mu||(mu={}));var yu;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(yu||(yu={}));var fx;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(fx||(fx={}));var Sa;(o=>{o.identity={...iu.identity,hiddenMatrix:In.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return fc({position:Tn.isEqual(i.position,a.position)?void 0:a.position,rotation:Tn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Tn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:In.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Sa||(Sa={}));var Rt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:Dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Sa.identity,cloner:null})(Rt||(Rt={}));var gu;(r=>r.defaultData={type:"Empty",...Rt.defaultData})(gu||(gu={}));var hx;(r=>r.defaultData={type:"ParticleCollider",...yu.defaultData,...Rt.defaultData})(hx||(hx={}));var mx;(r=>r.defaultData={type:"Component",...Rt.defaultData})(mx||(mx={}));var yx;(r=>r.defaultData={type:"Particle",...Rt.defaultData,...ga.defaultData})(yx||(yx={}));var _n;(r=>r.defaultData={type:"Mesh",...Rt.defaultData,...cu.defaultData})(_n||(_n={}));var mi;(r=>r.defaultData={...Rt.defaultData,...Sa.identity,position:[0,0,Nn.DefaultTargetOffset],...Nn.defaultData})(mi||(mi={}));var xu;(e=>{function n(t){return{...Rt.defaultData,...lu.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(xu||(xu={}));var wa;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(wa||(wa={}));var Ao;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Rt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Sa.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Ao||(Ao={}));var Xo;(e=>{e.defaultData={type:"Page",...Rt.defaultData,physics:{...Dn.defaultData,fusedBody:!1},...mu.defaultData,camera:mi.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Xo||(Xo={}));var bu;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:In.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Dn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Nn.defaultData},a.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"]},a.defaultMeshObject={name:"Rectangle",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("TextGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("InputGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(bu||(bu={}));var yi;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new lt}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new lt})))):eo.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Pn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&Bt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Pn(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&&Bt.patch(f,d)}}}).data),s}function e(i,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(...au.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 t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Sa.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})}),eo.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:pu.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(su.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=zt.clone(l.color))}return s}o.patch=t})(yi||(yi={}));var Pa;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Pa||(Pa={}));var to;(r=>r.defaultData={orbitControls:Pa.defaultData,playPage:En,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70}},stopRaycast:!0,hdTransmission:!1})(to||(to={}));var qp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(qp||(qp={}));var $p;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})($p||($p={}));var Ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...qp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:$p.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ko||(Ko={}));var gx;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ca.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(gx||(gx={}));var Qo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:xu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=bu.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 st;return h.push({fi:1,id:En,data:{...Xo.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:to.defaultData,styles:Ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:to.defaultData,styles:Ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:to.defaultData,styles:Ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...to.defaultData},styles:Ko.defaultData()}};function s(u){return{...c.defaultData,objects:Jt(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Qo||(Qo={}));var Oa;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Oa||(Oa={}));var vu;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new ve}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(vu||(vu={}));var xx;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new ve,queries:new ve,autoStart:!0}))(xx||(xx={}));var Bn;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Bn||(Bn={}));var Yp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Yp||(Yp={}));var bx;(r=>r.all=[...Yp.all,"components"])(bx||(bx={}));var vx;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(vx||(vx={}));var ro;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(ro||(ro={}));var Gr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(a,he.prototype)}i.defaultColors=n;function r(){return Jt({},he.prototype)}i.defaultImages=r;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,variables:new ve,userAPIs:new he,userWebhooks:new he,lib:ro.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let 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}i.getFormattedTimerTime=o})(Gr||(Gr={}));var al=require("three");var Su;(r=>r.list=["idle","move","jump","run"])(Su||(Su={}));var wu;(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 ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:_e.fromHexAndA(3728051,1)}}))(wu||(wu={}));function Sx(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Jr(xt(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...xt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Zo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Jo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Yt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==lt.prototype&&r(o.material)})})}function mT(n){Object.assign(n.scene.publish,{orbitControls:{...Pa.defaultData,...xt(n.scene.publish.orbitControls)}})}function yT(n){Object.assign(n.scene.publish.settings,{video:{...to.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function gT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((dx.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(px.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function xT(n){n.scene.publish.withBackground=!0}function bT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function vT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function ST(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function wT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=xt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=xt(e).booleanExclude!==!0)}})}function PT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function CT(n){function r(t){Object.setPrototypeOf(t,lt.prototype),t.texture&&Object.setPrototypeOf(t.texture,lt.prototype)}function e(t){Object.setPrototypeOf(t,lt.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=xt(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=xt(l).layers;e(c),l.layers=c}})})}function wx(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function Xp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...xt(r),colors:e,steps:t};Object.assign(r,o)}})}function OT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Px(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Xp(t)}):"material"in e&&typeof e.material!="string"&&Xp(e.material)}),Object.values(n.shared.materials).forEach(r=>Xp(r))}function AT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function TT(n){n.shared.audios=Jt({},he.prototype)}function IT(n){n.shared.videos=Jt({},he.prototype)}function MT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function ET(n){Object.entries(xt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(xt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function NT(n){n.scene.publish.settings.web.preload=!1}function Cx(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Ox(n){n.layers&&n.layers.forEach(r=>{ux(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function DT(n){n.shared.fonts=Jt({},he.prototype)}function _T(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function BT(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Yt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=_T(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Rt.defaultData,..._n.defaultData,flatShading:!1,wireframe:!1,geometry:{...Yo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:xt(o.states),events:xt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=xt(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function RT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:al.MathUtils.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,Jr(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 ve({fi:0,id:al.MathUtils.generateUUID(),data:c},{fi:1,id:al.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function LT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Jr(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={...Jr(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:al.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Ax(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Tx(n){Zo(n,Ax),Jo(n,Ax)}function VT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function zT(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function GT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Yt.defaultTwoLayerData("phong"))})}function FT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function jT(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function kT(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function UT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function HT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function WT(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function qT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=wu.defaultDataThirdPerson.navmesh)})})}function $T(n){n.scene.styles||(n.scene.styles=Ko.defaultData())}function Ix(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function YT(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Jo(n,Ix),Zo(n,Ix)}function XT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function KT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Mx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Ex(n,r){if(r<1&&(Jo(n,Sx),Zo(n,Sx),n.schema=1),r<2&&(mT(n),n.schema=2),r<3&&(gT(n),n.schema=3),r<4&&(xT(n),n.schema=4),r<5&&(bT(n),n.schema=5),r<6&&(vT(n),n.schema=6),r<7&&(ST(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Px(n),n.schema=9),r<10&&(OT(n),n.schema=10),r<11&&(AT(n),n.schema=11),r<12&&(Px(n),n.schema=12),r<13&&(TT(n),n.schema=13),r<14&&(MT(n),n.schema=14),r<15&&(ET(n),n.schema=15),r<16&&(NT(n),n.schema=16),r<17&&(Jo(n,Cx),Zo(n,Cx),n.schema=17),r<18&&(Jo(n,wx),Zo(n,wx),n.schema=18),r<19&&(yT(n),n.schema=19),r<20&&(DT(n),BT(n),n.schema=20),r<21&&(RT(n),LT(n),n.schema=21),r<22&&(Tx(n),n.schema=22),r<23&&(VT(n),n.schema=23),r<24&&(zT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(IT(n),r<25&&(n.schema=25)),r<26&&(wT(n),n.schema=26),r<27&&(PT(n),n.schema=27),r<28&&(Tx(n),n.schema=28),r<29&&(CT(n),n.schema=29),r<30&&(GT(n),n.schema=30),r<31&&(FT(n),n.schema=31),r<33&&(jT(n),n.schema=33),r<34&&(kT(n),n.schema=34),r<35&&(UT(n),n.schema=35),r<36&&(HT(n),n.schema=36),r<37&&(WT(n),n.schema=37),r<38&&(Jo(n,Ox),Zo(n,Ox),n.schema=38),r<39&&(qT(n),n.schema=39),r<40&&($T(n),n.schema=40),r<41&&(YT(n),n.schema=41),r<42&&(XT(n),n.schema=42),r<43&&(KT(n),n.schema=43),r<99){Jo(n,Mx),Zo(n,Mx),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Mn);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=En,t.insertBefore(null,null,[{id:En,data:{...Xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Jr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Jr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...il.defaultData,...Jr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Qo.TRASH_CAN_ID&&t.move(En,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,Dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Nx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function QT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function ZT(n){Array.isArray(xt(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var Aa=180/Math.PI;function Dx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Aa)}function _x(n){Dx(n),n.type==="Page"&&Dx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Aa))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*Aa),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Aa),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Aa,r.extrusion.twist*=Aa),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(xt(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function JT(n){n.shared.variables=Jt({},he.prototype)}function eI(n){let r=xt(n.shared.variables);n.shared.variables=Jt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var To=115;function Bx(n,r){r(n.data);for(let e of n.children)Bx(e,r)}function tI(n){let r=n.schema??104;r!==To&&r<105&&(Bx(n.asset,_x),n.schema=105)}function rI(n){n.shared.particles=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.particles=ro.defaultData().particles)}function oI(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function nI(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function iI(n){n.scene.objects.traverse((r,e)=>{Array.isArray(xt(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function aI(n){n.shared.userAPIs=Jt({},he.prototype),n.shared.userWebhooks=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.userAPIs=ro.defaultData().userAPIs,n.shared.lib.userWebhooks=ro.defaultData().userWebhooks)}function Pu(n){let r=n.schema??0;if(r!==To){console.warn("updating from ",r,"to ",To),Ex(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=to.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Jo(n,Nx),Zo(n,Nx),n.schema=101),r<102&&(QT(n),n.schema=102),r<104&&(n.shared.catelogs=new he,n.shared.lib=ro.defaultData(),n.schema=104),r<105&&(JT(n),n.scene.objects.traverse((e,t)=>{_x(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))tI(e);r<106&&(eI(n),n.schema=106),r<107&&(n.shared.lib.variables=ro.defaultData().variables,n.schema=107),r<109&&(rI(n),n.schema=109),r<110&&(oI(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{ZT(t)}),n.schema=111),r<112&&(nI(n),n.schema=112),r<113&&(iI(n),n.schema=113),r<114&&(n.scene.publish.settings.web.imageQuality===void 0&&(n.scene.publish.settings.web.imageQuality=70),n.schema=114),r<115&&(aI(n),n.schema=115)}}var Ca;(c=>{c.defaultData={schema:To,scene:Qo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors()}},c.emptyDataForImports=function(){let u=Qo.emptyDataWithPage();return{schema:To,scene:u,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors(),images:Gr.defaultImages()}}},c.emptyData=function(){return{schema:To,scene:Qo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:Gr.emptyData()}},c.clipboard2dData=function(){return{schema:To,scene:Qo.emptyData(),frames:new he,shared:Gr.emptyData()}},c.collabHelper={...Js,updateSchema(u){return(u.schema??0)<To?Pn(u,Pu):(u.schema??0)-To}};function i(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:ro.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})(Ca||(Ca={}));var Cu;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Cu||(Cu={}));var Rx;(r=>{function n(e){return!0}r.is=n})(Rx||(Rx={}));var Ou;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return fc({position:ya.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ya.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ya.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Ou||(Ou={}));var Kp;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Kp||(Kp={}));var Lx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(Lx||(Lx={}));var Au;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(Et,1),enabled:!0},stroke:{color:_e.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:_e.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:_e.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Au||(Au={}));var gi;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Ou.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(gi||(gi={}));var sl;(r=>r.defaultData={...Ou.defaultData,...Kp.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(sl||(sl={}));var Ta;(r=>r.defaultData={...sl.defaultData,...Au.defaultData})(Ta||(Ta={}));var Tu;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Tu||(Tu={}));var Qp;(r=>r.defaultData={...Ta.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Qp||(Qp={}));var Ia;(r=>r.defaultData={...Ta.defaultData,...Tu.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(Ia||(Ia={}));var Zp;(r=>r.defaultData={...Ta.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 Jp;(r=>r.defaultData={...Ta.defaultData,type:"path2d",path:"",name:"Path"})(Jp||(Jp={}));var Vx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(Vx||(Vx={}));var ll;(r=>r.defaultData={...sl.defaultData,name:"Group",type:"group2d"})(ll||(ll={}));var ef;(r=>r.defaultData=()=>({...sl.defaultData,...Tu.defaultData,...Au.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:_e.fromHexAndA(4737101,1),enabled:!0},stroke:{color:_e.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(ef||(ef={}));var en;(i=>{function n(a){switch(a){case"rectangle2d":return{...Ia.defaultData};case"ellipse2d":return{...Qp.defaultData};case"text2d":return{...Zp.defaultData};case"vector2d":return{...Ia.defaultData};case"path2d":return{...Jp.defaultData};case"frame2d":return{...ef.defaultData()};case"group2d":return{...ll.defaultData}}}i.defaultData=n;function r(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]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(en||(en={}));var Iu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(Iu||(Iu={}));var Je=require("three"),Pd=qs(Gx());var sI=.5*(Math.sqrt(3)-1),cl=(3-Math.sqrt(3))/6,lI=1/3,Io=1/6,VU=(Math.sqrt(5)-1)/4,zU=(5-Math.sqrt(5))/20,ul=n=>Math.floor(n)|0,Fx=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]),rf=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 jx(n=Math.random){let r=Ux(n),e=new Float64Array(r).map(o=>Fx[o%12*2]),t=new Float64Array(r).map(o=>Fx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*sI,p=ul(i+u),d=ul(a+u),f=(p+d)*cl,h=p-f,m=d-f,y=i-h,b=a-m,S,P;y>b?(S=1,P=0):(S=0,P=1);let O=y-S+cl,v=b-P+cl,A=y-1+2*cl,T=b-1+2*cl,g=p&255,D=d&255,E=.5-y*y-b*b;if(E>=0){let _=g+r[D],B=e[_],V=t[_];E*=E,s=E*E*(B*y+V*b)}let M=.5-O*O-v*v;if(M>=0){let _=g+S+r[D+P],B=e[_],V=t[_];M*=M,l=M*M*(B*O+V*v)}let N=.5-A*A-T*T;if(N>=0){let _=g+1+r[D+1],B=e[_],V=t[_];N*=N,c=N*N*(B*A+V*T)}return 70*(s+l+c)}}function kx(n=Math.random){let r=Ux(n),e=new Float64Array(r).map(i=>rf[i%12*3]),t=new Float64Array(r).map(i=>rf[i%12*3+1]),o=new Float64Array(r).map(i=>rf[i%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*lI,h=ul(a+f),m=ul(s+f),y=ul(l+f),b=(h+m+y)*Io,S=h-b,P=m-b,O=y-b,v=a-S,A=s-P,T=l-O,g,D,E,M,N,_;v>=A?A>=T?(g=1,D=0,E=0,M=1,N=1,_=0):v>=T?(g=1,D=0,E=0,M=1,N=0,_=1):(g=0,D=0,E=1,M=1,N=0,_=1):A<T?(g=0,D=0,E=1,M=0,N=1,_=1):v<T?(g=0,D=1,E=0,M=0,N=1,_=1):(g=0,D=1,E=0,M=1,N=1,_=0);let B=v-g+Io,V=A-D+Io,k=T-E+Io,L=v-M+2*Io,W=A-N+2*Io,F=T-_+2*Io,j=v-1+3*Io,H=A-1+3*Io,q=T-1+3*Io,re=h&255,ee=m&255,X=y&255,te=.6-v*v-A*A-T*T;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*v+t[$]*A+o[$]*T)}let K=.6-B*B-V*V-k*k;if(K<0)u=0;else{let $=re+g+r[ee+D+r[X+E]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*k)}let Z=.6-L*L-W*W-F*F;if(Z<0)p=0;else{let $=re+M+r[ee+N+r[X+_]];Z*=Z,p=Z*Z*(e[$]*L+t[$]*W+o[$]*F)}let Q=.6-j*j-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*j+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function Ux(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Hx=require("three"),oo=new Hx.Triangle,Mu=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;oo.a.fromBufferAttribute(r,o),oo.b.fromBufferAttribute(r,o+1),oo.c.fromBufferAttribute(r,o+2),i*=oo.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),oo.a.fromBufferAttribute(this.positionAttribute,r*3),oo.b.fromBufferAttribute(this.positionAttribute,r*3+1),oo.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(oo.a,o).addScaledVector(oo.b,i).addScaledVector(oo.c,1-(o+i)),oo.getNormal(t),this}};var Yx=require("three");var Er=require("three"),$x=qs(qx()),cI=new Er.Matrix4,uI=new Er.Matrix4,dI=new Er.Matrix4,Ma;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ma||(Ma={}));var Ea=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Er.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Er.Matrix4;this.matrixWorldRigid=new Er.Matrix4;this.shearScale=new Er.Matrix4;this.shearScaleInv=new Er.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Er.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)Ma.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ma.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,$x.SVD)(o),l=cI.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=uI.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=dI.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(t,o){this.updateWorldMatrix(!0,!1);let i=new Er.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Er.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var of=class extends Ea(Yx.Object3D){},pI=n=>n.type==="Mesh",tn=class extends of{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new tn(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return pI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var Ka=require("three");var Ku=require("three");var sr=require("three");var At=require("three"),xi=new At.Vector3,bi=new At.Vector3,Na=new At.Matrix4,Kx=[new At.Vector3(-1,1,1),new At.Vector3(-1,-1,1),new At.Vector3(1,-1,1),new At.Vector3(1,1,1),new At.Vector3(-1,1,-1),new At.Vector3(-1,-1,-1),new At.Vector3(1,-1,-1),new At.Vector3(1,1,-1)],fI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],hI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Xx=(n,r,e)=>{n.updateEntityBoxSize(xi,bi),Na.copy(r).multiply(n.matrixWorld),bi.x===0&&bi.y===0&&bi.z===0?e.push(new At.Vector3(xi.x,xi.y,xi.z).applyMatrix4(Na)):Kx.forEach(t=>{e.push(t.clone().multiply(bi).add(xi).applyMatrix4(Na))})},dl=class extends At.Box3{constructor(){super(...arguments);this.matrix=new At.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new At.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new At.Vector3);return}Xx(a,t,i)}}):Xx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Na.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(bi).multiplyScalar(.5),this.getCenter(xi),Na.copy(this.matrix).setPosition(xi),this.vertices=Kx.map(e=>e.clone().multiply(bi).applyMatrix4(Na))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=fI.map(([e,t])=>new At.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new At.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=hI.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var no={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var Xt=require("three"),af=class extends Xt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];t&&t.equals(h)||(e.push(h),t=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var sf=.001;function lf(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=sf}function nf(n,r){let e=new Xt.Vector3(...n.position),t=new Xt.Vector3(...n.controlNext.position),o=new Xt.Vector3(...r.controlPrevious.position),i=new Xt.Vector3(...r.position);return lf(e,t,i)&&lf(e,o,i)}function Nu(n){let r=n.points.map(u=>new Xt.Vector3(...u.data.position)),e=[n.points[0]],t=new Xt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)lf(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Xt.Vector3(...p.position),f=new Xt.Vector3(...p.controlPrevious.position),h=new Xt.Vector3(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!n.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,S=e[y].data,P=e[b].data,O=new Xt.Vector3(...S.position),v=new Xt.Vector3(...P.position),A=O.clone().sub(d).normalize(),T=v.clone().sub(d).normalize();Object.assign(m,{prevDir:A,nextDir:T});let g=nf(S,p),D=nf(p,P);if(!g||!D)s[u]={...m,removedLength:0};else{let E=A.clone().add(T).normalize(),M=E.clone().cross(A).length()/A.dot(E);s[u]={...m,tan:M,removedLength:p.roundness/M}}}for(let u=0;u<i;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<i;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!nf(e[p].data,e[d].data))f.position.distanceTo(h.position)>sf&&(m=new Xt.CubicBezierCurve3(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)>sf&&(m=new Xt.CubicBezierCurve3(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),S=f.distanceTo(h)/2,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(S,2))).add(b),O=y.clone().multiplyScalar(-m).add(P),v=d.distanceTo(O)/d.distanceTo(b),A=p.prevDir.clone().multiplyScalar(v*d.distanceTo(f)).add(d),T=A.clone().lerp(O,2),g=f.clone().lerp(A,4/3),D=h.clone().lerp(T,4/3);l[2*u]=new Xt.CubicBezierCurve3(f,g,D,h)}let c=new af;return l.forEach(u=>{u&&c.add(u)}),c}var je;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(je||(je={}));var Da=n=>je.is(n),mI={type:"completeState",isfromEntity:!0},yI=["x","y","z"],cf=new sr.Vector3,gI=new sr.Vector3().set(0,1,0),_a=n=>class extends Ea(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new dl;this._recursiveBBox=new dl;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(je.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(je.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(je.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)yi.toOps(this.data,a.data).forEach(l=>{let c=pa.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=yi.patch(this.data,a),yi.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Da(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(je.is(o[i]))return o[i];if(je.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&je.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Da(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{je.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Da(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Da(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Da(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Da(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*sr.MathUtils.RAD2DEG,this.rotation.y*sr.MathUtils.RAD2DEG,this.rotation.z*sr.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return sa(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,yI[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(cf.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(sr.MathUtils.DEG2RAD),this.rotation.setFromVector3(cf),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??In.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)je.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{je.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return sa(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Fe(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=ct.zoom(d,t.path.slice(2));if(f)for(let h in t.props)t.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(t.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=ct.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,yi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Fe(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let f=i.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=t.props[d],f.updateState(vo.apply(f.component.data,f.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let f=ct.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let h=t.props;if(f)for(let[m,y]of Object.entries(t.props))y===void 0&&(h===t.props&&(h={...t.props}),h[m]=f[m]);t={...t,props:h}}d.overrideData=wa.resolve(o.overrides,u),d.updateByOp(t,gt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Ao.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Ao.rootOverrideProps)if(Fe(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=vo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=vo.filterOp(p.overrideData,t);if(d){let f;s===p.data&&t===d?f=o:f=gt.applySimple(p.data,d),p.updateByOp(d,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!eo.is(t.props.type)&&no.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){no.changeEntityProptotype(this,o,i);for(let a of this.children)je.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),t.path[0]==="morphTargetInfluences"&&t.type===0){let s=o.morphTargetInfluences.get(t.path[1])?.data.name;s&&this.updateMorphInfluences(s,i.shared.getVariable(t.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Fe(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Fe(t.path,["cloner"])!==null){let a=gt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=t.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=Nu(c.geometry.path),p=(i+a)%1;i+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 sr.Matrix4;l.updateMatrixWorld();let h=new sr.Matrix4().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new sr.Matrix4().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),S=new sr.Matrix4().lookAt(d,b,gI),P=cf.setFromEuler(new sr.Euler().setFromRotationMatrix(S)).multiplyScalar(sr.MathUtils.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(mI)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof no.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new no.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};var Ln=require("three");var it=require("three"),Zx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=it.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=n.parameters,h;return l===0?(h=new it.BufferGeometry,h.setAttribute("position",new it.Float32BufferAttribute([],3))):p||f?h=new pl(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,f):h=new it.CylinderGeometry(c,u,t,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/r),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Rn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qx(n){return new it.Vector2(n.y,-n.x)}var pl=class extends it.BufferGeometry{constructor(r,e,t,o,i,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],S=0,P=t/2,O=new it.Vector3,v=new it.Vector3;f&&r==0&&(r=c),f&&e==0&&(e=u);let A=new it.Vector2(r,P),T=new it.Vector2(e,-P),g=null,D=null,E=null,M=null,N=A.clone().sub(T),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let k=A.clone();k.x-=_;let L=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),j=Math.tan(L/2),H=F+j,q=d?H:j,re=d?H:F;if(c=Math.min(c,(r-B)/q,N.length()/H),u=Math.min(u,(e-V)/re,N.length()/H),c>0){let Q=c/F;g=A.clone().sub(new it.Vector2(Q,c)),d&&(E=g.clone(),E.x-=_-H*c),A.sub(N.clone().setLength(Q))}if(u>0){let Q=u/j;D=T.clone().sub(new it.Vector2(Q,-u)),T.add(N.clone().setLength(Q)),d&&(M=D.clone(),M.x-=_-H*u,k.sub(N.clone().setLength(Q)))}N=A.clone().sub(T);let ee=N.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new it.Vector2(Math.sin(le),Math.cos(le));M&&D?(te($,ue,ne,L,u,M,-1,!0),te($,ue,ne,W,u,D,-1,!1)):D?(K($,ne,D.x,0,-1),te($,ue,ne,W,u,D,-1,!1)):a||K($,ne,e,V,-1);let ce=Qx(N).normalize();if(Rn(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let ye=ae/i,fe=N.clone().multiplyScalar(ye).add(T);Rn(fe,ne,v),m.push(v.x,v.y,v.z),y.push(O.x,O.y,O.z),b.push(ue,.5+v.y/t),$.push(S++)}if(E&&g?(te($,ue,ne,L,c,g,1,!1),te($,ue,ne,W,c,E,1,!0)):g?(te($,ue,ne,L,c,g,1,!1),K($,ne,g.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Qx(N).multiplyScalar(-1).normalize();Rn(ae,ne,O);for(let ye=0;ye<=i;ye++){let fe=ye/i,me=N.clone().multiplyScalar(-fe).add(k);Rn(me,ne,v),m.push(v.x,v.y,v.z),y.push(O.x,O.y,O.z),b.push(ue,.5+v.y/t),$.push(S++)}}d&&!a&&$.push($[0]),X.push($)}for(let Q=0;Q<X.length-1;Q++)for(let $=0;$<X[0].length-1;$++){if(a&&d&&$==i)continue;let ue=X[Q][$],le=X[Q+1][$],ne=X[Q+1][$+1],ce=X[Q][$+1],ae=m[ne*3+0],ye=m[ne*3+2];h.push(ue,le,ce),(ae!=0||ye!=0)&&h.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new it.Float32BufferAttribute(m,3)),this.setAttribute("normal",new it.Float32BufferAttribute(y,3)),this.setAttribute("uv",new it.Float32BufferAttribute(b,2));function te(Q,$,ue,le,ne,ce,ae,ye){for(let fe=0;fe<p+1;fe++){let me=fe/p,be=ae<0?me:1-me;ye&&(be-=1),be*=le;let ge=new it.Vector2(Math.sin(be),Math.cos(be)*ae),C=ge.clone().multiplyScalar(ne).add(ce);Rn(C,ue,v),m.push(v.x,v.y,v.z),Rn(ge,ue,O),y.push(O.x,O.y,O.z),b.push($,.5+v.y/t),Q.push(S++)}}function K(Q,$,ue,le,ne){let ce=new it.Vector3,ae=new it.Vector2,ye=[ue,le];ne<0&&ye.reverse();for(let fe of ye)ae.set(fe,P*ne),Rn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),b.push(.5,.5),Q.push(S++)}function Z(Q,$,ue){let le=new it.Vector2(Math.sin(ue),Math.cos(ue)),ne=new it.Vector2(-Math.cos(ue),Math.sin(ue)),ce=new it.Vector3,ae=Q<0?(me,be,ge)=>h.push(me,be,ge):(me,be,ge)=>h.push(me,ge,be),ye=new it.Vector2((r+e+B+V)/4,0);Rn(ye,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),b.push(.5,.5);let fe=S++;for(let me of $){let be=m.slice(me*3,me*3+3);m.push(...be),y.push(ne.x,0,ne.y);let ge=b.slice(me*2,me*2+2);b.push(...ge),S++}for(let me=fe+1;me<S-1;me++)ae(fe,me,me+1);ae(fe,S-1,fe+1)}}};var Jx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=Ln.MathUtils.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new Ln.BufferGeometry,d.setAttribute("position",new Ln.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new pl(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new Ln.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var xr=require("three"),e0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s===0?c=new xr.BoxGeometry(r,e,t,o,i,a):c=new df(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},uf=Math.PI/2,df=class extends xr.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,t,e,r,a,i),h("z","y","x",1,-1,t,e,-r,a,i),h("x","z","y",1,1,r,t,e,o,a),h("x","z","y",1,-1,r,t,-e,o,a),h("x","y","z",1,-1,r,e,t,o,i),h("x","y","z",-1,-1,r,e,-t,o,i),s>0&&(m("z","y","x",-1,-1,1,t,e,r,a),m("z","y","x",1,-1,-1,t,e,r,a),m("z","y","x",-1,1,-1,t,e,r,a),m("z","y","x",1,1,1,t,e,r,a),m("x","y","z",-1,-1,-1,r,e,t,o),m("x","y","z",1,-1,1,r,e,t,o),m("x","y","z",-1,1,1,r,e,t,o),m("x","y","z",1,1,-1,r,e,t,o),m("y","x","z",-1,-1,1,e,r,t,i),m("y","x","z",1,-1,-1,e,r,t,i),m("y","x","z",1,1,1,e,r,t,i),m("y","x","z",-1,1,-1,e,r,t,i),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 xr.Float32BufferAttribute(u,3)),this.setAttribute("normal",new xr.Float32BufferAttribute(p,3)),this.setAttribute("uv",new xr.Float32BufferAttribute(d,2));function h(b,S,P,O,v,A,T,g,D,E){let M=(A-2*s)/D,N=(T-2*s)/E,_=A/2-s,B=T/2-s,V=g/2,k=D+1,L=E+1,W=0,F=new xr.Vector3;for(let j=0;j<L;j++){let H=j*N-B;for(let q=0;q<k;q++){let re=q*M-_;F[b]=re*O,F[S]=H*v,F[P]=V,u.push(F.x,F.y,F.z),F[b]=0,F[S]=0,F[P]=g>0?1:-1,p.push(F.x,F.y,F.z),d.push(q/D),d.push(1-j/E),W+=1}}for(let j=0;j<E;j++)for(let H=0;H<D;H++){let q=f+H+k*j,re=f+H+k*(j+1),ee=f+(H+1)+k*(j+1),X=f+(H+1)+k*j;c.push(q,re,X),c.push(re,ee,X)}f+=W}function m(b,S,P,O,v,A,T,g,D,E){let M=(T-2*s)/E,N=T/2-s,_=g/2-s,B=D/2,V=E+1,k=0,L=new xr.Vector3,W=new xr.Vector3;for(let F=0;F<l+1;F++){let j=F/l*uf,H=Math.sin(j)*s,q=(1-Math.cos(j))*s,re=Math.sin(j),ee=Math.cos(j);L[S]=(_+H)*v,L[P]=(B-q)*A,W[b]=0,W[S]=re*Math.sign(L[S]),W[P]=ee*Math.sign(L[P]);for(let X=0;X<V;X++){let te=X*M-N;L[b]=te*O,u.push(L.x,L.y,L.z),p.push(W.x,W.y,W.z),d.push(X/E),d.push(0),k+=1}}for(let F=0;F<l;F++)for(let j=0;j<E;j++){let H=f+j+V*F,q=f+j+V*(F+1),re=f+(j+1)+V*(F+1),ee=f+(j+1)+V*F;c.push(H,q,ee),c.push(q,re,ee)}f+=k}function y(b,S,P){let O=new xr.Vector3,v=new xr.Vector3(r/2,e/2,t/2);v.subScalar(s);let A=[],T=b*S*P>0?(D,E,M)=>c.push(D,E,M):(D,E,M)=>c.push(D,M,E);for(let D=0;D<=l;D++){let E=[],M=uf*(1-D/l),N=Math.cos(M),_=Math.sin(M),B=0;for(let V=0;V<=D;V++){let k=Math.cos(B),L=Math.sin(B);O.x=N*k,O.y=_,O.z=N*L;let W=v.clone().addScaledVector(O,s);u.push(b*W.x,S*W.y,P*W.z),p.push(b*O.x,S*O.y,P*O.z),d.push(0,0),E.push(f++),B+=uf/D}A.push(E)}let g=A.length-1;for(let D=0;D<g;D++){let E=A[D],M=A[D+1],N=E.length-1;T(E[0],M[1],M[0]);for(let _=1;_<=N;_++)T(E[_-1],E[_],M[_]),T(E[_],M[_+1],M[_])}}}};var Tt=require("three"),Vn=class extends Tt.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Tt.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Tt.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Tt.Float32BufferAttribute(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],h=new Tt.Vector3,m=h.clone(),y=new Tt.Triangle,b=i*o,S=o-b,P=a+1,O=new Tt.Vector3,v=(F,j)=>O.subVectors(F,j).normalize(),A=(F,j)=>Array(F).fill(void 0).map(j),T=A(r.length/3,(F,j)=>new Tt.Vector3().fromArray(r,j*3).setLength(o)),g=[],D=1e6;for(let F=0;F<T.length;F++){let j=T[F],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=j.distanceToSquared(T[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=g[q]?.includes(F)==!0;ee<=X&&K.push(q+ +ue*D),Z=H.findIndex(le=>le[0]==re)}g.push(K)}let E=[];{let F=0,j=0,H,q,re=f==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[F,j]=[H+X+ee+2,q+X+ee+3],E.push(H,q,...re?[j,H]:[F,q],j,F),[H,q]=[F,j];E.push(H,q,H+a+2)}}let M=h.clone(),N=h.clone(),_=h.clone(),B=h.clone(),V=h.clone(),k=[],L=A(T.length,()=>A(f,()=>h.clone()));for(let F=0;F<T.length;F++){h.copy(T[F]).normalize(),M.copy(h).multiplyScalar(S);let j=g[F];for(let K=0;K<j.length;K++){let Z=j[K],Q=j[(K+1)%f];y.setFromPointsAndIndices(T,F,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(M,L[F][K])}let H=[],q=[],re=[],ee=new Tt.Vector3;a==0&&[...L[F]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=L[F][Q],ue=L[F][K];h.copy($).sub(M),m.copy(ue).sub(M);let le=M.angleTo(h),ne=h.angleTo(m),ce=Math.cos(le)*b;a==0?N.copy(ee):N.copy(M).setLength(S+ce),q.push(ce);let ae=[N,$,ue];for(let ye=0;ye<2;ye++){let fe=ae[ye],me=ae[ye+1];B.subVectors(fe,M),V.subVectors(me,M),_.crossVectors(B,V).normalize();for(let be=0;be<P;be++){let ge=[le,ne][ye]*be/P;h.copy(B).applyAxisAngle(_,ge).add(M),H.push(h.clone()),ye&&(v(h,M),Z.push([be==0?fe:h.clone(),O.clone()]))}ye&&(v(me,M),Z.push([me,O.clone()]))}re.push(Z)}k.push(re);let X=2*P,te=2;for(let K=0;K<f;K++){let Z=X*K,Q=X*((K+1)%f),$=[H[Z]];for(let le=1;le<P;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)h.lerpVectors(B,V,ne/(ce+1)),h.sub(M).setLength(q[K]).add(M),$.push(h.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=E.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(v(le,M),[O.x,O.y,O.z])).flat())}}let W=[];for(let F=0;F<g.length;F++)for(let j=0;j<f;j++){let H=g[F][j];if(H<D){let q=g[H].findIndex(X=>X%D==F),re=k[F][j],ee=k[H][q];for(let X=0;X<P;X++){let te=re[X],K=ee[P-X],Z=re[X+1],Q=ee[P-(X+1)];[te,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}W.push(re[0][0],ee[P][0],re[P][0],ee[0][0])}}for(;W.length;){let F,j,H,q;[F,j]=W.splice(0,2);let re=[F];for(;F!=j;)re.push(j),H=W.indexOf(j),q=H%2,j=W.splice(H-q,2)[1-q];O.subVectors(re[0],re[1]).cross(h.subVectors(re[0],re[2])).normalize();let ee=O.dot(re[0])<0;ee&&O.negate();for(let X=1;X<=re.length-2;X++)[re[X+ +ee],re[X+1-+ee],re[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new Tt.Vector3;for(let T=0;T<s.length;T+=3){d.x=s[T+0],d.y=s[T+1],d.z=s[T+2];let g=v(d)/2/Math.PI+.5,D=A(d)/Math.PI+.5;l.push(g,1-D)}let f=new Tt.Vector3,h=new Tt.Vector3,m=new Tt.Vector3,y=new Tt.Vector3,b=new Tt.Vector2,S=new Tt.Vector2,P=new Tt.Vector2,O=(T,g,D,E)=>{E<0&&T.x===1&&(l[g]=T.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let T=0,g=0;T<s.length;T+=9,g+=6){f.set(s[T+0],s[T+1],s[T+2]),h.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),b.set(l[g+0],l[g+1]),S.set(l[g+2],l[g+3]),P.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=v(y);O(b,g+0,f,D),O(S,g+2,h,D),O(P,g+4,m,D)}for(let T=0;T<l.length;T+=6){let g=l[T+0],D=l[T+2],E=l[T+4],M=Math.max(g,D,E),N=Math.min(g,D,E);M>.9&&N<.1&&(g<.2&&(l[T+0]+=1),D<.2&&(l[T+2]+=1),E<.2&&(l[T+4]+=1))}function v(T){return Math.atan2(T.z,-T.x)}function A(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(r){return new Vn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var t0=require("three"),r0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new fl(r*.5,i,a):new t0.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},fl=class extends Vn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,r,e,t),this.type=l}static fromJSON(r){return new fl(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ee=require("three"),hl=1e-12,Ba=class{constructor(r){this.position=new Ee.Vector2;this.startPosition=new Ee.Vector2;this.uuid=Ee.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Ba(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ra=class extends Ba{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ra(this.parent).copy(this)}},io=class extends Ba{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ra(this),new Ra(this))}static create(e,t){let o=new io(e,new Ee.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new io(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ee.Vector2,t=new Ee.Vector2){let[o,i]=this.computeTangents();return o&&i&&(o0(o,e),o0(i,t)),[e,t]}computeTangent(e=new Ee.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ee.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function o0(n,r=new Ee.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var ff=n=>n,La=new Ee.Vector2,Du=new Ee.Vector2,xI=new Ee.Vector2,bI=new Ee.Vector2,vI=new Ee.Vector2,SI=new Ee.Vector2,i0=new Ee.Vector3,a0=new Ee.Vector3;function s0(n){let r=new Ee.Vector2;r.addVectors(n.v0,La.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ee.Vector2;return e.addVectors(n.v2,Du.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ee.CubicBezierCurve(n.v0,r,e,n.v2)}function ml(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function wI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function PI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function hf(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function l0(n,r,e){return n0(n,r)&&n0(r,e)&&pf(n.position,r.position,e.position)}function pf(n,r,e){return La.copy(r).sub(n).cross(Du.copy(e).sub(n))===0}function c0(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function u0(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function d0(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return hf(r,n,e)>Math.PI&&(u*=-1),ml(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function mf(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function n0(n,r){return pf(n.position,n.controls[1].position,r.position)&&pf(n.position,r.controls[0].position,r.position)}function p0(n,r,e,t,o=.5){let i=La.subVectors(r,n).multiplyScalar(o).add(n),a=Du.subVectors(e,r).multiplyScalar(o).add(r),s=xI.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=bI.subVectors(a,i).multiplyScalar(o).add(i),u=vI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=SI.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function f0(n,r,e=12,t=!0){let o=a0.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=ff(r[l]),u=La,p=zn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ee.CubicBezierCurve||c instanceof Ee.QuadraticBezierCurve||c instanceof Ee.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&PI(i,o))continue;i===void 0&&(i=i0),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function h0(n,r,e,t=12,o=!0){let i=a0.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=ff(r[l]),p=La,d=zn(u,t);s.push(d);for(let f=0;f<=d;f++)if(u instanceof Ee.CubicBezierCurve||u instanceof Ee.QuadraticBezierCurve||u instanceof Ee.LineCurve){if(u.getPoint(f/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=i0:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function yf(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=zn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=zn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=zn(n[0].roundedCurveCorner,r)*.5),t}function zn(n,r=12){return n&&n instanceof Ee.EllipseCurve?r*2:n&&(n instanceof Ee.LineCurve||n instanceof Ee.LineCurve3)?1:n&&n instanceof Ee.SplineCurve?r*n.points.length:r}function m0(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=ff(r[a]),l=zn(s,e),c=La;for(let u=0;u<=l;u++)if(s instanceof Ee.CubicBezierCurve||s instanceof Ee.QuadraticBezierCurve||s instanceof Ee.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&wI(o,c,hl))continue;o===void 0&&(o=Du),o.copy(c),n.push(c.x,c.y),i++}}return ml(n[0],n[n.length-2],hl)&&ml(n[1],n[n.length-1],hl)&&(n.pop(),n.pop()),t&&i>1&&!(ml(n[i-1],n[1],hl)&&ml(n[i-2],n[0],hl))&&(n.push(n[0],n[1]),i++),n}var gf=new Ye.Vector2,CI=new Ye.Vector2,OI=new Ye.Vector2,AI=new Ye.Vector2,TI=new Ye.Vector2,II=new Ye.Vector2,$e=class extends Ye.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ye.Plane(new Ye.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ye.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new $e;return i.isClosed=e.isClosed,i.points=e.points.map(a=>io.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>$e.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)i+=c;else return u+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=gf.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ye.MathUtils.generateUUID()){let i;e instanceof Ye.Vector2?i=e:i=new Ye.Vector2(e,t);let a=new io(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return f0(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=yf(this.points,e,!1),this.roundedCurveDivisions=yf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return h0(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),m0(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=zn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(mf(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(gf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){mf(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&l0(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),S=Math.min(c,y*.499),P=Math.min(b,S),O=1-P/m,v=P/y,A=p.getPointAt(O,gf),T=d.getPointAt(v,CI);this._subSplitCurve(p,f,O,A,void 0),this._subSplitCurve(d,h,v,void 0,T);let g;if(this.useCubicForRoundedCorners){let D=hf(A,a.position,T)/2,E=Math.tan(D)*A.distanceTo(a.position),[M,N]=c0(A,T,E,OI,AI),_=u0(M,N,a.position),[B,V]=d0(_,A,T,E,TI,II);g=new Ye.CubicBezierCurve(A.clone(),B.clone(),V.clone(),T.clone())}else g=new Ye.QuadraticBezierCurve(A.clone(),a.position.clone(),T.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+t,0,g),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Ye.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=p0(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new $e(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],f=new io(Ye.MathUtils.generateUUID(),new Ye.Vector2(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 i=new $e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Ye.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Ye.QuadraticBezierCurve&&(a[l]=s0(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 Ye.CubicBezierCurve?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof Ye.LineCurve&&(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 Ye.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Ye.LineCurve&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Ye.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new $e;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var bf=Math.PI*2;function xf({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function MI(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function y0(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function EI(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,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/i*s,y=h*-i/o*a,b=m+(n+e)/2,S=y+(r+t)/2,P=(a-m)/o,O=(s-y)/i,v=(-a-m)/o,A=(-s-y)/i,T=y0(1,0,P,O),g=y0(P,O,v,A);return!c&&g>0&&(g-=bf),c&&g<0&&(g+=bf),{centerx:b,centery:S,ang1:T,ang2:g}}function g0({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=EI(n,r,e,t,o,i,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(bf/4);Math.abs(1-b)<1e-7&&(b=1);let S=Math.max(Math.ceil(b),1);h/=S;for(let P=0;P<S;P++)l.push(MI(f,h)),f+=h;return l.map(P=>{let{x:O,y:v}=xf(P[0],o,i,m,y),{x:A,y:T}=xf(P[1],o,i,m,y),{x:g,y:D}=xf(P[2],o,i,m,y);return{x1:O,y1:v,x2:A,y2:T,x:g,y:D}})}var vi=require("three");var We;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(We||(We={}));var bt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(bt||(bt={}));function Pe(n,r){if(!n)throw r||"Assertion Failed!"}var Se=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),yl=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),_u=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Va=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),x0=function(){function n(){var r=new Va,e=new yl,t=new _u(0),o=new _u(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new _u(0),t=new _u(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;Pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;Pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Va,e=new Va,t=new yl,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Va;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new yl;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new yl;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Va;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new yl;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&Se.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&Se.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){Pe(o.prev===i),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===i&&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=t,c=t;(l=c.next)!==t;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),b0=function(){function n(){this.handle=null}return n}(),v0=function(){function n(){this.key=null,this.node=0}return n}(),NI=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new b0,this.handles[t]=new v0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,Pe(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new b0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new v0}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;Pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),vf=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),S0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),DI=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new S0,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new S0;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),_I=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?Se.vertLeq(i.Org,a.Org)?Se.edgeSign(a.Dst,i.Org,a.Org)<=0:Se.edgeSign(i.Dst,a.Org,i.Org)>=0:Se.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return Se.edgeSign(i.Dst,o,i.Org)>=0;var s=Se.edgeEval(i.Dst,o,i.Org),l=Se.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){Pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new vf;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case We.ODD:return(e&1)!==0;case We.NONZERO:return e!==0;case We.POSITIVE:return e>0;case We.NEGATIVE:return e<0;case We.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do Pe(Se.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=Se.vertL1dist(e,r),i=Se.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(Se.vertLeq(o.Org,i.Org)){if(Se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;Se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(Se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(Pe(!Se.vertEq(o.Dst,i.Dst)),Se.vertLeq(o.Dst,i.Dst)){if(Se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(Se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new Va,f,h;if(Pe(!Se.vertEq(c,l)),Pe(Se.edgeSign(l,r.event,a)<=0),Pe(Se.edgeSign(c,r.event,s)>=0),Pe(a!==r.event&&s!==r.event),Pe(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(Se.vertLeq(a,s)){if(Se.edgeSign(c,a,s)>0)return!1}else if(Se.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),Se.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)),Se.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),f=Se.vertLeq(a,s)?a:s,Se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),Se.vertEq(d,a)||Se.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!Se.vertEq(l,r.event)&&Se.edgeSign(l,r.event,d)>=0||!Se.vertEq(c,r.event)&&Se.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,h,!0),!0):(Se.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),Se.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),Se.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),Se.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}Se.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,Se.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!Se.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}Pe(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(Pe(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),Se.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new vf;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,Se.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=Se.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);Pe(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new vf,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new DI(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++t===1)),Pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,Se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new NI(i,Se.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,Pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!Se.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),BI=function(){function n(){this.mesh=new x0,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=We.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,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)i=e.coords[y],c[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)i=e.coords[b],i<c[b]&&(c[b]=i,h[b]=e),i>l[b]&&(l[b]=i,f[b]=e);var S=0;if(l[1]-c[1]>l[0]-c[0]&&(S=1),l[2]-c[2]>l[S]-c[S]&&(S=2),c[S]>=l[S]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=h[S],o=f[S],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;Se.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;Se.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(Se.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(Se.edgeGoesLeft(o.Lnext)||Se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(Se.edgeGoesRight(t.Lprev)||Se.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===bt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1;if(e===bt.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new x0),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=We.ODD),e===void 0&&(e=bt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),_I.computeInterior(this,a);var s=this.mesh;return e===bt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===bt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function ao(n){var r=n.windingRule,e=r===void 0?We.ODD:r,t=n.elementType,o=t===void 0?bt.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new BI;n.edgeCreateCallback&&(b.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(b.vertexIdCallback=n.vertexIdCallback);for(var S=0;S<d.length;S++)b.addContour(l||2,d[S]);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 e5=We.ODD,t5=We.NONZERO,r5=We.POSITIVE,o5=We.NEGATIVE,n5=We.ABS_GEQ_TWO,i5=bt.POLYGONS,a5=bt.CONNECTED_POLYGONS,s5=bt.BOUNDARY_CONTOURS;var so=require("three");var Bu=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Bu.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Bu.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},gl=Bu;gl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var xl=class{constructor(r=[],e=(t,o)=>t<o?-1:t>o?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;let r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){let{data:e,compare:t}=this,o=e[r];for(;r>0;){let i=r-1>>1,a=e[i];if(t(o,a)>=0)break;e[r]=a,r=i}e[r]=o}_down(r){let{data:e,compare:t}=this,o=this.length>>1,i=e[r];for(;r<o;){let a=(r<<1)+1,s=a+1;if(s<this.length&&t(e[s],e[a])<0&&(a=s),t(e[a],i)>=0)break;e[r]=e[a],r=a}e[r]=i}};function Sf(n,r,e=1,t=!1){let o=1/0,i=1/0,a=-1/0,s=-1/0;for(let[S,P]of n[0])S<o&&(o=S),P<i&&(i=P),S>a&&(a=S),P>s&&(s=P);let l=a-o,c=s-i,u=Math.max(e,Math.min(l,c));if(u===e){let S=[o,i];return S.distance=0,S.distance}let p=new xl([],(S,P)=>P.max-S.max),d=LI(n),f=new Ru(o+l/2,i+c/2,0,n);f.d>d.d&&(d=f);let h=2;function m(S,P,O){let v=new Ru(S,P,O,n);if(h++,v.max>d.d+e&&p.push(v),v.d>d.d&&(d=v,t&&console.log(`found best ${Math.round(1e4*v.d)/1e4} after ${h} probes`),d.d>r))return r}let y=u/2;for(let S=o;S<a;S+=u)for(let P=i;P<s;P+=u)m(S+y,P+y,y);for(;p.length;){let{max:S,x:P,y:O,h:v}=p.pop();if(S-d.d<=e)break;y=v/2,m(P-y,O-y,y),m(P+y,O-y,y),m(P-y,O+y,y),m(P+y,O+y,y)}t&&console.log(`num probes: ${h}
3
- best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Ru(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=RI(n,r,t),this.max=this.d+this.h*Math.SQRT2}function RI(n,r,e){let t=!1,o=1/0;for(let i of e)for(let a=0,s=i.length,l=s-1;a<s;l=a++){let c=i[a],u=i[l];c[1]>r!=u[1]>r&&n<(u[0]-c[0])*(r-c[1])/(u[1]-c[1])+c[0]&&(t=!t),o=Math.min(o,VI(n,r,c,u))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function LI(n){let r=0,e=0,t=0,o=n[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,t+=(c[1]+u[1])*p,r+=p*3}let i=new Ru(e/r,t/r,0,n);return r===0||i.d<0?new Ru(o[0][0],o[0][1],0,n):i}function VI(n,r,e,t){let o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){let l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}var bl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Pf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Cf={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},wf=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Gn=class extends so.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=We.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(M=>{let N=M.extractShapePointsToFlatArray([],i),_=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],k=N[B-0];_.push(V,k)}return _}),p=[],d=[];for(let M=0;M<c.length;M+=2)d.push([c[M],c[M+1]]);p.push(d);for(let M=0;M<u.length;M++){let N=u[M],_=[];for(let B=0;B<N.length;B+=2)_.push([N[B],N[B+1]]);p.push(_)}let f;e.isText?f=new so.Box2().setFromPoints(e.points.map(N=>N.position)).getSize(new so.Vector2).length()*.1:p[0].length===0?f=o:o>0?f=Sf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(a));let h;try{h=ao({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=bl}let m;try{m=ao({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Pf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let M=0;M<m.elements.length;M++){let N=m.elements[M],_=M%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let M=0;M<m.vertexIndices.length;M++){let N=m.vertexIndices[M],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let M=0;M<m.vertices.length;M++){let N=m.vertices[M];h.vertices.push(N)}}let b=1/0,S=-1/0,P=1/0,O=-1/0;for(let M=0,N=h.vertexCount;M<N;M++){let _=M*2,B=h.vertices[_+0],V=h.vertices[_+1];B<b&&(b=B),B>S&&(S=B),V<P&&(P=V),V>O&&(O=V)}this._minX=b,this._minY=P,this._width=S-b,this._height=O-P,this._buffer=new gl(this._computeBufferEstimatedSize(h));let v=[],A=[];for(let M=h.elementCount-1;M>=0;M--){let N=M>=y,_=M*2,B=h.elements[_+0],V=h.elements[_+1],k=B+V,L={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=k-1,j=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=h.vertices[F*2+0],Z=h.vertices[F*2+1],Q=h.vertices[W*2+0],$=h.vertices[W*2+1],ue=h.vertices[j*2+0],le=h.vertices[j*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let ye=Q-ue,fe=$-le,me=Math.sqrt(ye*ye+fe*fe);ye/=me,fe/=me,L.normals[te*2+0]=-fe,L.normals[te*2+1]=ye,L.concave[te]=ne*fe-ce*ye>0;let be=h.vertexIndices[W];if(Array.isArray(be))L.continuous[te]=!1;else{let[ge,C]=this._shape.getCurveIndexFromVertexId(be-1,!0);if(C>0&&C<1)L.continuous[te]=!0;else{let ie=C===1?ge+1:ge-1;ie=(ie+H)%H;let Ve=C===1?0:1,ke=this._shape.roundedCurves[ge].getTangent(C),ze=this._shape.roundedCurves[ie].getTangent(Ve);L.continuous[te]=ke.dot(ze)>.95}}N&&(L.normals[te*2+0]*=-1,L.normals[te*2+1]*=-1),[F,W,j]=[W,j,j+1],j>=k&&(j-=V)}while(j!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(B*2,k*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(B*2,k*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let ye=ae*2,fe=(ae-1+V)%V*2,me=h.vertices[L.start*2+ye+0],be=h.vertices[L.start*2+ye+1],ge=-L.normals[fe+0]*Z,C=-L.normals[fe+1]*Z,ie=-L.normals[ye+0]*Z,Ve=-L.normals[ye+1]*Z;if(L.concave[ae]||!L.concave[ae]&&N){let ke=Math.atan2(C,ge),ze=Math.atan2(Ve,ie);ze>ke&&(ze-=Math.PI*2);let Oe=ze-ke;if(L.continuous[ae]||N){let Lt=ke+Oe/2,De=Math.cos(Lt)*Z,_t=Math.sin(Lt)*Z;Q[2*ne+0]=me+De*(N?-1:1),Q[2*ne+1]=be+_t*(N?-1:1),le[ne]=ae,ne++}else{let Lt=Math.max(1,Math.floor(i/4*Math.abs(Oe)/Math.PI));for(let De=0;De<=Lt;De++){let _t=ke+Oe*(De/Lt),Vt=Math.cos(_t)*Z,ii=Math.sin(_t)*Z;Q[2*ne+0]=me+Vt,Q[2*ne+1]=be+ii,le[ne]=ae,ne++}}}else Q[2*ne+0]=me+ge,Q[2*ne+1]=be+C,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=me,Q[2*ne+1]=be,le[ne]=ae,ne++,Q[2*ne+0]=me+ie,Q[2*ne+1]=be+Ve,le[ne]=ae,ue[ae]=ne,ne++}let ce=ao({windingRule:We.POSITIVE,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,me=le[fe],be=le[(fe+1)%le.length];ae.idx=[me,be],ae.Sym.idx=[be,me]},vertexIdCallback:ae=>{let ye=ae.Lprev.idx;return[ye?ye[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[ye,fe]=ce.vertexIndices[ae];if(ye===fe)continue;let me=fe;fe<ye&&(me+=V);for(let be=ye;be<me;be++){let ge=be%V,C=(be+1)%V;if(!L.continuous[ge]||!L.continuous[C]){ce.vertexIndices[ae]=[ye,ge],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}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=v.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=L.concave.length,le=0,ne=wf(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=wf(le,V);let ce=K.boundary.vertexIndices.findIndex(ne),ae=Z.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ne(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let ye=le,fe=0,me=this._buildBevelVert(L,K,(ce-1+Q)%Q,void 0,fe),be=this._buildBevelVert(L,Z,(ae-1+$)%$,void 0,fe),ge=me,C=be,ie,Ve,ke=!1;do{fe=(le||ue)/ue,ne=wf(le,V);let ze=ee(K,ce,ne),Oe=ee(Z,ae,ne),Lt=ke;if(ke=!1,ze&&!Oe){for(let De=0;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),v.push(ge.topN,ie.topP,C.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,C.bottomN),ge=ie;ke=!0}else if(!ze&&Oe)for(let De=0;De<Oe;De++)Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(C.topN,ge.topP,Ve.topP),l===!1&&v.push(ge.bottomP,C.bottomN,Ve.bottomP),C=Ve;else if(ze&&Oe)if(ie=this._buildBevelVert(L,K,ce,0,fe),Ve=this._buildBevelVert(L,Z,ae,0,fe),Lt?(v.push(ge.topN,Ve.topP,C.topN),v.push(ge.topN,ie.topP,Ve.topP),l===!1&&(v.push(Ve.bottomP,ge.bottomN,C.bottomN),v.push(Ve.bottomP,ie.bottomP,ge.bottomN))):(v.push(C.topN,ge.topN,ie.topP),v.push(C.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,C.bottomN),v.push(ie.bottomP,C.bottomN,Ve.bottomP))),ge=ie,C=Ve,ze===Oe)for(let De=1;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(ge.topN,ie.topP,C.topN),v.push(C.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,C.bottomN),v.push(ie.bottomP,C.bottomN,Ve.bottomP)),ge=ie,C=Ve;else if(ze>Oe){let De=ze/Oe,_t=0;for(let Vt=1;Vt<ze;Vt++)ie=this._buildBevelVert(L,K,(ce+Vt)%Q,Vt/(ze-1),fe),v.push(ge.topN,ie.topP,C.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,C.bottomN),ge=ie,Vt>(_t+1)*De&&(_t++,Ve=this._buildBevelVert(L,Z,(ae+_t)%$,_t/(Oe-1),fe),v.push(C.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,C.bottomN,Ve.bottomP),C=Ve)}else{let De=Oe/ze,_t=0;for(let Vt=1;Vt<Oe;Vt++)Ve=this._buildBevelVert(L,Z,(ae+Vt)%$,Vt/(Oe-1),fe),v.push(C.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,C.bottomN,Ve.bottomP),C=Ve,Vt>(_t+1)*De&&(_t++,ie=this._buildBevelVert(L,K,(ce+_t)%Q,_t/(ze-1),fe),v.push(ge.topN,ie.topP,C.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,C.bottomN),ge=ie)}ce=(ce+ze)%Q,ae=(ae+Oe)%$,le=(le+1)%ue}while(le!==ye)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,L,v),N){let te=[];for(let K=v.length-1;K>=X+2;K-=3){let Z=v[K-2],Q=v[K-1],$=v[K-0];te.push($,Q,Z)}v.splice(X,v.length-X,...te)}if(N){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}A.push(te)}if(!N){let te=q[q.length-1],K;try{K=ao({windingRule:q.length>1?We.POSITIVE:We.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...A]})}catch{K=Cf}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],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);v.push(Q.top,$.top,ue.top),l===!1&&v.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let T=new so.BufferAttribute(Uint32Array.from(v),1),g=new so.BufferAttribute(this._buffer.positions,3),D=new so.BufferAttribute(this._buffer.normals,3),E=new so.BufferAttribute(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,T.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(T)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],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[i]=f,f}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.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]&&t.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,b=u*2,S=p*2,P=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],v=(1-m)*this._bevel,A=(P-this._minX)/this._width,T=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(A=a),T=1);let g=e.normals[b+0],D=e.normals[b+1],E=e.normals[S+0],M=e.normals[S+1];if(f){let k=E-g,L=M-D;g=g+k*(1-i),D=D+L*(1-i);let W=Math.sqrt(g*g+D*D);g/=W,D/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=N*3,B=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]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A),d||(this.forPathBevel?(N+=1,_+=3,B+=2):(N+=2,_+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=M*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=M*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A)),this.vertexCache[s]=V,V}clone(){let e=new Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var za=class extends vi.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=We.ODD;this.elementType=bt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,b=i[y+0],S=i[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&S!==p&&(c=!1),u=b,p=S,!l&&!c)break}if(!l&&!c)try{s=ao({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=bl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new vi.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new vi.BufferAttribute(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let O=0,v=d;O<v;O++){let A=O*2,T=s.vertices[A+0],g=s.vertices[A+1];T<h&&(h=T),T>m&&(m=T),g<y&&(y=g),g>b&&(b=g)}let S=m-h,P=b-y;for(let O=0,v=d;O<v;O++){let A=O*2,T=s.vertices[A+0],g=s.vertices[A+1],D=(T-h)/S,E=(g-y)/P;this._positionAttribute.setXYZ(O,T,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,E)}for(let O=0,v=f;O<v;O++){let A=O*3,T=s.elements[A+0],g=s.elements[A+1],D=s.elements[A+2];this._indexAttribute.setX(A+0,T),this._indexAttribute.setX(A+1,g),this._indexAttribute.setX(A+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 za(this._shape,this._curveSegments);return e.userData=qo(this.userData),e}};var Ga=class extends Gn{constructor(e,t,o=0,i=12,a=3,s=We.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Ga(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var br=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:We.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof $e?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new $e(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new $e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new za(n.shape,o,{windingRule:a}):s=new Ga(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var lo=require("three"),P0=Math.PI*2,ja=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=lo.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=zI(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let f;return o===0?(f=new lo.BufferGeometry,f.setAttribute("position",new lo.Float32BufferAttribute([],3))):f=br.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function zI(n,r,e,t,o,i){if(t>=P0)return o>30||o%4===0?(FI(n,r,e,i),Math.round(o/4)):w0(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=g0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?GI(n,a.x,a.y,c,o,r,e,i):w0(n,t,o,r,e,i)}function GI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(Fa(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],f=Fa(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),n.addPoint(f)}return s>0?C0(n,i,a,s):n.addPoint(Fa(0,0)),l}function w0(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(Fa(c,u))}return r<P0?i>0?C0(n,t,o,i):n.addPoint(Fa(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&O0(n,t,o,i)),1}function FI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Lu(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Lu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Lu(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Lu(o,i-e,o+s,i-e,o-s,i-e)),t>0&&O0(n,r,e,t)}function Fa(n,r){return new io(lo.MathUtils.generateUUID(),new lo.Vector2(n,r))}function Lu(n,r,e,t,o,i){let a=Fa(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function C0(n,r,e,t){A0(n,r,e,t).forEach(i=>n.addPoint(i))}function O0(n,r,e,t){let o=A0(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function A0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new lo.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=lo.MathUtils.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}var co=require("three"),T0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new vl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Of=new co.Uint32BufferAttribute([0,0,0],1),vl=class extends co.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=r&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new co.Vector3,m=new co.Vector3,y=h(),b=h(),S=h(),P,O,v,A,T,g,D,E,M=h(),N=h(),_=h(),B=h(),V=h(),k=h(),L=h(),W=h(),F=t-2*l+.001,j=F/a,H=Math.ceil(s*a),q=H+1,re=F/H,ee=-F/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,ye=Math.max(0,X*(q+ne)),[fe,me,be]=[3,3,2].map(yt=>Array(ye*yt).fill(0)),ge=[],C=i-l;function ie(yt,nt){let Zr=Math.PI/2;g=nt*re,E=2*Math.PI*(g%j)/j+Zr,g+=ee,D=Math.sin(E)*C,T=Math.cos(E)*C,r?yt.set(T,D,g):yt.set(T,g,D)}ie(m,-1e-10),ie(y,0),M.copy(m),ie(m,1);let Ve=m.distanceTo(y),ke=f?0:$+Q,ze=Ve*H+2*ke,Oe=Q,Lt=ze-ke;for(let yt=0;yt<=H;yt++){ie(b,yt),W.subVectors(b,M).normalize(),M.copy(b),k.copy(b).setComponent(+r+1,0).normalize(),L.crossVectors(W,k).normalize();let nt=yt===0,Zr=yt===H,rp=nt?3*Math.PI/2:K,op=nt?Oe:Lt,lc=nt?X:ae,ai=nt?0:ye-X,wt=W.clone().multiplyScalar(nt?-$:$).add(b),np=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Rr=0;Rr<X;Rr++){let Us=Rr*te;if(N.addVectors(m.copy(k).multiplyScalar(l*Math.cos(Us)),y.copy(L).multiplyScalar(l*Math.sin(Us))),_.copy(N).normalize(),nt||Zr){f||(ue=ai+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=wt.getComponent(ar),me[ue*3+ar]=np.getComponent(ar)}),be[ue*2]=+Zr,be[ue*2+1]=Rr/u),y.copy(_).multiplyScalar(Q),S.addVectors(b,y);for(let ar=0;ar<d;ar++){let si=ar*K+rp;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(si)),y.copy(_).multiplyScalar($*Math.cos(si))),V.copy(B).normalize(),y.addVectors(S,B),B.normalize(),ue=lc+ar*X+Rr,[0,1,2].forEach(Vi=>{fe[ue*3+Vi]=y.getComponent(Vi),me[ue*3+Vi]=V.getComponent(Vi)});let cc=+nt+Math.sin(si);be[ue*2]=(op+$*cc)/ze,be[ue*2+1]=Rr/u}}y.addVectors(b,N),ue=ce+yt*X+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=y.getComponent(ar),me[ue*3+ar]=_.getComponent(ar)}),be[ue*2]=(ke+yt*Ve)/ze,be[ue*2+1]=Rr/u}}let De=q+2*d+le,_t=1,[Vt,ii]=[+f,De-1];for(let yt=Vt;yt<=ii-1;yt++){let nt=f&&yt===ii-1;for(let Zr=0;Zr<X-1;Zr++)P=yt*X+Zr,O=P+1,v=(nt?Zr:P)+X,A=(nt?Zr+1:O)+X,yt===0?ge.push(O,A,v):yt===De-2?ge.push(P,O,v):ge.push(P,O,v,O,A,v)}this.setIndex(ge),this.setAttribute("position",new co.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new co.Float32BufferAttribute(me,3)),this.setAttribute("uv",new co.Float32BufferAttribute(be,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Of.array=o,Of.count=o.length,Of}};var I0=require("three");var M0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Sl(r*.5,i,a):new I0.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Sl=class extends Vn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Sl(r.radius,r.corner,r.cornerSides)}};var Vu=require("three"),E0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Vu.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Vu.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Eo=require("three");var rn=require("three");var pe=require("three"),Mo=new pe.Matrix4,Af=new pe.Object3D,zu=new pe.Vector3,Fn=class extends pe.EventDispatcher{constructor(){super(),this.uuid=pe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new pe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Mo.makeRotationX(r),this.applyMatrix4(Mo),this}rotateY(r){return Mo.makeRotationY(r),this.applyMatrix4(Mo),this}rotateZ(r){return Mo.makeRotationZ(r),this.applyMatrix4(Mo),this}translate(r,e,t){return Mo.makeTranslation(r,e,t),this.applyMatrix4(Mo),this}scale(r,e,t){return Mo.makeScale(r,e,t),this.applyMatrix4(Mo),this}lookAt(r){return Af.lookAt(r),Af.updateMatrix(),this.applyMatrix4(Af.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new pe.Vector3().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new pe.Color().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 pe.Vector3().fromBufferAttribute(a,d),new pe.Vector3().fromBufferAttribute(a,f),new pe.Vector3().fromBufferAttribute(a,h)],S=new ka(d,f,h,b,y,m);e.faces.push(S),l!==void 0&&e.faceVertexUvs[0].push([new pe.Vector2().fromBufferAttribute(l,d),new pe.Vector2().fromBufferAttribute(l,f),new pe.Vector2().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new pe.Vector2().fromBufferAttribute(c,d),new pe.Vector2().fromBufferAttribute(c,f),new pe.Vector2().fromBufferAttribute(c,h)])}let p=r.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)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(zu).negate(),this.translate(zu.x,zu.y,zu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new pe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new pe.Vector3,e=new pe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new pe.Vector3;if(r){let t=new pe.Vector3,o=new pe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new Fn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new pe.Vector3,u={a:new pe.Vector3,b:new pe.Vector3,c:new pe.Vector3};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new pe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new pe.Matrix3().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,S=h.vertexColors,P=new ka(h.a+i,h.b+i,h.c+i);P.normal.copy(h.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let O=0,v=b.length;O<v;O++)m=b[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),P.vertexNormals.push(m);P.color.copy(h.color);for(let O=0,v=S.length;O<v;O++)y=S[O],P.vertexColors.push(y.clone());P.materialIndex=h.materialIndex+t,l.push(P)}for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,O=b.length;P<O;P++)S.push(b[P].clone());this.faceVertexUvs[d].push(S)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new pe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(r[m]=h[m]);return r}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 t=[],o=[],i={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,S=this.faceVertexUvs[0][h]!==void 0,P=m.normal.length()>0,O=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,A=m.vertexColors.length>0,T=0;if(T=u(T,0,0),T=u(T,1,y),T=u(T,2,b),T=u(T,3,S),T=u(T,4,P),T=u(T,5,O),T=u(T,6,v),T=u(T,7,A),t.push(T),t.push(m.a,m.b,m.c),t.push(m.materialIndex),S){let g=this.faceVertexUvs[0][h];t.push(f(g[0]),f(g[1]),f(g[2]))}if(P&&t.push(p(m.normal)),O){let g=m.vertexNormals;t.push(p(g[0]),p(g[1]),p(g[2]))}if(v&&t.push(d(m.color)),A){let g=m.vertexColors;t.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 i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[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 r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new Fn().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,f=t.length;d<f;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,O=b.length;P<O;P++){let v=b[P];S.push(v.clone())}this.faceVertexUvs[d].push(S)}}let i=r.morphTargets;for(let d=0,f=i.length;d<f;d++){let h={};if(h.name=i[d].name,i[d].vertices!==void 0){h.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)h.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){h.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)h.normals.push(i[d].normals[m].clone())}this.morphTargets.push(h)}let a=r.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],S={};S.a=b.a.clone(),S.b=b.b.clone(),S.c=b.c.clone(),h.vertexNormals.push(S)}}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=r.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Tf().fromGeometry(this),e=new pe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Gu.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Gu.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",N0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",D0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",D0.call(new pe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new pe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,i.push(Gu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new pe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",_0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",_0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new pe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new pe.Float32BufferAttribute(t.vertices.length*3,3),i=new pe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Gu.call(o,t.vertices)),e.setAttribute("color",N0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",jI.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Fn.prototype.isGeometry=!0;var Tf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,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=r.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=r.skinIndices,h=r.skinWeights,m=f.length===t.length,y=h.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let S=e[b];this.vertices.push(t[S.a],t[S.b],t[S.c]);let P=S.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let v=S.normal;this.normals.push(v,v,v)}let O=S.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let v=S.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][b];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}if(a===!0){let v=o[1][b];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}for(let v=0;v<l;v++){let A=s[v].vertices;c[v].data.push(A[S.a],A[S.b],A[S.c])}for(let v=0;v<p;v++){let A=u[v].vertexNormals[b];d[v].data.push(A.a,A.b,A.c)}m&&this.skinIndices.push(f[S.a],f[S.b],f[S.c]),y&&this.skinWeights.push(h[S.a],h[S.b],h[S.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},ka=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new pe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new pe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function jI(n){return this.array.set(n),this}function N0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new pe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function D0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new pe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Gu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new pe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function _0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new pe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var kI=["a","b","c"];function UI(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function If(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Mf(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function HI(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],Mf(a.a,a.b,n,t,a,e),Mf(a.b,a.c,n,t,a,e),Mf(a.c,a.a,n,t,a,e)}function Fu(n,r,e,t,o){n.push(new ka(r,e,t,void 0,void 0,o))}function Ua(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function ju(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var ku=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof rn.BufferGeometry?r=new Fn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new rn.Vector3,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;HI(l,c,d,f);let h=[],m,y,b,S,P,O,v;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new rn.Vector3,P=3/8,O=1/8,v=y.faces.length,v!=2&&(P=.5,O=0,v!=1),b.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<v;a++){for(S=y.faces[a],s=0;s<3&&(m=l[UI(S,kI[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 A,T,g,D,E,M,N,_=[];for(o=0,i=l.length;o<i;o++){for(M=l[o],E=d[o].edges,t=E.length,t==3?A=3/16:t>3&&(A=3/(8*t)),T=1-t*Number(A),g=A,t<=2&&(t==2?(T=3/4,g=1/8):t==1||t==0),N=M.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<t;a++)D=E[a],m=D.a!==M?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let B=_.concat(h),V=_.length,k,L,W,F=[],j=[],H,q,re,ee,X=new rn.Vector2,te=new rn.Vector2,K=new rn.Vector2;for(o=0,i=c.length;o<i;o++)S=c[o],k=Number(If(S.a,S.b,f).newEdge)+V,L=Number(If(S.b,S.c,f).newEdge)+V,W=Number(If(S.c,S.a,f).newEdge)+V,Fu(F,k,L,W,S.materialIndex),Fu(F,S.a,k,W,S.materialIndex),Fu(F,S.b,L,k,S.materialIndex),Fu(F,S.c,W,L,S.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Ua(q.x,re.x),Ua(q.y,re.y)),te.set(Ua(re.x,ee.x),Ua(re.y,ee.y)),K.set(Ua(q.x,ee.x),Ua(q.y,ee.y)),ju(j,X,te,K),ju(j,q,X,K),ju(j,re,te,X),ju(j,ee,K,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=j)}};var Gt=new Eo.Vector3,B0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Gt),t={width:Gt.x,height:Gt.y,depth:Gt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Gt)):Gt.set(a.width,a.height,a.depth),(r!==Gt.x||e!==Gt.y||t!==Gt.z)&&i.scale(Gt.x===0?1:r/Gt.x,Gt.y===0?1:e/Gt.y,Gt.z===0?1:t/Gt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new ku(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Eo.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Gt);let a=100/Gt.x;Object.assign(i.parameters,{width:100,height:Gt.y*a,depth:Gt.z*a}),r(this.build(i))})}};var Uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,f=2*Math.PI/t;for(let m=0;m<t;m++){let y=f*m,b=p+Math.sin(y)*c,S=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,S))}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=br.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};var He=require("three"),R0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Nf(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function wl(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Ef(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function WI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Nf=class extends He.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,b=(t-2)*Math.PI/t,S=Math.PI-b,P=new He.Vector3(0,-f,0),O=new He.Vector3(0,f,0),v=new He.Vector2(r,-f),A=new He.Vector2(m,-f),T=new He.Vector2(0,O.y).sub(A),g=new He.Vector2(0,O.y).sub(v),D=new He.Vector2(T.y,-T.x).normalize(),E=new He.Vector2(g.y,-g.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,N);let _;{let j=new He.Vector3(D.x,D.y,0),H=new He.Vector3(Math.cos(y)*j.x,j.y,Math.sin(y)*j.x);_=j.angleTo(H)}let B=a/Math.tan((Math.PI-T.angle())/2),V=a/Math.tan((Math.PI-_)/2),k=new He.Vector3;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let j=d++,H=[],q=v.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+h,te=new He.Vector2(Math.sin(X),Math.cos(X));wl(q,te,k),c.push(k.x,k.y,k.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],j,H[(ee+1)%H.length])}let L=[];{let j=new He.Vector3,H=new He.Vector3,q=new He.Vector3,re=new He.Vector3,ee=new He.Vector3,X=new He.Vector3;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+h,Z=(te+.5)/t*Math.PI*2+h,Q=(te+1)/t*Math.PI*2+h,$=new He.Vector2(Math.sin(K),Math.cos(K)),ue=new He.Vector2(Math.sin(Z),Math.cos(Z)),le=new He.Vector2(Math.sin(Q),Math.cos(Q));wl(v,$,H),wl(v,le,q),wl(D,ue,j),Ef(O,H,q,V,V,re),c.push(re.x,re.y,re.z),Ef(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Ef(q,H,O,B,V,X),c.push(X.x,X.y,X.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let me=H.clone().add(q).multiplyScalar(.5),be=O.clone().sub(me).normalize(),C=P.clone().sub(me).normalize().add(be).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(me,ie,C,T.angle())}let ye,fe;{let me=new He.Vector3;wl(E,le,me);let be=X.clone().add(re).multiplyScalar(.5);be=WI(be,q,O);let ge=X.clone().sub(re);[ye,fe]=W(be,ge,me,_,re.y)}{let me=ye,be=me.clone().setY(0).normalize(),ge=new He.Vector3(0,-1,0),C=be.clone().cross(ge);F(me,be,ge,C)}L.concat(fe);{let me=T.angle(),be=Math.PI-me,ge=O.clone();ge.y-=a/Math.sin(me-Math.PI/2);let C=new He.Vector3,ie=[];for(let ke=0;ke<s;ke++){let ze=[],Oe=Math.PI/2-be*ke/s,Lt=Math.cos(Oe),De=Math.sin(Oe),_t=Z;for(let Vt=0;Vt<=ke;Vt++){let ii=Math.cos(_t),yt=Math.sin(_t);j.x=Lt*yt,j.y=De,j.z=Lt*ii,C.copy(ge).addScaledVector(j,a),c.push(C.x,C.y,C.z),u.push(j.x,j.y,j.z),p.push(0,0),ze.push(d++),_t+=Math.PI*2/ke/t}ie.push(ze)}fe.reverse(),ie.push(fe);let Ve=ie.length-1;for(let ke=0;ke<Ve;ke++){let ze=ie[ke],Oe=ie[ke+1],Lt=ze.length-1;l.push(Oe[1],ze[0],Oe[0]);for(let De=1;De<=Lt;De++)l.push(ze[De],ze[De-1],Oe[De]),l.push(Oe[De+1],ze[De],Oe[De])}}}}}this.setIndex(l),this.setAttribute("position",new He.Float32BufferAttribute(c,3)),this.setAttribute("normal",new He.Float32BufferAttribute(u,3)),this.setAttribute("uv",new He.Float32BufferAttribute(p,2));function W(j,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);j.addScaledVector(q,-a/Math.sin(te));let Z=new He.Vector3,Q=new He.Vector3,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let ye=ae/$-.5;if(Z.copy(j),Z.addScaledVector(H,ye),Z.addScaledVector(Q,a),ee!=null){let fe=Math.max(0,Z.y-ee);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 ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,ye=ae+($+1),fe=ye+1,me=ae+1;l.push(ae,ye,me),l.push(ye,fe,me)}return[j.clone().addScaledVector(H,.5),le]}function F(j,H,q,re){let ee=Math.PI/2,X=g.angle()-ee,te=[],K=new He.Vector3,Z=new He.Vector3;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*S,ye=Math.cos(ae),fe=Math.sin(ae),me=Math.atan(Math.tan(X)*ye),be=(ee+me)*le,ge=Math.cos(be),C=Math.sin(be);K.set(0,0,0),K.addScaledVector(H,C*ye),K.addScaledVector(q,ge),K.addScaledVector(re,C*fe),Z.copy(j).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var Ha=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,v,A){return v>e&&A>t?Math.min(O*e/v,O*t/A):v>e?O*e/v:A>t?O*t/A: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;r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,b)),r.addPoint(r.createPoint(h,b)),r.isClosed=!0;let S=!0;for(let O=0,v=r.points.length;O<v;O++)r.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(S=!1);S&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=br.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};var on=require("three"),L0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=on.MathUtils.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new on.BufferGeometry,u.setAttribute("position",new on.Float32BufferAttribute([],3))):u=new on.SphereGeometry(.5*r,o,i,a,s,l,c*on.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var V0=require("three"),z0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new V0.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var jn=require("three"),G0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Df(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Df=class extends jn.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new jn.Vector3(Z,Q,$),h=f(),m=f(),[y,b,S]=[e/2,r/2,t/2],P=-b,O=+b,[v,A,T]=[f(P,-y,+S),f(P,-y,-S),f(P,+y,-S)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));T.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-S,M=v.z-u;o<=d?(T.z=Math.min(E,M),T.z==M&&(T.y-=(E-M)/Math.tan(d-o))):A.z=Math.min(A.z-E-S,v.z-u),h.subVectors(v,A),m.subVectors(T,A);let N=Math.min(h.length(),m.length())*i/100,_=N*Math.tan(o/2),B=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(B).add(A);h.set(0,g(o,!0),D(o,!0)),p.push([T,h.clone()]);let k=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*k;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([v,f(0,1,0)]);let L=Math.sin(k/2)*_*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),j=p[W-1][0].distanceTo(p[W][0]),H=F+L*a+j;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(F+Z*L)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,O,q.y,q.z,O,q.y,q.z,P,X.y,X.z,O,X.y,X.z),l.push(0,re.y,re.z,0,te.y,te.z,0,re.y,re.z,0,re.y,re.z,0,te.y,te.z,0,te.y,te.z),c.push(0,ee,0,K,1,ee,1,ee,0,K,1,K),[q,re,ee]=[X,te,K];this.setAttribute("position",new jn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new jn.Float32BufferAttribute(l,3)),this.setAttribute("uv",new jn.Float32BufferAttribute(c,2))}};var Hu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*t/100,S=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let v=m*O,A=f+Math.sin(v)*p,T=h+Math.cos(v)*d;u.addPoint(u.createPoint(A,T))}}else for(let O=0;O<o;O++){let v=f+Math.cos(y)*p,A=h+Math.sin(y)*d;u.addPoint(u.createPoint(v,A)),y+=m,v=f+Math.cos(y)*b,A=h+Math.sin(y)*S,O<=o,u.addPoint(u.createPoint(v,A)),y+=m}u.isClosed=!0;for(let O=0,v=u.points.length;O<v;O++)u.points[O].roundness=i;u.roundness=i,u.update();let P=br.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};var F0=require("three"),j0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new F0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Wa=require("three");var k0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=qI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function qI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=Wa.MathUtils.clamp(o/360,0,1);if(p===0){let d=new Wa.BufferGeometry;return d.setAttribute("position",new Wa.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new vl(!0,n,r,e,t,p,i,a,s,l,c,u)}var U0=require("three"),H0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new U0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var W0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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=t;l.roundness=t,l.update();let p=br.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Ie=require("three");function q0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function $I(n){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(n.toLowerCase())}function YI(n,r,e){let t,o,i,a=Math.floor(n*6),s=n*6-a,l=e*(1-r),c=e*(1-s*r),u=e*(1-(1-s)*r);switch(a%6){case 0:t=e,o=u,i=l;break;case 1:t=c,o=e,i=l;break;case 2:t=l,o=e,i=u;break;case 3:t=l,o=c,i=e;break;case 4:t=u,o=l,i=e;break;case 5:default:t=e,o=l,i=c;break}return{r:t*255,g:o*255,b:i*255}}function XI(n,r,e){n/=255,r/=255,e/=255;let t=Math.max(n,r,e),o=Math.min(n,r,e),i=t,a=t-o,s=t==0?0:a/t,l;if(t==o)l=0;else{switch(t){case n:l=(r-e)/a+(r<e?6:0);break;case r:l=(e-n)/a+2;break;case e:default:l=(n-r)/a+4;break}l/=6}return{h:l,s,v:i}}function KI(n){return n=Math.floor(n),{r:n>>16&255,g:n>>8&255,b:n&255}}function QI(n,r,e){return(n<<16)+(r<<8)+e}function ZI(n,r,e){return n=Math.round(n),r=Math.round(r),e=Math.round(e),"#"+[n,r,e].map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function JI(n){let r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(r,(t,o,i,a)=>String(o+o+i+i+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var $0={parseRgba:$I,hsvToRgb:YI,rgbToHsv:XI,hexToRgb:KI,rgbToHex:QI,rgbToHexString:ZI,hexStringToRgb:JI};function nn(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var Wu=class{constructor(r,e,t){this.id=r;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(r=>r());this.emitter=nn();this._innerCallUserAPI=async r=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await nM(this.userAPI,r),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let t=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=t,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(t)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=jc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?jc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(r){await this.callUserAPI(r)}async callUserAPI(r){await this._debouncedCallUserAPI(r)}update(r,e,t=!0){this.userAPI=r,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&t&&this._debouncedPrefetch(e)}retrieveValue(r){if(this.result)try{return ct.zoom(this.result,r)}catch(e){console.error(e)}}retrieveZoomedKeyValues(r){if(this.result){let e=r&&r.length?ct.zoom(this.result,r):this.result;if(oM(e))return Object.entries(e);if(rM(e))return e.map((t,o)=>[o.toString(),t]);throw tM(e)?new Error("This path points to a value, use retrieveValue() instead. "+r?.join(".")):new Error("Path error"+r?.join("."))}}dispose(){}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}get autostart(){return this.userAPI.autoStart}};function eM(n){let r=new Headers;return n.headers.forEach(e=>{e.data.key!==""&&r.append(e.data.key,e.data.value)}),r}function tM(n){return typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null}function rM(n){return Array.isArray(n)}function oM(n){return typeof n=="object"&&n!==null}async function nM(n,r,e=new AbortController){let t,o=n.url,i=n.proxy?.enabled??!1,a;if(n.integration?.type==="OpenAI"){let l=Pl(n.integration.prompt===""?[]:JSON.parse(n.integration.prompt),r),c=n.integration.behavior===""?[]:Pl(JSON.parse(n.integration.behavior),r);a=`{
1
+ "use strict";var b1=Object.create;var Hs=Object.defineProperty;var v1=Object.getOwnPropertyDescriptor;var S1=Object.getOwnPropertyNames;var w1=Object.getPrototypeOf,P1=Object.prototype.hasOwnProperty;var C1=(n,r,e)=>r in n?Hs(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Ws=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Kh=(n,r)=>{for(var e in r)Hs(n,e,{get:r[e],enumerable:!0})},Qh=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of S1(r))!P1.call(n,o)&&o!==e&&Hs(n,o,{get:()=>r[o],enumerable:!(t=v1(r,o))||t.enumerable});return n};var qs=(n,r,e)=>(e=n!=null?b1(w1(n)):{},Qh(r||!n||!n.__esModule?Hs(e,"default",{value:n,enumerable:!0}):e,n)),O1=n=>Qh(Hs({},"__esModule",{value:!0}),n);var go=(n,r,e)=>(C1(n,typeof r!="symbol"?r+"":r,e),e);var zx=Ws((ef,Vx)=>{(function(n,r){typeof ef=="object"?Vx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(ef,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=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[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Wx=Ws((Mu,Hx)=>{(function(n,r){typeof Mu=="object"&&typeof Hx<"u"?r(Mu):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Mu,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,f,h,m,y,b,S=r[0].length,P=r.length;if(P<S)throw new TypeError("Invalid matrix: m < n");for(var C=[],v=[],A=[],T=e==="f"?P:S,g=m=d=0;g<P;g++)v[g]=new Array(T).fill(0);for(g=0;g<S;g++)A[g]=new Array(S).fill(0);var D,E=new Array(S).fill(0);for(g=0;g<P;g++)for(a=0;a<S;a++)v[g][a]=r[g][a];for(g=0;g<S;g++){for(C[g]=d,h=0,l=g+1,a=g;a<P;a++)h+=Math.pow(v[a][g],2);if(h<i)d=0;else for(f=(p=v[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g]=p-d,a=l;a<S;a++){for(h=0,s=g;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(E[g]=d,h=0,a=l;a<S;a++)h+=Math.pow(v[g][a],2);if(h<i)d=0;else{for(f=(p=v[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g+1]=p-d,a=l;a<S;a++)C[a]=v[g][a]/f;for(a=l;a<P;a++){for(h=0,s=l;s<S;s++)h+=v[a][s]*v[g][s];for(s=l;s<S;s++)v[a][s]=v[a][s]+h*C[s]}}m<(y=Math.abs(E[g])+Math.abs(C[g]))&&(m=y)}if(t)for(g=S-1;0<=g;g--){if(d!==0){for(f=v[g][g+1]*d,a=l;a<S;a++)A[a][g]=v[g][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<S;s++)h+=v[g][s]*A[s][a];for(s=l;s<S;s++)A[s][a]=A[s][a]+h*A[s][g]}}for(a=l;a<S;a++)A[g][a]=0,A[a][g]=0;A[g][g]=1,d=C[g],l=g}if(e){if(e==="f")for(g=S;g<P;g++){for(a=S;a<P;a++)v[g][a]=0;v[g][g]=1}for(g=S-1;0<=g;g--){for(l=g+1,d=E[g],a=l;a<T;a++)v[g][a]=0;if(d!==0){for(f=v[g][g]*d,a=l;a<T;a++){for(h=0,s=l;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(a=g;a<P;a++)v[a][g]=v[a][g]/d}else for(a=g;a<P;a++)v[a][g]=0;v[g][g]=v[g][g]+1}}for(o*=m,s=S-1;0<=s;s--)for(var M=0;M<50;M++){for(D=!1,l=s;0<=l;l--){if(Math.abs(C[l])<=o){D=!0;break}if(Math.abs(E[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(p=h*C[g],C[g]=u*C[g],!(Math.abs(p)<=o));g++)if(d=E[g],E[g]=Math.sqrt(p*p+d*d),u=d/(f=E[g]),h=-p/f,e)for(a=0;a<P;a++)y=v[a][c],b=v[a][g],v[a][c]=y*u+b*h,v[a][g]=-y*h+b*u}if(b=E[s],l===s){if(b<0&&(E[s]=-b,t))for(a=0;a<S;a++)A[a][s]=-A[a][s];break}for(m=E[l],p=(((y=E[s-1])-b)*(y+b)+((d=C[s-1])-(f=C[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=C[g],y=E[g],f=h*d,d*=u,b=Math.sqrt(p*p+f*f),p=m*(u=p/(C[g-1]=b))+d*(h=f/b),d=-m*h+d*u,f=y*h,y*=u,t)for(a=0;a<S;a++)m=A[a][g-1],b=A[a][g],A[a][g-1]=m*u+b*h,A[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(E[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<P;a++)y=v[a][g-1],b=v[a][g],v[a][g-1]=y*u+b*h,v[a][g]=-y*h+b*u}C[l]=0,C[s]=p,E[s]=m}for(g=0;g<S;g++)E[g]<o&&(E[g]=0);return{u:v,q:E,v:A}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Wv=Ws((kre,Hv)=>{"use strict";function kE(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Bi(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bi)}kE(Bi,Error);Bi.buildMessage=function(n,r){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?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(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 t(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(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(n)+" but "+l(r)+" found."};function UE(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Us},o=Us,i=function(x){if(!x)return[];for(var w=[],R=0;R<x.length;R++)w=w.concat.apply(w,x[R]);var I=w[0];return I&&I.code=="m"&&(delete I.relative,I.code="M"),w},a=function(x,w){return x1(x,w)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(x,w,R){var I=Gi(x,[w]);return R&&(I=I.concat(Gi(x=="M"?"L":"l",R[1]))),I},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Gi("Z")},f=/^[Ll]/,h=nt(["L","l"],!1,!1),m=function(x,w){return Gi(x,w)},y=/^[Hh]/,b=nt(["H","h"],!1,!1),S=function(x,w){return Gi(x,w.map(function(R){return{x:R}}))},P=/^[Vv]/,C=nt(["V","v"],!1,!1),v=function(x,w){return Gi(x,w.map(function(R){return{y:R}}))},A=/^[Cc]/,T=nt(["C","c"],!1,!1),g=function(x,w,R){return{x1:x.x,y1:x.y,x2:w.x,y2:w.y,x:R.x,y:R.y}},D=/^[Ss]/,E=nt(["S","s"],!1,!1),M=function(x,w){return{x2:x.x,y2:x.y,x:w.x,y:w.y}},N=/^[Qq]/,_=nt(["Q","q"],!1,!1),B=function(x,w){return{x1:x.x,y1:x.y,x:w.x,y:w.y}},V=/^[Tt]/,k=nt(["T","t"],!1,!1),L=/^[Aa]/,W=nt(["A","a"],!1,!1),F=function(x,w,R,I,z,oe){return{rx:x,ry:w,xAxisRotation:R,largeArc:I,sweep:z,x:oe.x,y:oe.y}},j=function(x,w){return{x,y:w}},H=function(x){return x*1},q=function(x){return x.join("")*1},re=/^[01]/,ee=nt(["0","1"],!1,!1),X=function(x){return x=="1"},te=function(){return""},K=",",Z=yt(",",!1),Q=function(x){return x.join("")},$=".",ue=yt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),ye=/^[0-9]/,fe=nt([["0","9"]],!1,!1),me=function(x){return x.join("")},be=/^[ \t\n\r]/,ge=nt([" "," ",`
2
+ `,"\r"],!1,!1),O=0,ie=0,Ve=[{line:1,column:1}],ke=0,ze=[],Oe=0,Lt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function De(){return n.substring(ie,O)}function _t(){return ai(ie,O)}function Vt(x,w){throw w=w!==void 0?w:ai(ie,O),Rr([rp(x)],n.substring(ie,O),w)}function ii(x,w){throw w=w!==void 0?w:ai(ie,O),op(x,w)}function yt(x,w){return{type:"literal",text:x,ignoreCase:w}}function nt(x,w,R){return{type:"class",parts:x,inverted:w,ignoreCase:R}}function Zr(){return{type:"any"}}function tp(){return{type:"end"}}function rp(x){return{type:"other",description:x}}function sc(x){var w=Ve[x],R;if(w)return w;for(R=x-1;!Ve[R];)R--;for(w=Ve[R],w={line:w.line,column:w.column};R<x;)n.charCodeAt(R)===10?(w.line++,w.column=1):w.column++,R++;return Ve[x]=w,w}function ai(x,w){var R=sc(x),I=sc(w);return{start:{offset:x,line:R.line,column:R.column},end:{offset:w,line:I.line,column:I.column}}}function wt(x){O<ke||(O>ke&&(ke=O,ze=[]),ze.push(x))}function op(x,w){return new Bi(x,null,null,w)}function Rr(x,w,R){return new Bi(Bi.buildMessage(x,w),x,w,R)}function Us(){var x,w,R,I,z;for(x=O,w=[],R=Ue();R!==e;)w.push(R),R=Ue();if(w!==e)if(R=ar(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(ie=x,w=i(R),x=w):(O=x,x=e)}else O=x,x=e;else O=x,x=e;return x}function ar(){var x,w,R,I,z,oe;if(x=O,w=si(),w!==e){for(R=[],I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;){for(R.push(I),I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function si(){var x,w,R,I,z,oe;if(x=O,w=Vi(),w!==e){for(R=[],I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=lc(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;){for(R.push(I),I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=lc(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function lc(){var x;return x=o1(),x===e&&(x=n1(),x===e&&(x=i1(),x===e&&(x=a1(),x===e&&(x=s1(),x===e&&(x=c1(),x===e&&(x=d1(),x===e&&(x=f1(),x===e&&(x=m1())))))))),x}function Vi(){var x,w,R,I,z,oe,Fi;if(x=O,s.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(l)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=cr(),I!==e?(z=O,oe=pt(),oe===e&&(oe=null),oe!==e?(Fi=kh(),Fi!==e?(oe=[oe,Fi],z=oe):(O=z,z=e)):(O=z,z=e),z===e&&(z=null),z!==e?(ie=x,w=c(w,I,z),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function o1(){var x,w;return x=O,u.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(p)),w!==e&&(ie=x,w=d()),x=w,x}function n1(){var x,w,R,I;if(x=O,f.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(h)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=kh(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function kh(){var x,w,R,I,z,oe;if(x=O,w=cr(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function i1(){var x,w,R,I;if(x=O,y.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(b)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Uh(),I!==e?(ie=x,w=S(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function Uh(){var x,w,R,I,z,oe;if(x=O,w=zi(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function a1(){var x,w,R,I;if(x=O,P.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(C)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Uh(),I!==e?(ie=x,w=v(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function s1(){var x,w,R,I;if(x=O,A.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(T)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=l1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function l1(){var x,w,R,I,z,oe;if(x=O,w=np(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=np(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=np(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function np(){var x,w,R,I,z,oe;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(ie=x,w=g(w,I,oe),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function c1(){var x,w,R,I;if(x=O,D.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(E)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=u1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function u1(){var x,w,R,I,z,oe;if(x=O,w=ip(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function ip(){var x,w,R,I;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=M(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function d1(){var x,w,R,I;if(x=O,N.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(_)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=p1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function p1(){var x,w,R,I,z,oe;if(x=O,w=ap(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function ap(){var x,w,R,I;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=B(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function f1(){var x,w,R,I;if(x=O,V.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(k)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=h1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function h1(){var x,w,R,I,z,oe;if(x=O,w=cr(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function m1(){var x,w,R,I;if(x=O,L.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(W)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=y1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function y1(){var x,w,R,I,z,oe;if(x=O,w=sp(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function sp(){var x,w,R,I,z,oe,Fi,cp,uc,up,dc,dp;return x=O,w=Hh(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=Hh(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(Fi=pt(),Fi!==e?(cp=Wh(),cp!==e?(uc=pt(),uc===e&&(uc=null),uc!==e?(up=Wh(),up!==e?(dc=pt(),dc===e&&(dc=null),dc!==e?(dp=cr(),dp!==e?(ie=x,w=F(w,I,oe,cp,up,dp),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function cr(){var x,w,R,I;return x=O,w=zi(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=zi(),I!==e?(ie=x,w=j(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function Hh(){var x,w;return x=O,w=$h(),w===e&&(w=li()),w!==e&&(ie=x,w=H(w)),x=w,x}function zi(){var x,w,R,I;return x=O,w=O,R=lp(),R===e&&(R=null),R!==e?(I=$h(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=lp(),R===e&&(R=null),R!==e?(I=li(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=q(w)),x=w,x}function Wh(){var x,w;return x=O,re.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(ee)),w!==e&&(ie=x,w=X(w)),x=w,x}function pt(){var x,w,R,I,z;if(x=O,w=[],R=Ue(),R!==e)for(;R!==e;)w.push(R),R=Ue();else w=e;if(w!==e)if(R=qh(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(w=[w,R,I],x=w):(O=x,x=e)}else O=x,x=e;else O=x,x=e;if(x===e){if(x=O,w=O,R=qh(),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(R=[R,I],w=R):(O=w,w=e)}else O=w,w=e;w!==e&&(ie=x,w=te()),x=w}return x}function qh(){var x;return n.charCodeAt(O)===44?(x=K,O++):(x=e,Oe===0&&wt(Z)),x}function $h(){var x,w,R,I;return x=O,w=O,R=g1(),R!==e?(I=Yh(),I===e&&(I=null),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=li(),R!==e?(I=Yh(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function g1(){var x,w,R,I,z;return x=O,w=O,R=li(),R===e&&(R=null),R!==e?(n.charCodeAt(O)===46?(I=$,O++):(I=e,Oe===0&&wt(ue)),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(O=w,w=e)):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=li(),R!==e?(n.charCodeAt(O)===46?(I=$,O++):(I=e,Oe===0&&wt(ue)),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function Yh(){var x,w,R,I,z;return x=O,w=O,le.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(ne)),R!==e?(I=lp(),I===e&&(I=null),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(O=w,w=e)):(O=w,w=e)):(O=w,w=e),w!==e&&(ie=x,w=Q(w)),x=w,x}function lp(){var x;return ce.test(n.charAt(O))?(x=n.charAt(O),O++):(x=e,Oe===0&&wt(ae)),x}function li(){var x,w,R;if(x=O,w=[],ye.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(fe)),R!==e)for(;R!==e;)w.push(R),ye.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(fe));else w=e;return w!==e&&(ie=x,w=me(w)),x=w,x}function Ue(){var x,w;return x=O,be.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(ge)),w!==e&&(ie=x,w=te()),x=w,x}function x1(x,w){if(!w)return[x];for(var R=[x],I=0,z=w.length;I<z;I++)R[I+1]=w[I][1];return R}var cc={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 Xh in cc)cc[Xh.toUpperCase()]=cc[Xh];function Gi(x,w){w||(w=[{}]);for(var R=w.length;R--;){var I={code:x,command:cc[x]};x==x.toLowerCase()&&(I.relative=!0);for(var z in w[R])I[z]=w[R][z];w[R]=I}return w}if(Lt=o(),Lt!==e&&O===n.length)return Lt;throw Lt!==e&&O<n.length&&wt(tp()),Rr(ze,ke<n.length?n.charAt(ke):null,ke<n.length?ai(ke,ke+1):ai(ke,ke))}Hv.exports={SyntaxError:Bi,parse:UE}});var Th=Ws((Ure,qv)=>{var Vd=Wv().parse;Vd.parseSVG=Vd;Vd.makeAbsolute=HE;qv.exports=Vd;function HE(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var e1=Ws((fce,JS)=>{JS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var xN={};Kh(xN,{default:()=>Jd});module.exports=O1(xN);var ep=require("three");function pc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function fc(n){return Array.isArray(n)?n:[n]}function hc(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var A1=typeof global=="object"&&global&&global.Object===Object&&global,mc=A1;var T1=typeof self=="object"&&self&&self.Object===Object&&self,I1=mc||T1||Function("return this")(),Pt=I1;var M1=Pt.Symbol,Wt=M1;var Zh=Object.prototype,E1=Zh.hasOwnProperty,N1=Zh.toString,$s=Wt?Wt.toStringTag:void 0;function D1(n){var r=E1.call(n,$s),e=n[$s];try{n[$s]=void 0;var t=!0}catch{}var o=N1.call(n);return t&&(r?n[$s]=e:delete n[$s]),o}var Jh=D1;var _1=Object.prototype,B1=_1.toString;function R1(n){return B1.call(n)}var em=R1;var L1="[object Null]",V1="[object Undefined]",tm=Wt?Wt.toStringTag:void 0;function z1(n){return n==null?n===void 0?V1:L1:tm&&tm in Object(n)?Jh(n):em(n)}var Ir=z1;function G1(n){return n!=null&&typeof n=="object"}var er=G1;var F1="[object Symbol]";function j1(n){return typeof n=="symbol"||er(n)&&Ir(n)==F1}var gn=j1;function k1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var yc=k1;var U1=Array.isArray,Ct=U1;var H1=1/0,rm=Wt?Wt.prototype:void 0,om=rm?rm.toString:void 0;function nm(n){if(typeof n=="string")return n;if(Ct(n))return yc(n,nm)+"";if(gn(n))return om?om.call(n):"";var r=n+"";return r=="0"&&1/n==-H1?"-0":r}var im=nm;var W1=/\s/;function q1(n){for(var r=n.length;r--&&W1.test(n.charAt(r)););return r}var am=q1;var $1=/^\s+/;function Y1(n){return n&&n.slice(0,am(n)+1).replace($1,"")}var sm=Y1;function X1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var qt=X1;var lm=0/0,K1=/^[-+]0x[0-9a-f]+$/i,Q1=/^0b[01]+$/i,Z1=/^0o[0-7]+$/i,J1=parseInt;function ew(n){if(typeof n=="number")return n;if(gn(n))return lm;if(qt(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=qt(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=sm(n);var e=Q1.test(n);return e||Z1.test(n)?J1(n.slice(2),e?2:8):K1.test(n)?lm:+n}var pp=ew;function tw(n){return n}var cm=tw;var rw="[object AsyncFunction]",ow="[object Function]",nw="[object GeneratorFunction]",iw="[object Proxy]";function aw(n){if(!qt(n))return!1;var r=Ir(n);return r==ow||r==nw||r==rw||r==iw}var gc=aw;var sw=Pt["__core-js_shared__"],xc=sw;var um=function(){var n=/[^.]+$/.exec(xc&&xc.keys&&xc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function lw(n){return!!um&&um in n}var dm=lw;var cw=Function.prototype,uw=cw.toString;function dw(n){if(n!=null){try{return uw.call(n)}catch{}try{return n+""}catch{}}return""}var ko=dw;var pw=/[\\^$.*+?()[\]{}|]/g,fw=/^\[object .+?Constructor\]$/,hw=Function.prototype,mw=Object.prototype,yw=hw.toString,gw=mw.hasOwnProperty,xw=RegExp("^"+yw.call(gw).replace(pw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function bw(n){if(!qt(n)||dm(n))return!1;var r=gc(n)?xw:fw;return r.test(ko(n))}var pm=bw;function vw(n,r){return n?.[r]}var fm=vw;function Sw(n,r){var e=fm(n,r);return pm(e)?e:void 0}var yr=Sw;var ww=yr(Pt,"WeakMap"),bc=ww;var hm=Object.create,Pw=function(){function n(){}return function(r){if(!qt(r))return{};if(hm)return hm(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),mm=Pw;function Cw(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var ym=Cw;function Ow(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var gm=Ow;var Aw=800,Tw=16,Iw=Date.now;function Mw(n){var r=0,e=0;return function(){var t=Iw(),o=Tw-(t-e);if(e=t,o>0){if(++r>=Aw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var xm=Mw;function Ew(n){return function(){return n}}var bm=Ew;var Nw=function(){try{var n=yr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ji=Nw;var Dw=ji?function(n,r){return ji(n,"toString",{configurable:!0,enumerable:!1,value:bm(r),writable:!0})}:cm,vm=Dw;var _w=xm(vm),Sm=_w;function Bw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var wm=Bw;var Rw=9007199254740991,Lw=/^(?:0|[1-9]\d*)$/;function Vw(n,r){var e=typeof n;return r=r??Rw,!!r&&(e=="number"||e!="symbol"&&Lw.test(n))&&n>-1&&n%1==0&&n<r}var ki=Vw;function zw(n,r,e){r=="__proto__"&&ji?ji(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var vc=zw;function Gw(n,r){return n===r||n!==n&&r!==r}var Ui=Gw;var Fw=Object.prototype,jw=Fw.hasOwnProperty;function kw(n,r,e){var t=n[r];(!(jw.call(n,r)&&Ui(t,e))||e===void 0&&!(r in n))&&vc(n,r,e)}var Hi=kw;function Uw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?vc(e,s,l):Hi(e,s,l)}return e}var xo=Uw;var Pm=Math.max;function Hw(n,r,e){return r=Pm(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Pm(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),ym(n,this,s)}}var Cm=Hw;var Ww=9007199254740991;function qw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Ww}var Wi=qw;function $w(n){return n!=null&&Wi(n.length)&&!gc(n)}var Sc=$w;var Yw=Object.prototype;function Xw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Yw;return n===e}var qi=Xw;function Kw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Om=Kw;var Qw="[object Arguments]";function Zw(n){return er(n)&&Ir(n)==Qw}var fp=Zw;var Am=Object.prototype,Jw=Am.hasOwnProperty,e2=Am.propertyIsEnumerable,t2=fp(function(){return arguments}())?fp:function(n){return er(n)&&Jw.call(n,"callee")&&!e2.call(n,"callee")},$i=t2;function r2(){return!1}var Tm=r2;var Em=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Im=Em&&typeof module=="object"&&module&&!module.nodeType&&module,o2=Im&&Im.exports===Em,Mm=o2?Pt.Buffer:void 0,n2=Mm?Mm.isBuffer:void 0,i2=n2||Tm,ci=i2;var a2="[object Arguments]",s2="[object Array]",l2="[object Boolean]",c2="[object Date]",u2="[object Error]",d2="[object Function]",p2="[object Map]",f2="[object Number]",h2="[object Object]",m2="[object RegExp]",y2="[object Set]",g2="[object String]",x2="[object WeakMap]",b2="[object ArrayBuffer]",v2="[object DataView]",S2="[object Float32Array]",w2="[object Float64Array]",P2="[object Int8Array]",C2="[object Int16Array]",O2="[object Int32Array]",A2="[object Uint8Array]",T2="[object Uint8ClampedArray]",I2="[object Uint16Array]",M2="[object Uint32Array]",ft={};ft[S2]=ft[w2]=ft[P2]=ft[C2]=ft[O2]=ft[A2]=ft[T2]=ft[I2]=ft[M2]=!0;ft[a2]=ft[s2]=ft[b2]=ft[l2]=ft[v2]=ft[c2]=ft[u2]=ft[d2]=ft[p2]=ft[f2]=ft[h2]=ft[m2]=ft[y2]=ft[g2]=ft[x2]=!1;function E2(n){return er(n)&&Wi(n.length)&&!!ft[Ir(n)]}var Nm=E2;function N2(n){return function(r){return n(r)}}var Yi=N2;var Dm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ys=Dm&&typeof module=="object"&&module&&!module.nodeType&&module,D2=Ys&&Ys.exports===Dm,hp=D2&&mc.process,_2=function(){try{var n=Ys&&Ys.require&&Ys.require("util").types;return n||hp&&hp.binding&&hp.binding("util")}catch{}}(),Uo=_2;var _m=Uo&&Uo.isTypedArray,B2=_m?Yi(_m):Nm,wc=B2;var R2=Object.prototype,L2=R2.hasOwnProperty;function V2(n,r){var e=Ct(n),t=!e&&$i(n),o=!e&&!t&&ci(n),i=!e&&!t&&!o&&wc(n),a=e||t||o||i,s=a?Om(n.length,String):[],l=s.length;for(var c in n)(r||L2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||ki(c,l)))&&s.push(c);return s}var Pc=V2;function z2(n,r){return function(e){return n(r(e))}}var Cc=z2;var G2=Cc(Object.keys,Object),Bm=G2;var F2=Object.prototype,j2=F2.hasOwnProperty;function k2(n){if(!qi(n))return Bm(n);var r=[];for(var e in Object(n))j2.call(n,e)&&e!="constructor"&&r.push(e);return r}var Rm=k2;function U2(n){return Sc(n)?Pc(n):Rm(n)}var Xi=U2;function H2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Lm=H2;var W2=Object.prototype,q2=W2.hasOwnProperty;function $2(n){if(!qt(n))return Lm(n);var r=qi(n),e=[];for(var t in n)t=="constructor"&&(r||!q2.call(n,t))||e.push(t);return e}var Vm=$2;function Y2(n){return Sc(n)?Pc(n,!0):Vm(n)}var Ki=Y2;var X2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,K2=/^\w*$/;function Q2(n,r){if(Ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||gn(n)?!0:K2.test(n)||!X2.test(n)||r!=null&&n in Object(r)}var zm=Q2;var Z2=yr(Object,"create"),Ho=Z2;function J2(){this.__data__=Ho?Ho(null):{},this.size=0}var Gm=J2;function eP(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Fm=eP;var tP="__lodash_hash_undefined__",rP=Object.prototype,oP=rP.hasOwnProperty;function nP(n){var r=this.__data__;if(Ho){var e=r[n];return e===tP?void 0:e}return oP.call(r,n)?r[n]:void 0}var jm=nP;var iP=Object.prototype,aP=iP.hasOwnProperty;function sP(n){var r=this.__data__;return Ho?r[n]!==void 0:aP.call(r,n)}var km=sP;var lP="__lodash_hash_undefined__";function cP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ho&&r===void 0?lP:r,this}var Um=cP;function Qi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Qi.prototype.clear=Gm;Qi.prototype.delete=Fm;Qi.prototype.get=jm;Qi.prototype.has=km;Qi.prototype.set=Um;var mp=Qi;function uP(){this.__data__=[],this.size=0}var Hm=uP;function dP(n,r){for(var e=n.length;e--;)if(Ui(n[e][0],r))return e;return-1}var xn=dP;var pP=Array.prototype,fP=pP.splice;function hP(n){var r=this.__data__,e=xn(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():fP.call(r,e,1),--this.size,!0}var Wm=hP;function mP(n){var r=this.__data__,e=xn(r,n);return e<0?void 0:r[e][1]}var qm=mP;function yP(n){return xn(this.__data__,n)>-1}var $m=yP;function gP(n,r){var e=this.__data__,t=xn(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Ym=gP;function Zi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Zi.prototype.clear=Hm;Zi.prototype.delete=Wm;Zi.prototype.get=qm;Zi.prototype.has=$m;Zi.prototype.set=Ym;var bn=Zi;var xP=yr(Pt,"Map"),vn=xP;function bP(){this.size=0,this.__data__={hash:new mp,map:new(vn||bn),string:new mp}}var Xm=bP;function vP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Km=vP;function SP(n,r){var e=n.__data__;return Km(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Sn=SP;function wP(n){var r=Sn(this,n).delete(n);return this.size-=r?1:0,r}var Qm=wP;function PP(n){return Sn(this,n).get(n)}var Zm=PP;function CP(n){return Sn(this,n).has(n)}var Jm=CP;function OP(n,r){var e=Sn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var ey=OP;function Ji(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ji.prototype.clear=Xm;Ji.prototype.delete=Qm;Ji.prototype.get=Zm;Ji.prototype.has=Jm;Ji.prototype.set=ey;var ui=Ji;var AP="Expected a function";function yp(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(AP);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(yp.Cache||ui),e}yp.Cache=ui;var ty=yp;var TP=500;function IP(n){var r=ty(n,function(t){return e.size===TP&&e.clear(),t}),e=r.cache;return r}var ry=IP;var MP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,EP=/\\(\\)?/g,NP=ry(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(MP,function(e,t,o,i){r.push(o?i.replace(EP,"$1"):t||e)}),r}),oy=NP;function DP(n){return n==null?"":im(n)}var ny=DP;function _P(n,r){return Ct(n)?n:zm(n,r)?[n]:oy(ny(n))}var Lr=_P;var BP=1/0;function RP(n){if(typeof n=="string"||gn(n))return n;var r=n+"";return r=="0"&&1/n==-BP?"-0":r}var wn=RP;function LP(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[wn(r[e++])];return e&&e==t?n:void 0}var Oc=LP;function VP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ea=VP;var iy=Wt?Wt.isConcatSpreadable:void 0;function zP(n){return Ct(n)||$i(n)||!!(iy&&n&&n[iy])}var ay=zP;function sy(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=ay),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?sy(s,r-1,e,t,o):ea(o,s):t||(o[o.length]=s)}return o}var ly=sy;function GP(n){var r=n==null?0:n.length;return r?ly(n,1):[]}var cy=GP;function FP(n){return Sm(Cm(n,void 0,cy),n+"")}var Ac=FP;var jP=Cc(Object.getPrototypeOf,Object),ta=jP;var kP="[object Object]",UP=Function.prototype,HP=Object.prototype,uy=UP.toString,WP=HP.hasOwnProperty,qP=uy.call(Object);function $P(n){if(!er(n)||Ir(n)!=kP)return!1;var r=ta(n);if(r===null)return!0;var e=WP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&uy.call(e)==qP}var dy=$P;function YP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var py=YP;function XP(){this.__data__=new bn,this.size=0}var fy=XP;function KP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var hy=KP;function QP(n){return this.__data__.get(n)}var my=QP;function ZP(n){return this.__data__.has(n)}var yy=ZP;var JP=200;function eC(n,r){var e=this.__data__;if(e instanceof bn){var t=e.__data__;if(!vn||t.length<JP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new ui(t)}return e.set(n,r),this.size=e.size,this}var gy=eC;function ra(n){var r=this.__data__=new bn(n);this.size=r.size}ra.prototype.clear=fy;ra.prototype.delete=hy;ra.prototype.get=my;ra.prototype.has=yy;ra.prototype.set=gy;var oa=ra;function tC(n,r){return n&&xo(r,Xi(r),n)}var xy=tC;function rC(n,r){return n&&xo(r,Ki(r),n)}var by=rC;var Py=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vy=Py&&typeof module=="object"&&module&&!module.nodeType&&module,oC=vy&&vy.exports===Py,Sy=oC?Pt.Buffer:void 0,wy=Sy?Sy.allocUnsafe:void 0;function nC(n,r){if(r)return n.slice();var e=n.length,t=wy?wy(e):new n.constructor(e);return n.copy(t),t}var Cy=nC;function iC(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Oy=iC;function aC(){return[]}var Tc=aC;var sC=Object.prototype,lC=sC.propertyIsEnumerable,Ay=Object.getOwnPropertySymbols,cC=Ay?function(n){return n==null?[]:(n=Object(n),Oy(Ay(n),function(r){return lC.call(n,r)}))}:Tc,na=cC;function uC(n,r){return xo(n,na(n),r)}var Ty=uC;var dC=Object.getOwnPropertySymbols,pC=dC?function(n){for(var r=[];n;)ea(r,na(n)),n=ta(n);return r}:Tc,Ic=pC;function fC(n,r){return xo(n,Ic(n),r)}var Iy=fC;function hC(n,r,e){var t=r(n);return Ct(n)?t:ea(t,e(n))}var Mc=hC;function mC(n){return Mc(n,Xi,na)}var Xs=mC;function yC(n){return Mc(n,Ki,Ic)}var Ec=yC;var gC=yr(Pt,"DataView"),Nc=gC;var xC=yr(Pt,"Promise"),Dc=xC;var bC=yr(Pt,"Set"),_c=bC;var My="[object Map]",vC="[object Object]",Ey="[object Promise]",Ny="[object Set]",Dy="[object WeakMap]",_y="[object DataView]",SC=ko(Nc),wC=ko(vn),PC=ko(Dc),CC=ko(_c),OC=ko(bc),di=Ir;(Nc&&di(new Nc(new ArrayBuffer(1)))!=_y||vn&&di(new vn)!=My||Dc&&di(Dc.resolve())!=Ey||_c&&di(new _c)!=Ny||bc&&di(new bc)!=Dy)&&(di=function(n){var r=Ir(n),e=r==vC?n.constructor:void 0,t=e?ko(e):"";if(t)switch(t){case SC:return _y;case wC:return My;case PC:return Ey;case CC:return Ny;case OC:return Dy}return r});var Wo=di;var AC=Object.prototype,TC=AC.hasOwnProperty;function IC(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&TC.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var By=IC;var MC=Pt.Uint8Array,ia=MC;function EC(n){var r=new n.constructor(n.byteLength);return new ia(r).set(new ia(n)),r}var aa=EC;function NC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ry=NC;var DC=/\w*$/;function _C(n){var r=new n.constructor(n.source,DC.exec(n));return r.lastIndex=n.lastIndex,r}var Ly=_C;var Vy=Wt?Wt.prototype:void 0,zy=Vy?Vy.valueOf:void 0;function BC(n){return zy?Object(zy.call(n)):{}}var Gy=BC;function RC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Fy=RC;var LC="[object Boolean]",VC="[object Date]",zC="[object Map]",GC="[object Number]",FC="[object RegExp]",jC="[object Set]",kC="[object String]",UC="[object Symbol]",HC="[object ArrayBuffer]",WC="[object DataView]",qC="[object Float32Array]",$C="[object Float64Array]",YC="[object Int8Array]",XC="[object Int16Array]",KC="[object Int32Array]",QC="[object Uint8Array]",ZC="[object Uint8ClampedArray]",JC="[object Uint16Array]",eO="[object Uint32Array]";function tO(n,r,e){var t=n.constructor;switch(r){case HC:return aa(n);case LC:case VC:return new t(+n);case WC:return Ry(n,e);case qC:case $C:case YC:case XC:case KC:case QC:case ZC:case JC:case eO:return Fy(n,e);case zC:return new t;case GC:case kC:return new t(n);case FC:return Ly(n);case jC:return new t;case UC:return Gy(n)}}var jy=tO;function rO(n){return typeof n.constructor=="function"&&!qi(n)?mm(ta(n)):{}}var ky=rO;var oO="[object Map]";function nO(n){return er(n)&&Wo(n)==oO}var Uy=nO;var Hy=Uo&&Uo.isMap,iO=Hy?Yi(Hy):Uy,Wy=iO;var aO="[object Set]";function sO(n){return er(n)&&Wo(n)==aO}var qy=sO;var $y=Uo&&Uo.isSet,lO=$y?Yi($y):qy,Yy=lO;var cO=1,uO=2,dO=4,Xy="[object Arguments]",pO="[object Array]",fO="[object Boolean]",hO="[object Date]",mO="[object Error]",Ky="[object Function]",yO="[object GeneratorFunction]",gO="[object Map]",xO="[object Number]",Qy="[object Object]",bO="[object RegExp]",vO="[object Set]",SO="[object String]",wO="[object Symbol]",PO="[object WeakMap]",CO="[object ArrayBuffer]",OO="[object DataView]",AO="[object Float32Array]",TO="[object Float64Array]",IO="[object Int8Array]",MO="[object Int16Array]",EO="[object Int32Array]",NO="[object Uint8Array]",DO="[object Uint8ClampedArray]",_O="[object Uint16Array]",BO="[object Uint32Array]",ut={};ut[Xy]=ut[pO]=ut[CO]=ut[OO]=ut[fO]=ut[hO]=ut[AO]=ut[TO]=ut[IO]=ut[MO]=ut[EO]=ut[gO]=ut[xO]=ut[Qy]=ut[bO]=ut[vO]=ut[SO]=ut[wO]=ut[NO]=ut[DO]=ut[_O]=ut[BO]=!0;ut[mO]=ut[Ky]=ut[PO]=!1;function Bc(n,r,e,t,o,i){var a,s=r&cO,l=r&uO,c=r&dO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!qt(n))return n;var u=Ct(n);if(u){if(a=By(n),!s)return gm(n,a)}else{var p=Wo(n),d=p==Ky||p==yO;if(ci(n))return Cy(n,s);if(p==Qy||p==Xy||d&&!o){if(a=l||d?{}:ky(n),!s)return l?Iy(n,by(a,n)):Ty(n,xy(a,n))}else{if(!ut[p])return o?n:{};a=jy(n,p,s)}}i||(i=new oa);var f=i.get(n);if(f)return f;i.set(n,a),Yy(n)?n.forEach(function(y){a.add(Bc(y,r,e,y,n,i))}):Wy(n)&&n.forEach(function(y,b){a.set(b,Bc(y,r,e,b,n,i))});var h=c?l?Ec:Xs:l?Ki:Xi,m=u?void 0:h(n);return wm(m||n,function(y,b){m&&(b=y,y=n[b]),Hi(a,b,Bc(y,r,e,b,n,i))}),a}var Rc=Bc;var RO=1,LO=4;function VO(n){return Rc(n,RO|LO)}var qo=VO;var zO="__lodash_hash_undefined__";function GO(n){return this.__data__.set(n,zO),this}var Zy=GO;function FO(n){return this.__data__.has(n)}var Jy=FO;function Lc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new ui;++r<e;)this.add(n[r])}Lc.prototype.add=Lc.prototype.push=Zy;Lc.prototype.has=Jy;var eg=Lc;function jO(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var tg=jO;function kO(n,r){return n.has(r)}var rg=kO;var UO=1,HO=2;function WO(n,r,e,t,o,i){var a=e&UO,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,f=e&HO?new eg:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var h=n[p],m=r[p];if(t)var y=a?t(m,h,p,r,n,i):t(h,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!tg(r,function(b,S){if(!rg(f,S)&&(h===b||o(h,b,e,t,i)))return f.push(S)})){d=!1;break}}else if(!(h===m||o(h,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Vc=WO;function qO(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var og=qO;function $O(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var ng=$O;var YO=1,XO=2,KO="[object Boolean]",QO="[object Date]",ZO="[object Error]",JO="[object Map]",eA="[object Number]",tA="[object RegExp]",rA="[object Set]",oA="[object String]",nA="[object Symbol]",iA="[object ArrayBuffer]",aA="[object DataView]",ig=Wt?Wt.prototype:void 0,gp=ig?ig.valueOf:void 0;function sA(n,r,e,t,o,i,a){switch(e){case aA:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case iA:return!(n.byteLength!=r.byteLength||!i(new ia(n),new ia(r)));case KO:case QO:case eA:return Ui(+n,+r);case ZO:return n.name==r.name&&n.message==r.message;case tA:case oA:return n==r+"";case JO:var s=og;case rA:var l=t&YO;if(s||(s=ng),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=XO,a.set(n,r);var u=Vc(s(n),s(r),t,o,i,a);return a.delete(n),u;case nA:if(gp)return gp.call(n)==gp.call(r)}return!1}var ag=sA;var lA=1,cA=Object.prototype,uA=cA.hasOwnProperty;function dA(n,r,e,t,o,i){var a=e&lA,s=Xs(n),l=s.length,c=Xs(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:uA.call(r,d)))return!1}var f=i.get(n),h=i.get(r);if(f&&h)return f==r&&h==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var b=n[d],S=r[d];if(t)var P=a?t(S,b,d,r,n,i):t(b,S,d,n,r,i);if(!(P===void 0?b===S||o(b,S,e,t,i):P)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var C=n.constructor,v=r.constructor;C!=v&&"constructor"in n&&"constructor"in r&&!(typeof C=="function"&&C instanceof C&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(r),m}var sg=dA;var pA=1,lg="[object Arguments]",cg="[object Array]",zc="[object Object]",fA=Object.prototype,ug=fA.hasOwnProperty;function hA(n,r,e,t,o,i){var a=Ct(n),s=Ct(r),l=a?cg:Wo(n),c=s?cg:Wo(r);l=l==lg?zc:l,c=c==lg?zc:c;var u=l==zc,p=c==zc,d=l==c;if(d&&ci(n)){if(!ci(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new oa),a||wc(n)?Vc(n,r,e,t,o,i):ag(n,r,l,e,t,o,i);if(!(e&pA)){var f=u&&ug.call(n,"__wrapped__"),h=p&&ug.call(r,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?r.value():r;return i||(i=new oa),o(m,y,e,t,i)}}return d?(i||(i=new oa),sg(n,r,e,t,o,i)):!1}var dg=hA;function pg(n,r,e,t,o){return n===r?!0:n==null||r==null||!er(n)&&!er(r)?n!==n&&r!==r:dg(n,r,e,t,pg,o)}var fg=pg;function mA(n,r){return n!=null&&r in Object(n)}var hg=mA;function yA(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=wn(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Wi(o)&&ki(a,o)&&(Ct(n)||$i(n)))}var mg=yA;function gA(n,r){return n!=null&&mg(n,r,hg)}var yg=gA;var xA=function(){return Pt.Date.now()},Gc=xA;var bA="Expected a function",vA=Math.max,SA=Math.min;function wA(n,r,e){var t,o,i,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof n!="function")throw new TypeError(bA);r=pp(r)||0,qt(e)&&(u=!!e.leading,p="maxWait"in e,i=p?vA(pp(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function f(A){var T=t,g=o;return t=o=void 0,c=A,a=n.apply(g,T),a}function h(A){return c=A,s=setTimeout(b,r),u?f(A):a}function m(A){var T=A-l,g=A-c,D=r-T;return p?SA(D,i-g):D}function y(A){var T=A-l,g=A-c;return l===void 0||T>=r||T<0||p&&g>=i}function b(){var A=Gc();if(y(A))return S(A);s=setTimeout(b,m(A))}function S(A){return s=void 0,d&&t?f(A):(t=o=void 0,a)}function P(){s!==void 0&&clearTimeout(s),c=0,t=l=o=s=void 0}function C(){return s===void 0?a:S(Gc())}function v(){var A=Gc(),T=y(A);if(t=arguments,o=this,l=A,T){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,r),f(l)}return s===void 0&&(s=setTimeout(b,r)),a}return v.cancel=P,v.flush=C,v}var Fc=wA;function PA(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var gg=PA;function CA(n,r){return r.length<2?n:Oc(n,py(r,0,-1))}var xg=CA;function OA(n,r){return fg(n,r)}var xp=OA;function AA(n,r){return r=Lr(r,n),n=xg(n,r),n==null||delete n[wn(gg(r))]}var bg=AA;function TA(n){return dy(n)?void 0:n}var vg=TA;var IA=1,MA=2,EA=4,NA=Ac(function(n,r){var e={};if(n==null)return e;var t=!1;r=yc(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),xo(n,Ec(n),e),t&&(e=Rc(e,IA|MA|EA,vg));for(var o=r.length;o--;)bg(e,r[o]);return e}),sa=NA;function DA(n,r,e,t){if(!qt(n))return n;r=Lr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=wn(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=qt(u)?u:ki(r[o+1])?[]:{})}Hi(s,l,c),s=s[l]}return n}var Sg=DA;function _A(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Oc(n,a);e(s,a)&&Sg(i,Lr(a,n),s)}return i}var wg=_A;function BA(n,r){return wg(n,r,function(e,t){return yg(n,t)})}var Pg=BA;var RA=Ac(function(n,r){return n==null?{}:Pg(n,r)}),Jr=RA;var he=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,he.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,he.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,he.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ks(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Ks(t)}return Object.freeze(n)}function Cg(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var la=class extends Error{};function jc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bo(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function ca(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Og(){return typeof process<"u"}function Ag(n,r){for(let e of n)r(e.id,e.data)!==!0&&Ag(e.children,r)}function Tg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Tg(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Tg(o,t)}}traverse(e){Ag(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,st.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,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:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new la("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,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:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Cg(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return bo(0,o,o);{let a=i[0].fi;return bo(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return bo(l,l+o,o)}else return bo(a.fi,s.fi,o)}}};var ua;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(ua||(ua={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Og()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return bo(0,t,t);{let i=o[0].fi;return bo(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return bo(s,s+t,t)}else return bo(i.fi,a.fi,t)}}};function da(n){return n&&typeof n=="object"&&n instanceof lt}var lt=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!da(t))return null;o+=1}t=t?jc(t):new lt;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=jc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=jc(l);c[r.path[o-1]]=t,t=c}else{let c=new lt;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,lt.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},vo;(t=>{function n(o,i){return Qs(o,i)??o}t.apply=n;function r(o,i){return vp(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ct.zoomOnce(l,s[a]),l===void 0)return i;if(!da(l))return;a+=1}if(l===void 0)return i;if(!!da(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=bp([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(vo||(vo={}));function bp(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=bp(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function LA(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Qs(n,r){if(!da(r))return r;if(n instanceof st){let e=bp(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return LA(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Qs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof lt)return vp(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Qs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function vp(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!da(r))return r;if(!da(n))return vo.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new lt;for(let o of e){let i=vp(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Ig(n,r){let e={cur:[],result:[],len:0};return n=Zs(n,r,e)??n,[n,e.result]}function kc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Uc(n){n&&(n.len-=1)}function VA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Mg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=Zs(i.data,r,kc(e,a));Uc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=Mg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function zA(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=Zs(i.data,r,kc(e,a));return Uc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Zs(n,r,e){if(n instanceof st){let t=Mg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return zA(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Zs(i,r,kc(e,a));return Uc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!ca(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"&&i!=="variableId"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Zs(a,r,kc(e,i));Uc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&VA(e),t}else return}}var pa;(r=>{function n(e,t){let o=ct.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(pa||(pa={}));var gt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof lt&&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 st||l instanceof ve||l instanceof he?d=l.runOp(c):d=ua.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],S=p[y];if(S instanceof st){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof ve){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof he){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof lt){let P={...S,[b]:m};m=Object.setPrototypeOf(P,lt.prototype)}else if(typeof S=="object")if(Array.isArray(S)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let P=m;m=[...S],m[b]=P}else m={...S,[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 st){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ve){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 t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(gt||(gt={}));var Js;(l=>{function n(){return[]}l.empty=n;function r(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=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(f=>gt.subsumed(d,f))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>gt.commutative(p,d)))}l.commutative=i;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=ct.zoom(p,[...h.path,h.id]),b=gt.apply(p,{...h,type:2})):(m=ct.zoom(p,[...h.path,h.id,"value"]),b=gt.apply(p,h)),b!==null){p=b.data;let[S,P]=Ig(p,{[h.id]:m});p=S;for(let C=0;C<P.length;C++){let v=P[C],A=v.pop();if(typeof A=="number"){let T=[A];for(let D=C+1;D<P.length;D++){let E=P[D],M=E[E.length-1];if(typeof M=="number"&&ct.equal(v,E.slice(0,E.length-1)))T.push(M),P.splice(D,1);else break}let g=ct.zoom(p,v);y=g.map((D,E)=>T.includes(E)?h.id:D),m=g,A=v.pop()}else{if(A==="alphaOverride"||A==="alpha"){m/=100;let T=m,g=ct.zoom(p,v.slice(0,v.length-2)),D=g.layers.map(E=>E.id===v[v.length-1]?{...E,data:{...E.data,[A]:T}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:v,props:{[A]:m}}),f.push({type:0,path:v,props:{[A]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=gt.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof la)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Js||(Js={}));var Eg=Symbol(),GA=Symbol(),Wc=Symbol(),pi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Hc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Wc];t&&t(),delete this._children[r]}}}},wp=class extends pi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,ua.runOp(this._current,r),r.path)}},Pp=class extends pi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,he.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Ng={get(n,r){if(r===Wc)return()=>{n._parent=null};if(r===Eg)return n._current;if(r===GA)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=qc(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},FA={...Ng,set(n,r,e){let t={type:0,props:{[r]:xt(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},jA={...Ng,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},fa=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=qc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ha=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=qc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Sp(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ct.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Hc=class extends pi{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Sp(this.ts,e,r),Sp(this.actual,t,r),Sp(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function qc(n,r,e){return e instanceof st?new fa(n,r,e):e instanceof ve?new ha(n,r,e):e instanceof he?new Proxy(new Pp(n,r,e),jA):e!==null&&typeof e=="object"?ca(e)?e:new Proxy(new wp(n,r,e),FA):e}function Cp(n){let r=new Hc(n);return[qc(r,"",n),r]}function Pn(n,r){let[e,t]=Cp(n);return r(e),t.result()}function xt(n){return n instanceof fa||n instanceof ha?n._current:n!==null&&typeof n=="object"?n[Eg]:n}var ct;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof st||i instanceof fa)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ha)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ct||(ct={}));function Dg(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Fe(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var $c=class{},el=class extends $c{constructor(e){super();this.id=e}},tl=class extends $c{constructor(e){super();this.data=e}};var Ap;try{Ap=new TextDecoder}catch{}var de,On,G=0;var Fg=[],Tp=Fg,Ip=0,gr={},Ke,Cn,Vr=0,So=0,Mr,$o,ur=[],et,_g={useRecords:!1,mapsAsObjects:!0},rl=class{},Ep=new rl;Ep.name="MessagePack 0xC1";var ma=!1,wo=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return Wg(()=>(Xc(),this?this.unpack(r,e):wo.prototype.unpack.call(_g,r,e)));On=e>-1?e:r.length,G=0,Ip=0,So=0,Cn=null,Tp=Fg,Mr=null,de=r;try{et=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof wo){if(gr=this,this.structures)return Ke=this.structures,Yc();(!Ke||Ke.length>0)&&(Ke=[])}else gr=_g,(!Ke||Ke.length>0)&&(Ke=[]);return Yc()}unpackMultiple(r,e){let t,o=0;try{ma=!0;let i=r.length,a=this?this.unpack(r,i):Zc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Yc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Yc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ma=!1,Xc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Yc(){try{if(!gr.trusted&&!ma){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==On)Ke.restoreStructures&&Bg(),Ke=null,de=null,$o&&($o=null);else if(G>On){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ma)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&Bg(),Xc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Bg(){for(let n in Ke.restoreStructures)Ke[n]=Ke.restoreStructures[n];Ke.restoreStructures=null}function Ot(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=Ke[n&63]||gr.getStructures&&jg()[n&63];return r?(r.read||(r.read=Np(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ug()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}else if(n<192){let r=n-160;if(So>=G)return Cn.slice(G-Vr,(G+=r)-Vr);if(So==0&&On<140){let e=r<16?Dp(r):kg(r);if(e!=null)return e}return Mp(r)}else{let r;switch(n){case 192:return null;case 193:return Mr?(r=Ot(),r>0?Mr[1].slice(Mr.position1,Mr.position1+=r):Mr[0].slice(Mr.position0,Mr.position0-=r)):Ep;case 194:return!1;case 195:return!0;case 196:return Op(de[G++]);case 197:return r=et.getUint16(G),G+=2,Op(r);case 198:return r=et.getUint32(G),G+=4,Op(r);case 199:return fi(de[G++]);case 200:return r=et.getUint16(G),G+=2,fi(r);case 201:return r=et.getUint32(G),G+=4,fi(r);case 202:if(r=et.getFloat32(G),gr.useFloat32>2){let e=Qc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=et.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=et.getUint16(G),G+=2,r;case 206:return r=et.getUint32(G),G+=4,r;case 207:return gr.int64AsNumber?(r=et.getUint32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigUint64(G),G+=8,r;case 208:return et.getInt8(G++);case 209:return r=et.getInt16(G),G+=2,r;case 210:return r=et.getInt32(G),G+=4,r;case 211:return gr.int64AsNumber?(r=et.getInt32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return Gg(de[G++]&63);{let e=ur[r];if(e)return e.read?(G++,e.read(Ot())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,Gg(de[G++]&63,de[G++])):fi(2);case 214:return fi(4);case 215:return fi(8);case 216:return fi(16);case 217:return r=de[G++],So>=G?Cn.slice(G-Vr,(G+=r)-Vr):UA(r);case 218:return r=et.getUint16(G),G+=2,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):HA(r);case 219:return r=et.getUint32(G),G+=4,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):WA(r);case 220:return r=et.getUint16(G),G+=2,Lg(r);case 221:return r=et.getUint32(G),G+=4,Lg(r);case 222:return r=et.getUint16(G),G+=2,Vg(r);case 223:return r=et.getUint32(G),G+=4,Vg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var kA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Np(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>kA.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=Rg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=Ot()}return t}return e.count=0,n.highByte===0?Rg(r,e):e}var Rg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ke[t]||jg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Np(o,n)),o.read()};function jg(){let n=Wg(()=>(de=null,gr.getStructures()));return Ke=gr._mergeStructures(n,Ke)}var Mp=Kc,UA=Kc,HA=Kc,WA=Kc;function Kc(n){let r;if(n<16&&(r=Dp(n)))return r;if(n>64&&Ap)return Ap.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=$t.apply(String,t),t.length=0)}return t.length>0&&(r+=$t.apply(String,t)),r}function Lg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}function Vg(n){if(gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ug()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var $t=String.fromCharCode;function kg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return $t.apply(String,e)}function Dp(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return $t(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return $t(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return $t(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return $t(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return $t(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return $t(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return $t(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return $t(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return $t(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return $t(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return $t(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return $t(r,e,t,o,i,a,s,l,c,u,p,d);{let f=de[G++];if((f&128)>0){G-=13;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f)}}else{let f=de[G++],h=de[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(n<15)return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h);let m=de[G++];if((m&128)>0){G-=15;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h,m)}}}}}function Op(n){return gr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function fi(n){let r=de[G++];if(ur[r])return ur[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var zg=new Array(4096);function Ug(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,So>=G)return Cn.slice(G-Vr,(G+=n)-Vr);if(!(So==0&&On<180))return Mp(n)}else return G--,Ot();let r=(n<<5^(n>1?et.getUint16(G):n>0?de[G]:0))&4095,e=zg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=et.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],zg[r]=e,e.bytes=n;t<o;)i=et.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?Dp(n):kg(n);return s!=null?e.string=s:e.string=Mp(n)}var Gg=(n,r)=>{var e=Ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ke[n];return o&&o.isShared&&((Ke.restoreStructures||(Ke.restoreStructures=[]))[n]=o),Ke[n]=e,e.read=Np(e,t),e.read()},Hg=typeof self=="object"?self:global;ur[0]=()=>{};ur[0].noBuffer=!0;ur[101]=()=>{let n=Ot();return(Hg[n[0]]||Error)(n[1])};ur[105]=n=>{let r=et.getUint32(G-4);$o||($o=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};$o.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};ur[112]=n=>{let r=et.getUint32(G-4),e=$o.get(r);return e.used=!0,e.target};ur[115]=()=>new Set(Ot());var _p=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ur[116]=n=>{let r=n[0],e=_p[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Hg[e](Uint8Array.prototype.slice.call(n,1).buffer)};ur[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};ur[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,Mr=[Ot(),Ot()],Mr.position0=0,Mr.position1=0;let t=G;G=e;try{return Ot()}finally{G=t}};ur[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Wg(n){let r=On,e=G,t=Ip,o=Vr,i=So,a=Cn,s=Tp,l=$o,c=Mr,u=new Uint8Array(de.slice(0,On)),p=Ke,d=Ke.slice(0,Ke.length),f=gr,h=ma,m=n();return On=r,G=e,Ip=t,Vr=o,So=i,Cn=a,Tp=s,$o=l,Mr=c,de=u,ma=h,Ke=p,Ke.splice(0,Ke.length,...d),gr=f,et=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Xc(){de=null,$o=null,Ke=null}function qg(n){n.unpack?ur[n.type]=n.unpack:ur[n.type]=n}var Qc=new Array(147);for(let n=0;n<256;n++)Qc[n]=+("1e"+Math.floor(45.15-n*.30103));var Zc=new wo({useRecords:!1}),qA=Zc.unpack,$A=Zc.unpackMultiple,YA=Zc.unpack,Jc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},XA=new Float32Array(1),QG=new Uint8Array(XA.buffer,0,4);var eu;try{eu=new TextEncoder}catch{}var tu,Rp,ru=typeof Buffer<"u",Bp=ru?Buffer.allocUnsafeSlow:Uint8Array,Kg=ru?Buffer:Uint8Array,$g=ru?4294967296:2144337920,Y,Mt,U=0,Po,Co=null,KA=/[\u0080-\uFFFF]/,ol=Symbol("record-id"),hi=class extends wo{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Kg.prototype.utf8Write?function(g,D,E){return Y.utf8Write(g,D,E)}:eu&&eu.encodeInto?function(g,D){return eu.encodeInto(g,Y.subarray(D)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=r.maxOwnStructures;h==null&&(h=d?32:64),p&&!r.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 S=[],P=0,C=0;this.pack=this.encode=function(g,D){if(Y||(Y=new Bp(8192),Mt=new DataView(Y.buffer,0,8192),U=0),Po=Y.length-10,Po-U<2048?(Y=new Bp(Y.length),Mt=new DataView(Y.buffer,0,Y.length),Po=Y.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Co=["",""],Y[U++]=214,Y[U++]=98,Co.position=U-t,U+=4):Co=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 M=0;M<E;M++){let N=o[M];if(!N)continue;let _,B=o.transitions;for(let V=0,k=N.length;V<k;V++){let L=N[V];_=B[L],_||(_=B[L]=Object.create(null)),B=_}B[ol]=M+64}l=E}p||(o.nextId=E+64)}i&&(i=!1),a=o||[];try{if(v(g),Co){Mt.setUint32(Co.position+t,U-Co.position-t);let E=Co;Co=null,v(E[0]),v(E[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Po&&T(U),u.offset=U;let E=ZA(Y.subarray(t,U),s.idsToInsert);return s=null,E}return D&Zg?(Y.start=t,Y.end=U,Y):Y.subarray(t,U)}finally{if(o){if(C<10&&C++,P>1e4)o.transitions=null,C=0,P=0,S.length>0&&(S=[]);else if(S.length>0&&!p){for(let E=0,M=S.length;E<M;E++)S[E][ol]=0;S=[]}if(i&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let M=Y.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,M)}}D&iT&&(U=t)}};let v=g=>{U>Po&&(Y=T(U));var D=typeof g,E;if(D==="string"){let M=g.length;if(Co&&M>=8&&M<4096){let B=KA.test(g);Co[B?0:1]+=g,Y[U++]=193,v(B?-M:M);return}let N;M<32?N=1:M<256?N=2:M<65536?N=3:N=5;let _=M*3;if(U+_>Po&&(Y=T(U+_)),M<64||!c){let B,V,k,L=U+N;for(B=0;B<M;B++)V=g.charCodeAt(B),V<128?Y[L++]=V:V<2048?(Y[L++]=V>>6|192,Y[L++]=V&63|128):(V&64512)===55296&&((k=g.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(k&1023),B++,Y[L++]=V>>18|240,Y[L++]=V>>12&63|128,Y[L++]=V>>6&63|128,Y[L++]=V&63|128):(Y[L++]=V>>12|224,Y[L++]=V>>6&63|128,Y[L++]=V&63|128);E=L-U-N}else E=c(g,U+N,_);E<32?Y[U++]=160|E:E<256?(N<2&&Y.copyWithin(U+2,U+1,U+1+E),Y[U++]=217,Y[U++]=E):E<65536?(N<3&&Y.copyWithin(U+3,U+2,U+2+E),Y[U++]=218,Y[U++]=E>>8,Y[U++]=E&255):(N<5&&Y.copyWithin(U+5,U+3,U+3+E),Y[U++]=219,Mt.setUint32(U,E),U+=4),U+=E}else if(D==="number")if(g>>>0===g)g<64?Y[U++]=g:g<256?(Y[U++]=204,Y[U++]=g):g<65536?(Y[U++]=205,Y[U++]=g>>8,Y[U++]=g&255):(Y[U++]=206,Mt.setUint32(U,g),U+=4);else if(g>>0===g)g>=-32?Y[U++]=256+g:g>=-128?(Y[U++]=208,Y[U++]=g+256):g>=-32768?(Y[U++]=209,Mt.setInt16(U,g),U+=2):(Y[U++]=210,Mt.setInt32(U,g),U+=4);else{let M;if((M=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){Y[U++]=202,Mt.setFloat32(U,g);let N;if(M<4||(N=g*Qc[(Y[U]&127)<<1|Y[U+1]>>7])>>0===N){U+=4;return}else U--}Y[U++]=203,Mt.setFloat64(U,g),U+=8}else if(D==="object")if(!g)Y[U++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}Y[U++]=214,Y[U++]=112,Mt.setUint32(U,N.id),U+=4;return}else s.set(g,{offset:U-t})}let M=g.constructor;if(M===Object)A(g,!0);else if(M===Array){E=g.length,E<16?Y[U++]=144|E:E<65536?(Y[U++]=220,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=221,Mt.setUint32(U,E),U+=4);for(let N=0;N<E;N++)v(g[N])}else if(M===Map){E=g.size,E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);for(let[N,_]of g)v(N),v(_)}else{for(let N=0,_=tu.length;N<_;N++){let B=Rp[N];if(g instanceof B){let V=tu[N];if(V.write){V.type&&(Y[U++]=212,Y[U++]=V.type,Y[U++]=0),v(V.write.call(this,g));return}let k=Y,L=Mt,W=U;Y=null;let F;try{F=V.pack.call(this,g,j=>(Y=k,k=null,U+=j,U>Po&&T(U),{target:Y,targetView:Mt,position:U-j}),v)}finally{k&&(Y=k,Mt=L,U=W,Po=Y.length-10)}F&&(F.length+U>Po&&T(F.length+U),U=QA(F,Y,U,V.type));return}}A(g,!g.hasOwnProperty)}}else if(D==="boolean")Y[U++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))Y[U++]=211,Mt.setBigInt64(U,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)Y[U++]=207,Mt.setBigUint64(U,g);else if(this.largeBigIntToFloat)Y[U++]=203,Mt.setFloat64(U,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");U+=8}else if(D==="undefined")this.encodeUndefinedAsNil?Y[U++]=192:(Y[U++]=212,Y[U++]=0,Y[U++]=0);else if(D==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},A=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);let M;for(let N=0;N<E;N++)v(M=D[N]),v(g[M])}:(g,D)=>{Y[U++]=222;let E=U-t;U+=2;let M=0;for(let N in g)(D||g.hasOwnProperty(N))&&(v(N),v(g[N]),M++);Y[E+++t]=M>>8,Y[E+t]=M&255}:g=>{let D=Object.keys(g),E,M=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=D.length;B<V;B++){let k=D[B];E=M[k],E||(E=M[k]=Object.create(null),N++),M=E}let _=M[ol];if(_)_>=96&&m?(Y[U++]=((_-=96)&31)+96,Y[U++]=_>>5):Y[U++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let B=D.highByte=_>=96&&m?_-96>>5:-1;M[ol]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[U++]=(_&31)+96,Y[U++]=B):Y[U++]=_):(B>=0?(Y[U++]=213,Y[U++]=114,Y[U++]=(_&31)+96,Y[U++]=B):(Y[U++]=212,Y[U++]=114,Y[U++]=_),N&&(P+=C*N),S.length>=h&&(S.shift()[ol]=0),S.push(M),v(D))}for(let B=0,V=D.length;B<V;B++)v(g[D[B]])},T=g=>{let D;if(g>16777216){if(g-t>$g)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min($g,Math.round(Math.max((g-t)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-t<<2,Y.length-1)>>12)+1<<12;let E=new Bp(D);return Mt=new DataView(E.buffer,0,D),Y.copy?Y.copy(E,0,t,g):E.set(Y.slice(t,g)),U-=t,t=0,Po=E.length-10,Y=E}}useBuffer(r){Y=r,Mt=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),U=0}};Rp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,rl];tu=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Yg(n,16,r):Xg(ru?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Kg&&this.structuredClone?Yg(n,_p.indexOf(e.name),r):Xg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Yg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Xg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function QA(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function ZA(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function An(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Rp.unshift(n.Class),tu.unshift(n)}qg(n)}var Qg=new hi({useRecords:!1}),JA=Qg.pack,eT=Qg.pack;var{NEVER:tT,ALWAYS:rT,DECIMAL_ROUND:oT,DECIMAL_FIT:nT}=Jc,Zg=512,iT=1024;var Jg=new hi({structuredClone:!0});An({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});An({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});An({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});An({Class:el.prototype.constructor,type:4,write(n){return n.id},read(n){return new el(n)}});An({Class:tl.prototype.constructor,type:5,write(n){return n.data},read(n){return new tl(n)}});An({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function aT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Lp(n){if(ca(n))return n;if(Array.isArray(n))return n.map(Lp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Lp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ou;(t=>{function n(o){return Jg.pack(o)}t.serialize=n;function r(o){return Jg.unpack(o)}t.deserialize=r;function e(o){return aT(n(Lp(o))).toString()}t.checksum=e})(ou||(ou={}));var Mn="personal camera",En="a218fcc3-276b-49b9-b485-49037fd14f5f",ix=2960946,Et=5526619;var ya;(f=>{function n(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=n;function r(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=r;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function t(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=t;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function i(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=i;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),S=f.sub(y,h),P=f.dot(b,S)/f.dot(b,b),C=f.scalarMultiply(b,P);return f.add(h,C)}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})(ya||(ya={}));var Tn;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(Tn||(Tn={}));var ex;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(ex||(ex={}));var tx;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(tx||(tx={}));var In;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(In||(In={}));var zt;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,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(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,f){return d.r===f.r&&d.g===f.g&&d.b===f.b}p.equals=l;function c(d,f){return d.r.toFixed(2)===f.r.toFixed(2)&&d.g.toFixed(2)===f.g.toFixed(2)&&d.b.toFixed(2)===f.b.toFixed(2)}p.equalsFixed=c;function u(d,f,h){return{r:d.r+(f.r-d.r)*h,g:d.g+(f.g-d.g)*h,b:d.b+(f.b-d.b)*h}}p.lerp=u})(zt||(zt={}));var _e;(c=>{c.white={...zt.white,a:1},c.transparent={...zt.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...zt.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return zt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return zt.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:f}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${f})`}c.toStyle=l})(_e||(_e={}));var nu;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(nu||(nu={}));var rx;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(rx||(rx={}));var ox;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(ox||(ox={}));var nx;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(nx||(nx={}));function Vp(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var eo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(eo||(eo={}));var Nn;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(Nn||(Nn={}));var Oo;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(sT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;lT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;cT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;uT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;dT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;pT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Oo||(Oo={}));var iu;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(iu||(iu={}));var sT=["count"],lT=["radius","start","end","position","scale","rotation"],cT=["position","scale","rotation"],uT=["count","size"],dT=["count","position","scale","rotation"],pT=["strength","scale","rotation","position","movement","seed","freqScale"];var au;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(au||(au={}));var su;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:_e.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(su||(su={}));var ga;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...t.defaultCollisionData}))(ga||(ga={}));var Dn;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Dn||(Dn={}));var zp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(zp||(zp={}));var Gp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Gp||(Gp={}));var lu;(r=>r.defaultData={...Gp.defaultData,...zp.defaultData})(lu||(lu={}));var ax;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(ax||(ax={}));var xa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(xa||(xa={}));var sx;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(sx||(sx={}));function cx(n){return n.type!=="displace"}var lx;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(lx||(lx={}));var ux=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],dx=["wrapping","image","video","name","minFilter","magFilter"],Bt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],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:xa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:zt.fromHex(Et)};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:{...zt.fromHex(6710886),a:1},colorB:{...zt.fromHex(6710886),a:1},colorC:{...zt.fromHex(16777215),a:1},colorD:{...zt.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:_e.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:_e.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:_e.fromHexAndA(0,1),contourColor:_e.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:{...zt.fromHex(0),a:1},colorB:{...zt.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}}}})(Bt||(Bt={}));var Yt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let 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=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let f=new ve;return f.push({fi:0,data:Bt.defaultData("light",u),id:p}),f.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=i;function a(u){let p=Bt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...Bt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...Bt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("video");Object.assign(h.texture,{video:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Yt||(Yt={}));var ba;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(ba||(ba={}));var va;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(va||(va={}));var Fp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var cu;(r=>{function n(e,t){let o={...e};return fT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(cu||(cu={}));var uu={shape:Fp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},fT=["depth","offset","angle","twist","startScale","endScale"];var nl;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"||t==="InputGeometry"}e.isParametricMesh=r})(nl||(nl={}));var du;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,cu.merge(o.extrusion,t.extrusion))),o}r.merge=n})(du||(du={}));var Yo;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="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:va.defaultData(),extrusion:uu};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ba.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...r.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")}r.defaultData=n})(Yo||(Yo={}));var pu;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:zt.white,near:.1,far:2e3})(pu||(pu={}));var fu;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(fu||(fu={}));var jp;(r=>r.defaultData={softShadowQuality:"low"})(jp||(jp={}));var kp;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(kp||(kp={}));var Up;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Up||(Up={}));var il;(r=>r.defaultData={usePhysics:!1,gravity:-10})(il||(il={}));var Hp;(r=>r.defaultData={playCamera:Mn,gameControlObject:null})(Hp||(Hp={}));var hu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(ix,1),postprocessing:fu.defaultData,fog:pu.defaultData,globalPhysics:il.defaultData,ambient:kp.defaultData,ao:Up.defaultData,shadow:jp.defaultData,publish:Hp.defaultData})(hu||(hu={}));var mu;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(mu||(mu={}));var px;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(px||(px={}));var Sa;(o=>{o.identity={...nu.identity,hiddenMatrix:In.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return pc({position:Tn.isEqual(i.position,a.position)?void 0:a.position,rotation:Tn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Tn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:In.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Sa||(Sa={}));var Rt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:Dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Sa.identity,cloner:null})(Rt||(Rt={}));var yu;(r=>r.defaultData={type:"Empty",...Rt.defaultData})(yu||(yu={}));var fx;(r=>r.defaultData={type:"ParticleCollider",...mu.defaultData,...Rt.defaultData})(fx||(fx={}));var hx;(r=>r.defaultData={type:"Component",...Rt.defaultData})(hx||(hx={}));var mx;(r=>r.defaultData={type:"Particle",...Rt.defaultData,...ga.defaultData})(mx||(mx={}));var _n;(r=>r.defaultData={type:"Mesh",...Rt.defaultData,...lu.defaultData})(_n||(_n={}));var mi;(r=>r.defaultData={...Rt.defaultData,...Sa.identity,position:[0,0,Nn.DefaultTargetOffset],...Nn.defaultData})(mi||(mi={}));var gu;(e=>{function n(t){return{...Rt.defaultData,...su.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(gu||(gu={}));var wa;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(wa||(wa={}));var Ao;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Rt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Sa.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Ao||(Ao={}));var Xo;(e=>{e.defaultData={type:"Page",...Rt.defaultData,physics:{...Dn.defaultData,fusedBody:!1},...hu.defaultData,camera:mi.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Xo||(Xo={}));var xu;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:In.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Dn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Nn.defaultData},a.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"]},a.defaultMeshObject={name:"Rectangle",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("TextGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("InputGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(xu||(xu={}));var yi;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new lt}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new lt})))):eo.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Pn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&Bt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Pn(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&&Bt.patch(f,d)}}}).data),s}function e(i,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(...iu.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 t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Sa.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})}),eo.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:du.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(au.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=zt.clone(l.color))}return s}o.patch=t})(yi||(yi={}));var Pa;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Pa||(Pa={}));var to;(r=>r.defaultData={orbitControls:Pa.defaultData,playPage:En,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70}},stopRaycast:!0,hdTransmission:!1})(to||(to={}));var Wp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Wp||(Wp={}));var qp;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(qp||(qp={}));var Ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Wp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:qp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ko||(Ko={}));var yx;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ca.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(yx||(yx={}));var Qo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:gu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=xu.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 st;return h.push({fi:1,id:En,data:{...Xo.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:to.defaultData,styles:Ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:to.defaultData,styles:Ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:to.defaultData,styles:Ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...to.defaultData},styles:Ko.defaultData()}};function s(u){return{...c.defaultData,objects:Jt(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Qo||(Qo={}));var Oa;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Oa||(Oa={}));var bu;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new ve}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(bu||(bu={}));var gx;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new ve,queries:new ve,autoStart:!0}))(gx||(gx={}));var Bn;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Bn||(Bn={}));var $p;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])($p||($p={}));var xx;(r=>r.all=[...$p.all,"components"])(xx||(xx={}));var bx;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(bx||(bx={}));var ro;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(ro||(ro={}));var Gr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(a,he.prototype)}i.defaultColors=n;function r(){return Jt({},he.prototype)}i.defaultImages=r;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,variables:new ve,userAPIs:new he,userWebhooks:new he,lib:ro.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let 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}i.getFormattedTimerTime=o})(Gr||(Gr={}));var al=require("three");var vu;(r=>r.list=["idle","move","jump","run"])(vu||(vu={}));var Su;(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 ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:_e.fromHexAndA(3728051,1)}}))(Su||(Su={}));function vx(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Jr(xt(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...xt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Zo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Jo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Yt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==lt.prototype&&r(o.material)})})}function hT(n){Object.assign(n.scene.publish,{orbitControls:{...Pa.defaultData,...xt(n.scene.publish.orbitControls)}})}function mT(n){Object.assign(n.scene.publish.settings,{video:{...to.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function yT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((ux.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(dx.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function gT(n){n.scene.publish.withBackground=!0}function xT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function bT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function vT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function ST(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=xt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=xt(e).booleanExclude!==!0)}})}function wT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function PT(n){function r(t){Object.setPrototypeOf(t,lt.prototype),t.texture&&Object.setPrototypeOf(t.texture,lt.prototype)}function e(t){Object.setPrototypeOf(t,lt.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=xt(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=xt(l).layers;e(c),l.layers=c}})})}function Sx(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function Yp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...xt(r),colors:e,steps:t};Object.assign(r,o)}})}function CT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function wx(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Yp(t)}):"material"in e&&typeof e.material!="string"&&Yp(e.material)}),Object.values(n.shared.materials).forEach(r=>Yp(r))}function OT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function AT(n){n.shared.audios=Jt({},he.prototype)}function TT(n){n.shared.videos=Jt({},he.prototype)}function IT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function MT(n){Object.entries(xt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(xt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function ET(n){n.scene.publish.settings.web.preload=!1}function Px(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Cx(n){n.layers&&n.layers.forEach(r=>{cx(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function NT(n){n.shared.fonts=Jt({},he.prototype)}function DT(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function _T(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Yt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=DT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Rt.defaultData,..._n.defaultData,flatShading:!1,wireframe:!1,geometry:{...Yo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:xt(o.states),events:xt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=xt(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function BT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:al.MathUtils.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,Jr(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 ve({fi:0,id:al.MathUtils.generateUUID(),data:c},{fi:1,id:al.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function RT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Jr(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={...Jr(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:al.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Ox(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Ax(n){Zo(n,Ox),Jo(n,Ox)}function LT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function VT(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function zT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Yt.defaultTwoLayerData("phong"))})}function GT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function FT(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function jT(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function kT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function UT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function HT(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function WT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Su.defaultDataThirdPerson.navmesh)})})}function qT(n){n.scene.styles||(n.scene.styles=Ko.defaultData())}function Tx(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function $T(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Jo(n,Tx),Zo(n,Tx)}function YT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function XT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Ix(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Mx(n,r){if(r<1&&(Jo(n,vx),Zo(n,vx),n.schema=1),r<2&&(hT(n),n.schema=2),r<3&&(yT(n),n.schema=3),r<4&&(gT(n),n.schema=4),r<5&&(xT(n),n.schema=5),r<6&&(bT(n),n.schema=6),r<7&&(vT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(wx(n),n.schema=9),r<10&&(CT(n),n.schema=10),r<11&&(OT(n),n.schema=11),r<12&&(wx(n),n.schema=12),r<13&&(AT(n),n.schema=13),r<14&&(IT(n),n.schema=14),r<15&&(MT(n),n.schema=15),r<16&&(ET(n),n.schema=16),r<17&&(Jo(n,Px),Zo(n,Px),n.schema=17),r<18&&(Jo(n,Sx),Zo(n,Sx),n.schema=18),r<19&&(mT(n),n.schema=19),r<20&&(NT(n),_T(n),n.schema=20),r<21&&(BT(n),RT(n),n.schema=21),r<22&&(Ax(n),n.schema=22),r<23&&(LT(n),n.schema=23),r<24&&(VT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(TT(n),r<25&&(n.schema=25)),r<26&&(ST(n),n.schema=26),r<27&&(wT(n),n.schema=27),r<28&&(Ax(n),n.schema=28),r<29&&(PT(n),n.schema=29),r<30&&(zT(n),n.schema=30),r<31&&(GT(n),n.schema=31),r<33&&(FT(n),n.schema=33),r<34&&(jT(n),n.schema=34),r<35&&(kT(n),n.schema=35),r<36&&(UT(n),n.schema=36),r<37&&(HT(n),n.schema=37),r<38&&(Jo(n,Cx),Zo(n,Cx),n.schema=38),r<39&&(WT(n),n.schema=39),r<40&&(qT(n),n.schema=40),r<41&&($T(n),n.schema=41),r<42&&(YT(n),n.schema=42),r<43&&(XT(n),n.schema=43),r<99){Jo(n,Ix),Zo(n,Ix),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Mn);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=En,t.insertBefore(null,null,[{id:En,data:{...Xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Jr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Jr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...il.defaultData,...Jr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Qo.TRASH_CAN_ID&&t.move(En,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,Dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function KT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function QT(n){Array.isArray(xt(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var Aa=180/Math.PI;function Nx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Aa)}function Dx(n){Nx(n),n.type==="Page"&&Nx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Aa))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*Aa),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Aa),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Aa,r.extrusion.twist*=Aa),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(xt(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function ZT(n){n.shared.variables=Jt({},he.prototype)}function JT(n){let r=xt(n.shared.variables);n.shared.variables=Jt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var To=115;function _x(n,r){r(n.data);for(let e of n.children)_x(e,r)}function eI(n){let r=n.schema??104;r!==To&&r<105&&(_x(n.asset,Dx),n.schema=105)}function tI(n){n.shared.particles=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.particles=ro.defaultData().particles)}function rI(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function oI(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function nI(n){n.scene.objects.traverse((r,e)=>{Array.isArray(xt(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function iI(n){n.shared.userAPIs=Jt({},he.prototype),n.shared.userWebhooks=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.userAPIs=ro.defaultData().userAPIs,n.shared.lib.userWebhooks=ro.defaultData().userWebhooks)}function wu(n){let r=n.schema??0;if(r!==To){console.warn("updating from ",r,"to ",To),Mx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=to.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Jo(n,Ex),Zo(n,Ex),n.schema=101),r<102&&(KT(n),n.schema=102),r<104&&(n.shared.catelogs=new he,n.shared.lib=ro.defaultData(),n.schema=104),r<105&&(ZT(n),n.scene.objects.traverse((e,t)=>{Dx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))eI(e);r<106&&(JT(n),n.schema=106),r<107&&(n.shared.lib.variables=ro.defaultData().variables,n.schema=107),r<109&&(tI(n),n.schema=109),r<110&&(rI(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{QT(t)}),n.schema=111),r<112&&(oI(n),n.schema=112),r<113&&(nI(n),n.schema=113),r<114&&(n.scene.publish.settings.web.imageQuality===void 0&&(n.scene.publish.settings.web.imageQuality=70),n.schema=114),r<115&&(iI(n),n.schema=115)}}var Ca;(c=>{c.defaultData={schema:To,scene:Qo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors()}},c.emptyDataForImports=function(){let u=Qo.emptyDataWithPage();return{schema:To,scene:u,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors(),images:Gr.defaultImages()}}},c.emptyData=function(){return{schema:To,scene:Qo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:Gr.emptyData()}},c.clipboard2dData=function(){return{schema:To,scene:Qo.emptyData(),frames:new he,shared:Gr.emptyData()}},c.collabHelper={...Js,updateSchema(u){return(u.schema??0)<To?Pn(u,wu):(u.schema??0)-To}};function i(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:ro.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})(Ca||(Ca={}));var Pu;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Pu||(Pu={}));var Bx;(r=>{function n(e){return!0}r.is=n})(Bx||(Bx={}));var Cu;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return pc({position:ya.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ya.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ya.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Cu||(Cu={}));var Xp;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Xp||(Xp={}));var Rx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(Rx||(Rx={}));var Ou;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(Et,1),enabled:!0},stroke:{color:_e.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:_e.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:_e.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Ou||(Ou={}));var gi;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Cu.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(gi||(gi={}));var sl;(r=>r.defaultData={...Cu.defaultData,...Xp.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(sl||(sl={}));var Ta;(r=>r.defaultData={...sl.defaultData,...Ou.defaultData})(Ta||(Ta={}));var Au;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Au||(Au={}));var Kp;(r=>r.defaultData={...Ta.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Kp||(Kp={}));var Ia;(r=>r.defaultData={...Ta.defaultData,...Au.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(Ia||(Ia={}));var Qp;(r=>r.defaultData={...Ta.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"})(Qp||(Qp={}));var Zp;(r=>r.defaultData={...Ta.defaultData,type:"path2d",path:"",name:"Path"})(Zp||(Zp={}));var Lx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(Lx||(Lx={}));var ll;(r=>r.defaultData={...sl.defaultData,name:"Group",type:"group2d"})(ll||(ll={}));var Jp;(r=>r.defaultData=()=>({...sl.defaultData,...Au.defaultData,...Ou.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:_e.fromHexAndA(4737101,1),enabled:!0},stroke:{color:_e.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Jp||(Jp={}));var en;(i=>{function n(a){switch(a){case"rectangle2d":return{...Ia.defaultData};case"ellipse2d":return{...Kp.defaultData};case"text2d":return{...Qp.defaultData};case"vector2d":return{...Ia.defaultData};case"path2d":return{...Zp.defaultData};case"frame2d":return{...Jp.defaultData()};case"group2d":return{...ll.defaultData}}}i.defaultData=n;function r(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]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(en||(en={}));var Tu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(Tu||(Tu={}));var Je=require("three"),wd=qs(zx());var aI=.5*(Math.sqrt(3)-1),cl=(3-Math.sqrt(3))/6,sI=1/3,Io=1/6,VU=(Math.sqrt(5)-1)/4,zU=(5-Math.sqrt(5))/20,ul=n=>Math.floor(n)|0,Gx=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]),tf=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 Fx(n=Math.random){let r=kx(n),e=new Float64Array(r).map(o=>Gx[o%12*2]),t=new Float64Array(r).map(o=>Gx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*aI,p=ul(i+u),d=ul(a+u),f=(p+d)*cl,h=p-f,m=d-f,y=i-h,b=a-m,S,P;y>b?(S=1,P=0):(S=0,P=1);let C=y-S+cl,v=b-P+cl,A=y-1+2*cl,T=b-1+2*cl,g=p&255,D=d&255,E=.5-y*y-b*b;if(E>=0){let _=g+r[D],B=e[_],V=t[_];E*=E,s=E*E*(B*y+V*b)}let M=.5-C*C-v*v;if(M>=0){let _=g+S+r[D+P],B=e[_],V=t[_];M*=M,l=M*M*(B*C+V*v)}let N=.5-A*A-T*T;if(N>=0){let _=g+1+r[D+1],B=e[_],V=t[_];N*=N,c=N*N*(B*A+V*T)}return 70*(s+l+c)}}function jx(n=Math.random){let r=kx(n),e=new Float64Array(r).map(i=>tf[i%12*3]),t=new Float64Array(r).map(i=>tf[i%12*3+1]),o=new Float64Array(r).map(i=>tf[i%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*sI,h=ul(a+f),m=ul(s+f),y=ul(l+f),b=(h+m+y)*Io,S=h-b,P=m-b,C=y-b,v=a-S,A=s-P,T=l-C,g,D,E,M,N,_;v>=A?A>=T?(g=1,D=0,E=0,M=1,N=1,_=0):v>=T?(g=1,D=0,E=0,M=1,N=0,_=1):(g=0,D=0,E=1,M=1,N=0,_=1):A<T?(g=0,D=0,E=1,M=0,N=1,_=1):v<T?(g=0,D=1,E=0,M=0,N=1,_=1):(g=0,D=1,E=0,M=1,N=1,_=0);let B=v-g+Io,V=A-D+Io,k=T-E+Io,L=v-M+2*Io,W=A-N+2*Io,F=T-_+2*Io,j=v-1+3*Io,H=A-1+3*Io,q=T-1+3*Io,re=h&255,ee=m&255,X=y&255,te=.6-v*v-A*A-T*T;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*v+t[$]*A+o[$]*T)}let K=.6-B*B-V*V-k*k;if(K<0)u=0;else{let $=re+g+r[ee+D+r[X+E]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*k)}let Z=.6-L*L-W*W-F*F;if(Z<0)p=0;else{let $=re+M+r[ee+N+r[X+_]];Z*=Z,p=Z*Z*(e[$]*L+t[$]*W+o[$]*F)}let Q=.6-j*j-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*j+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function kx(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Ux=require("three"),oo=new Ux.Triangle,Iu=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;oo.a.fromBufferAttribute(r,o),oo.b.fromBufferAttribute(r,o+1),oo.c.fromBufferAttribute(r,o+2),i*=oo.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),oo.a.fromBufferAttribute(this.positionAttribute,r*3),oo.b.fromBufferAttribute(this.positionAttribute,r*3+1),oo.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(oo.a,o).addScaledVector(oo.b,i).addScaledVector(oo.c,1-(o+i)),oo.getNormal(t),this}};var $x=require("three");var Er=require("three"),qx=qs(Wx()),lI=new Er.Matrix4,cI=new Er.Matrix4,uI=new Er.Matrix4,Ma;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ma||(Ma={}));var Ea=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Er.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Er.Matrix4;this.matrixWorldRigid=new Er.Matrix4;this.shearScale=new Er.Matrix4;this.shearScaleInv=new Er.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Er.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)Ma.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ma.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,qx.SVD)(o),l=lI.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=cI.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=uI.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(t,o){this.updateWorldMatrix(!0,!1);let i=new Er.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Er.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var rf=class extends Ea($x.Object3D){},dI=n=>n.type==="Mesh",tn=class extends rf{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new tn(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return 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}};var Ka=require("three");var Xu=require("three");var sr=require("three");var At=require("three"),xi=new At.Vector3,bi=new At.Vector3,Na=new At.Matrix4,Xx=[new At.Vector3(-1,1,1),new At.Vector3(-1,-1,1),new At.Vector3(1,-1,1),new At.Vector3(1,1,1),new At.Vector3(-1,1,-1),new At.Vector3(-1,-1,-1),new At.Vector3(1,-1,-1),new At.Vector3(1,1,-1)],pI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],fI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Yx=(n,r,e)=>{n.updateEntityBoxSize(xi,bi),Na.copy(r).multiply(n.matrixWorld),bi.x===0&&bi.y===0&&bi.z===0?e.push(new At.Vector3(xi.x,xi.y,xi.z).applyMatrix4(Na)):Xx.forEach(t=>{e.push(t.clone().multiply(bi).add(xi).applyMatrix4(Na))})},dl=class extends At.Box3{constructor(){super(...arguments);this.matrix=new At.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new At.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new At.Vector3);return}Yx(a,t,i)}}):Yx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Na.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(bi).multiplyScalar(.5),this.getCenter(xi),Na.copy(this.matrix).setPosition(xi),this.vertices=Xx.map(e=>e.clone().multiply(bi).applyMatrix4(Na))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=pI.map(([e,t])=>new At.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new At.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=fI.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var no={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var Xt=require("three"),nf=class extends Xt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];t&&t.equals(h)||(e.push(h),t=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var af=.001;function sf(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=af}function of(n,r){let e=new Xt.Vector3(...n.position),t=new Xt.Vector3(...n.controlNext.position),o=new Xt.Vector3(...r.controlPrevious.position),i=new Xt.Vector3(...r.position);return sf(e,t,i)&&sf(e,o,i)}function Eu(n){let r=n.points.map(u=>new Xt.Vector3(...u.data.position)),e=[n.points[0]],t=new Xt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)sf(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Xt.Vector3(...p.position),f=new Xt.Vector3(...p.controlPrevious.position),h=new Xt.Vector3(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!n.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,S=e[y].data,P=e[b].data,C=new Xt.Vector3(...S.position),v=new Xt.Vector3(...P.position),A=C.clone().sub(d).normalize(),T=v.clone().sub(d).normalize();Object.assign(m,{prevDir:A,nextDir:T});let g=of(S,p),D=of(p,P);if(!g||!D)s[u]={...m,removedLength:0};else{let E=A.clone().add(T).normalize(),M=E.clone().cross(A).length()/A.dot(E);s[u]={...m,tan:M,removedLength:p.roundness/M}}}for(let u=0;u<i;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<i;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!of(e[p].data,e[d].data))f.position.distanceTo(h.position)>af&&(m=new Xt.CubicBezierCurve3(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)>af&&(m=new Xt.CubicBezierCurve3(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),S=f.distanceTo(h)/2,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(S,2))).add(b),C=y.clone().multiplyScalar(-m).add(P),v=d.distanceTo(C)/d.distanceTo(b),A=p.prevDir.clone().multiplyScalar(v*d.distanceTo(f)).add(d),T=A.clone().lerp(C,2),g=f.clone().lerp(A,4/3),D=h.clone().lerp(T,4/3);l[2*u]=new Xt.CubicBezierCurve3(f,g,D,h)}let c=new nf;return l.forEach(u=>{u&&c.add(u)}),c}var je;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(je||(je={}));var Da=n=>je.is(n),hI={type:"completeState",isfromEntity:!0},mI=["x","y","z"],lf=new sr.Vector3,yI=new sr.Vector3().set(0,1,0),_a=n=>class extends Ea(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new dl;this._recursiveBBox=new dl;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(je.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(je.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(je.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)yi.toOps(this.data,a.data).forEach(l=>{let c=pa.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=yi.patch(this.data,a),yi.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Da(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(je.is(o[i]))return o[i];if(je.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&je.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Da(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{je.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Da(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Da(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Da(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Da(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*sr.MathUtils.RAD2DEG,this.rotation.y*sr.MathUtils.RAD2DEG,this.rotation.z*sr.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return sa(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,mI[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(lf.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(sr.MathUtils.DEG2RAD),this.rotation.setFromVector3(lf),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??In.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)je.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{je.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return sa(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Fe(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=ct.zoom(d,t.path.slice(2));if(f)for(let h in t.props)t.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(t.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=ct.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,yi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Fe(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let f=i.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=t.props[d],f.updateState(vo.apply(f.component.data,f.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let f=ct.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let h=t.props;if(f)for(let[m,y]of Object.entries(t.props))y===void 0&&(h===t.props&&(h={...t.props}),h[m]=f[m]);t={...t,props:h}}d.overrideData=wa.resolve(o.overrides,u),d.updateByOp(t,gt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Ao.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Ao.rootOverrideProps)if(Fe(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=vo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=vo.filterOp(p.overrideData,t);if(d){let f;s===p.data&&t===d?f=o:f=gt.applySimple(p.data,d),p.updateByOp(d,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!eo.is(t.props.type)&&no.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){no.changeEntityProptotype(this,o,i);for(let a of this.children)je.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),t.path[0]==="morphTargetInfluences"&&t.type===0){let s=o.morphTargetInfluences.get(t.path[1])?.data.name;s&&this.updateMorphInfluences(s,i.shared.getVariable(t.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Fe(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Fe(t.path,["cloner"])!==null){let a=gt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=t.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=Eu(c.geometry.path),p=(i+a)%1;i+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 sr.Matrix4;l.updateMatrixWorld();let h=new sr.Matrix4().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new sr.Matrix4().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),S=new sr.Matrix4().lookAt(d,b,yI),P=lf.setFromEuler(new sr.Euler().setFromRotationMatrix(S)).multiplyScalar(sr.MathUtils.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(hI)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof no.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new no.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};var Ln=require("three");var it=require("three"),Qx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=it.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=n.parameters,h;return l===0?(h=new it.BufferGeometry,h.setAttribute("position",new it.Float32BufferAttribute([],3))):p||f?h=new pl(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,f):h=new it.CylinderGeometry(c,u,t,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/r),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Rn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Kx(n){return new it.Vector2(n.y,-n.x)}var pl=class extends it.BufferGeometry{constructor(r,e,t,o,i,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],S=0,P=t/2,C=new it.Vector3,v=new it.Vector3;f&&r==0&&(r=c),f&&e==0&&(e=u);let A=new it.Vector2(r,P),T=new it.Vector2(e,-P),g=null,D=null,E=null,M=null,N=A.clone().sub(T),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let k=A.clone();k.x-=_;let L=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),j=Math.tan(L/2),H=F+j,q=d?H:j,re=d?H:F;if(c=Math.min(c,(r-B)/q,N.length()/H),u=Math.min(u,(e-V)/re,N.length()/H),c>0){let Q=c/F;g=A.clone().sub(new it.Vector2(Q,c)),d&&(E=g.clone(),E.x-=_-H*c),A.sub(N.clone().setLength(Q))}if(u>0){let Q=u/j;D=T.clone().sub(new it.Vector2(Q,-u)),T.add(N.clone().setLength(Q)),d&&(M=D.clone(),M.x-=_-H*u,k.sub(N.clone().setLength(Q)))}N=A.clone().sub(T);let ee=N.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new it.Vector2(Math.sin(le),Math.cos(le));M&&D?(te($,ue,ne,L,u,M,-1,!0),te($,ue,ne,W,u,D,-1,!1)):D?(K($,ne,D.x,0,-1),te($,ue,ne,W,u,D,-1,!1)):a||K($,ne,e,V,-1);let ce=Kx(N).normalize();if(Rn(ce,ne,C),!ee)for(let ae=0;ae<=i;ae++){let ye=ae/i,fe=N.clone().multiplyScalar(ye).add(T);Rn(fe,ne,v),m.push(v.x,v.y,v.z),y.push(C.x,C.y,C.z),b.push(ue,.5+v.y/t),$.push(S++)}if(E&&g?(te($,ue,ne,L,c,g,1,!1),te($,ue,ne,W,c,E,1,!0)):g?(te($,ue,ne,L,c,g,1,!1),K($,ne,g.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Kx(N).multiplyScalar(-1).normalize();Rn(ae,ne,C);for(let ye=0;ye<=i;ye++){let fe=ye/i,me=N.clone().multiplyScalar(-fe).add(k);Rn(me,ne,v),m.push(v.x,v.y,v.z),y.push(C.x,C.y,C.z),b.push(ue,.5+v.y/t),$.push(S++)}}d&&!a&&$.push($[0]),X.push($)}for(let Q=0;Q<X.length-1;Q++)for(let $=0;$<X[0].length-1;$++){if(a&&d&&$==i)continue;let ue=X[Q][$],le=X[Q+1][$],ne=X[Q+1][$+1],ce=X[Q][$+1],ae=m[ne*3+0],ye=m[ne*3+2];h.push(ue,le,ce),(ae!=0||ye!=0)&&h.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new it.Float32BufferAttribute(m,3)),this.setAttribute("normal",new it.Float32BufferAttribute(y,3)),this.setAttribute("uv",new it.Float32BufferAttribute(b,2));function te(Q,$,ue,le,ne,ce,ae,ye){for(let fe=0;fe<p+1;fe++){let me=fe/p,be=ae<0?me:1-me;ye&&(be-=1),be*=le;let ge=new it.Vector2(Math.sin(be),Math.cos(be)*ae),O=ge.clone().multiplyScalar(ne).add(ce);Rn(O,ue,v),m.push(v.x,v.y,v.z),Rn(ge,ue,C),y.push(C.x,C.y,C.z),b.push($,.5+v.y/t),Q.push(S++)}}function K(Q,$,ue,le,ne){let ce=new it.Vector3,ae=new it.Vector2,ye=[ue,le];ne<0&&ye.reverse();for(let fe of ye)ae.set(fe,P*ne),Rn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),b.push(.5,.5),Q.push(S++)}function Z(Q,$,ue){let le=new it.Vector2(Math.sin(ue),Math.cos(ue)),ne=new it.Vector2(-Math.cos(ue),Math.sin(ue)),ce=new it.Vector3,ae=Q<0?(me,be,ge)=>h.push(me,be,ge):(me,be,ge)=>h.push(me,ge,be),ye=new it.Vector2((r+e+B+V)/4,0);Rn(ye,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),b.push(.5,.5);let fe=S++;for(let me of $){let be=m.slice(me*3,me*3+3);m.push(...be),y.push(ne.x,0,ne.y);let ge=b.slice(me*2,me*2+2);b.push(...ge),S++}for(let me=fe+1;me<S-1;me++)ae(fe,me,me+1);ae(fe,S-1,fe+1)}}};var Zx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=Ln.MathUtils.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new Ln.BufferGeometry,d.setAttribute("position",new Ln.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new pl(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new Ln.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var xr=require("three"),Jx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s===0?c=new xr.BoxGeometry(r,e,t,o,i,a):c=new uf(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},cf=Math.PI/2,uf=class extends xr.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,t,e,r,a,i),h("z","y","x",1,-1,t,e,-r,a,i),h("x","z","y",1,1,r,t,e,o,a),h("x","z","y",1,-1,r,t,-e,o,a),h("x","y","z",1,-1,r,e,t,o,i),h("x","y","z",-1,-1,r,e,-t,o,i),s>0&&(m("z","y","x",-1,-1,1,t,e,r,a),m("z","y","x",1,-1,-1,t,e,r,a),m("z","y","x",-1,1,-1,t,e,r,a),m("z","y","x",1,1,1,t,e,r,a),m("x","y","z",-1,-1,-1,r,e,t,o),m("x","y","z",1,-1,1,r,e,t,o),m("x","y","z",-1,1,1,r,e,t,o),m("x","y","z",1,1,-1,r,e,t,o),m("y","x","z",-1,-1,1,e,r,t,i),m("y","x","z",1,-1,-1,e,r,t,i),m("y","x","z",1,1,1,e,r,t,i),m("y","x","z",-1,1,-1,e,r,t,i),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 xr.Float32BufferAttribute(u,3)),this.setAttribute("normal",new xr.Float32BufferAttribute(p,3)),this.setAttribute("uv",new xr.Float32BufferAttribute(d,2));function h(b,S,P,C,v,A,T,g,D,E){let M=(A-2*s)/D,N=(T-2*s)/E,_=A/2-s,B=T/2-s,V=g/2,k=D+1,L=E+1,W=0,F=new xr.Vector3;for(let j=0;j<L;j++){let H=j*N-B;for(let q=0;q<k;q++){let re=q*M-_;F[b]=re*C,F[S]=H*v,F[P]=V,u.push(F.x,F.y,F.z),F[b]=0,F[S]=0,F[P]=g>0?1:-1,p.push(F.x,F.y,F.z),d.push(q/D),d.push(1-j/E),W+=1}}for(let j=0;j<E;j++)for(let H=0;H<D;H++){let q=f+H+k*j,re=f+H+k*(j+1),ee=f+(H+1)+k*(j+1),X=f+(H+1)+k*j;c.push(q,re,X),c.push(re,ee,X)}f+=W}function m(b,S,P,C,v,A,T,g,D,E){let M=(T-2*s)/E,N=T/2-s,_=g/2-s,B=D/2,V=E+1,k=0,L=new xr.Vector3,W=new xr.Vector3;for(let F=0;F<l+1;F++){let j=F/l*cf,H=Math.sin(j)*s,q=(1-Math.cos(j))*s,re=Math.sin(j),ee=Math.cos(j);L[S]=(_+H)*v,L[P]=(B-q)*A,W[b]=0,W[S]=re*Math.sign(L[S]),W[P]=ee*Math.sign(L[P]);for(let X=0;X<V;X++){let te=X*M-N;L[b]=te*C,u.push(L.x,L.y,L.z),p.push(W.x,W.y,W.z),d.push(X/E),d.push(0),k+=1}}for(let F=0;F<l;F++)for(let j=0;j<E;j++){let H=f+j+V*F,q=f+j+V*(F+1),re=f+(j+1)+V*(F+1),ee=f+(j+1)+V*F;c.push(H,q,ee),c.push(q,re,ee)}f+=k}function y(b,S,P){let C=new xr.Vector3,v=new xr.Vector3(r/2,e/2,t/2);v.subScalar(s);let A=[],T=b*S*P>0?(D,E,M)=>c.push(D,E,M):(D,E,M)=>c.push(D,M,E);for(let D=0;D<=l;D++){let E=[],M=cf*(1-D/l),N=Math.cos(M),_=Math.sin(M),B=0;for(let V=0;V<=D;V++){let k=Math.cos(B),L=Math.sin(B);C.x=N*k,C.y=_,C.z=N*L;let W=v.clone().addScaledVector(C,s);u.push(b*W.x,S*W.y,P*W.z),p.push(b*C.x,S*C.y,P*C.z),d.push(0,0),E.push(f++),B+=cf/D}A.push(E)}let g=A.length-1;for(let D=0;D<g;D++){let E=A[D],M=A[D+1],N=E.length-1;T(E[0],M[1],M[0]);for(let _=1;_<=N;_++)T(E[_-1],E[_],M[_]),T(E[_],M[_+1],M[_])}}}};var Tt=require("three"),Vn=class extends Tt.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Tt.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Tt.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Tt.Float32BufferAttribute(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],h=new Tt.Vector3,m=h.clone(),y=new Tt.Triangle,b=i*o,S=o-b,P=a+1,C=new Tt.Vector3,v=(F,j)=>C.subVectors(F,j).normalize(),A=(F,j)=>Array(F).fill(void 0).map(j),T=A(r.length/3,(F,j)=>new Tt.Vector3().fromArray(r,j*3).setLength(o)),g=[],D=1e6;for(let F=0;F<T.length;F++){let j=T[F],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=j.distanceToSquared(T[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=g[q]?.includes(F)==!0;ee<=X&&K.push(q+ +ue*D),Z=H.findIndex(le=>le[0]==re)}g.push(K)}let E=[];{let F=0,j=0,H,q,re=f==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[F,j]=[H+X+ee+2,q+X+ee+3],E.push(H,q,...re?[j,H]:[F,q],j,F),[H,q]=[F,j];E.push(H,q,H+a+2)}}let M=h.clone(),N=h.clone(),_=h.clone(),B=h.clone(),V=h.clone(),k=[],L=A(T.length,()=>A(f,()=>h.clone()));for(let F=0;F<T.length;F++){h.copy(T[F]).normalize(),M.copy(h).multiplyScalar(S);let j=g[F];for(let K=0;K<j.length;K++){let Z=j[K],Q=j[(K+1)%f];y.setFromPointsAndIndices(T,F,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(M,L[F][K])}let H=[],q=[],re=[],ee=new Tt.Vector3;a==0&&[...L[F]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=L[F][Q],ue=L[F][K];h.copy($).sub(M),m.copy(ue).sub(M);let le=M.angleTo(h),ne=h.angleTo(m),ce=Math.cos(le)*b;a==0?N.copy(ee):N.copy(M).setLength(S+ce),q.push(ce);let ae=[N,$,ue];for(let ye=0;ye<2;ye++){let fe=ae[ye],me=ae[ye+1];B.subVectors(fe,M),V.subVectors(me,M),_.crossVectors(B,V).normalize();for(let be=0;be<P;be++){let ge=[le,ne][ye]*be/P;h.copy(B).applyAxisAngle(_,ge).add(M),H.push(h.clone()),ye&&(v(h,M),Z.push([be==0?fe:h.clone(),C.clone()]))}ye&&(v(me,M),Z.push([me,C.clone()]))}re.push(Z)}k.push(re);let X=2*P,te=2;for(let K=0;K<f;K++){let Z=X*K,Q=X*((K+1)%f),$=[H[Z]];for(let le=1;le<P;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)h.lerpVectors(B,V,ne/(ce+1)),h.sub(M).setLength(q[K]).add(M),$.push(h.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=E.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(v(le,M),[C.x,C.y,C.z])).flat())}}let W=[];for(let F=0;F<g.length;F++)for(let j=0;j<f;j++){let H=g[F][j];if(H<D){let q=g[H].findIndex(X=>X%D==F),re=k[F][j],ee=k[H][q];for(let X=0;X<P;X++){let te=re[X],K=ee[P-X],Z=re[X+1],Q=ee[P-(X+1)];[te,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}W.push(re[0][0],ee[P][0],re[P][0],ee[0][0])}}for(;W.length;){let F,j,H,q;[F,j]=W.splice(0,2);let re=[F];for(;F!=j;)re.push(j),H=W.indexOf(j),q=H%2,j=W.splice(H-q,2)[1-q];C.subVectors(re[0],re[1]).cross(h.subVectors(re[0],re[2])).normalize();let ee=C.dot(re[0])<0;ee&&C.negate();for(let X=1;X<=re.length-2;X++)[re[X+ +ee],re[X+1-+ee],re[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(C.x,C.y,C.z)})}}function p(){let d=new Tt.Vector3;for(let T=0;T<s.length;T+=3){d.x=s[T+0],d.y=s[T+1],d.z=s[T+2];let g=v(d)/2/Math.PI+.5,D=A(d)/Math.PI+.5;l.push(g,1-D)}let f=new Tt.Vector3,h=new Tt.Vector3,m=new Tt.Vector3,y=new Tt.Vector3,b=new Tt.Vector2,S=new Tt.Vector2,P=new Tt.Vector2,C=(T,g,D,E)=>{E<0&&T.x===1&&(l[g]=T.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let T=0,g=0;T<s.length;T+=9,g+=6){f.set(s[T+0],s[T+1],s[T+2]),h.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),b.set(l[g+0],l[g+1]),S.set(l[g+2],l[g+3]),P.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=v(y);C(b,g+0,f,D),C(S,g+2,h,D),C(P,g+4,m,D)}for(let T=0;T<l.length;T+=6){let g=l[T+0],D=l[T+2],E=l[T+4],M=Math.max(g,D,E),N=Math.min(g,D,E);M>.9&&N<.1&&(g<.2&&(l[T+0]+=1),D<.2&&(l[T+2]+=1),E<.2&&(l[T+4]+=1))}function v(T){return Math.atan2(T.z,-T.x)}function A(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(r){return new Vn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var e0=require("three"),t0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new fl(r*.5,i,a):new e0.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},fl=class extends Vn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,r,e,t),this.type=l}static fromJSON(r){return new fl(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ee=require("three"),hl=1e-12,Ba=class{constructor(r){this.position=new Ee.Vector2;this.startPosition=new Ee.Vector2;this.uuid=Ee.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Ba(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ra=class extends Ba{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ra(this.parent).copy(this)}},io=class extends Ba{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ra(this),new Ra(this))}static create(e,t){let o=new io(e,new Ee.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new io(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ee.Vector2,t=new Ee.Vector2){let[o,i]=this.computeTangents();return o&&i&&(r0(o,e),r0(i,t)),[e,t]}computeTangent(e=new Ee.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ee.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function r0(n,r=new Ee.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var pf=n=>n,La=new Ee.Vector2,Nu=new Ee.Vector2,gI=new Ee.Vector2,xI=new Ee.Vector2,bI=new Ee.Vector2,vI=new Ee.Vector2,n0=new Ee.Vector3,i0=new Ee.Vector3;function a0(n){let r=new Ee.Vector2;r.addVectors(n.v0,La.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ee.Vector2;return e.addVectors(n.v2,Nu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ee.CubicBezierCurve(n.v0,r,e,n.v2)}function ml(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function SI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function wI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function ff(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function s0(n,r,e){return o0(n,r)&&o0(r,e)&&df(n.position,r.position,e.position)}function df(n,r,e){return La.copy(r).sub(n).cross(Nu.copy(e).sub(n))===0}function l0(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function c0(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function u0(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return ff(r,n,e)>Math.PI&&(u*=-1),ml(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function hf(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function o0(n,r){return df(n.position,n.controls[1].position,r.position)&&df(n.position,r.controls[0].position,r.position)}function d0(n,r,e,t,o=.5){let i=La.subVectors(r,n).multiplyScalar(o).add(n),a=Nu.subVectors(e,r).multiplyScalar(o).add(r),s=gI.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=xI.subVectors(a,i).multiplyScalar(o).add(i),u=bI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=vI.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function p0(n,r,e=12,t=!0){let o=i0.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=pf(r[l]),u=La,p=zn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ee.CubicBezierCurve||c instanceof Ee.QuadraticBezierCurve||c instanceof Ee.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&wI(i,o))continue;i===void 0&&(i=n0),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function f0(n,r,e,t=12,o=!0){let i=i0.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=pf(r[l]),p=La,d=zn(u,t);s.push(d);for(let f=0;f<=d;f++)if(u instanceof Ee.CubicBezierCurve||u instanceof Ee.QuadraticBezierCurve||u instanceof Ee.LineCurve){if(u.getPoint(f/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=n0:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function mf(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=zn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=zn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=zn(n[0].roundedCurveCorner,r)*.5),t}function zn(n,r=12){return n&&n instanceof Ee.EllipseCurve?r*2:n&&(n instanceof Ee.LineCurve||n instanceof Ee.LineCurve3)?1:n&&n instanceof Ee.SplineCurve?r*n.points.length:r}function h0(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=pf(r[a]),l=zn(s,e),c=La;for(let u=0;u<=l;u++)if(s instanceof Ee.CubicBezierCurve||s instanceof Ee.QuadraticBezierCurve||s instanceof Ee.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&SI(o,c,hl))continue;o===void 0&&(o=Nu),o.copy(c),n.push(c.x,c.y),i++}}return ml(n[0],n[n.length-2],hl)&&ml(n[1],n[n.length-1],hl)&&(n.pop(),n.pop()),t&&i>1&&!(ml(n[i-1],n[1],hl)&&ml(n[i-2],n[0],hl))&&(n.push(n[0],n[1]),i++),n}var yf=new Ye.Vector2,PI=new Ye.Vector2,CI=new Ye.Vector2,OI=new Ye.Vector2,AI=new Ye.Vector2,TI=new Ye.Vector2,$e=class extends Ye.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ye.Plane(new Ye.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ye.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new $e;return i.isClosed=e.isClosed,i.points=e.points.map(a=>io.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>$e.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)i+=c;else return u+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=yf.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ye.MathUtils.generateUUID()){let i;e instanceof Ye.Vector2?i=e:i=new Ye.Vector2(e,t);let a=new io(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return p0(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=mf(this.points,e,!1),this.roundedCurveDivisions=mf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return f0(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),h0(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=zn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(hf(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(yf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){hf(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&s0(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),S=Math.min(c,y*.499),P=Math.min(b,S),C=1-P/m,v=P/y,A=p.getPointAt(C,yf),T=d.getPointAt(v,PI);this._subSplitCurve(p,f,C,A,void 0),this._subSplitCurve(d,h,v,void 0,T);let g;if(this.useCubicForRoundedCorners){let D=ff(A,a.position,T)/2,E=Math.tan(D)*A.distanceTo(a.position),[M,N]=l0(A,T,E,CI,OI),_=c0(M,N,a.position),[B,V]=u0(_,A,T,E,AI,TI);g=new Ye.CubicBezierCurve(A.clone(),B.clone(),V.clone(),T.clone())}else g=new Ye.QuadraticBezierCurve(A.clone(),a.position.clone(),T.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+t,0,g),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Ye.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=d0(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new $e(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],f=new io(Ye.MathUtils.generateUUID(),new Ye.Vector2(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 i=new $e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Ye.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Ye.QuadraticBezierCurve&&(a[l]=a0(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 Ye.CubicBezierCurve?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof Ye.LineCurve&&(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 Ye.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Ye.LineCurve&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Ye.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new $e;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var xf=Math.PI*2;function gf({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function II(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function m0(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function MI(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,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/i*s,y=h*-i/o*a,b=m+(n+e)/2,S=y+(r+t)/2,P=(a-m)/o,C=(s-y)/i,v=(-a-m)/o,A=(-s-y)/i,T=m0(1,0,P,C),g=m0(P,C,v,A);return!c&&g>0&&(g-=xf),c&&g<0&&(g+=xf),{centerx:b,centery:S,ang1:T,ang2:g}}function y0({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=MI(n,r,e,t,o,i,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 S=Math.max(Math.ceil(b),1);h/=S;for(let P=0;P<S;P++)l.push(II(f,h)),f+=h;return l.map(P=>{let{x:C,y:v}=gf(P[0],o,i,m,y),{x:A,y:T}=gf(P[1],o,i,m,y),{x:g,y:D}=gf(P[2],o,i,m,y);return{x1:C,y1:v,x2:A,y2:T,x:g,y:D}})}var vi=require("three");var qe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(qe||(qe={}));var bt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(bt||(bt={}));function Pe(n,r){if(!n)throw r||"Assertion Failed!"}var Se=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),yl=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Du=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Va=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),g0=function(){function n(){var r=new Va,e=new yl,t=new Du(0),o=new Du(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Du(0),t=new Du(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;Pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;Pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Va,e=new Va,t=new yl,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Va;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new yl;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new yl;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Va;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new yl;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&Se.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&Se.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){Pe(o.prev===i),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===i&&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=t,c=t;(l=c.next)!==t;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),x0=function(){function n(){this.handle=null}return n}(),b0=function(){function n(){this.key=null,this.node=0}return n}(),EI=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new x0,this.handles[t]=new b0;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,Pe(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new x0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new b0}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;Pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),bf=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),v0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),NI=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new v0,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new v0;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),DI=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?Se.vertLeq(i.Org,a.Org)?Se.edgeSign(a.Dst,i.Org,a.Org)<=0:Se.edgeSign(i.Dst,a.Org,i.Org)>=0:Se.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return Se.edgeSign(i.Dst,o,i.Org)>=0;var s=Se.edgeEval(i.Dst,o,i.Org),l=Se.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){Pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new bf;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do Pe(Se.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=Se.vertL1dist(e,r),i=Se.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(Se.vertLeq(o.Org,i.Org)){if(Se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;Se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(Se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(Pe(!Se.vertEq(o.Dst,i.Dst)),Se.vertLeq(o.Dst,i.Dst)){if(Se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(Se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new Va,f,h;if(Pe(!Se.vertEq(c,l)),Pe(Se.edgeSign(l,r.event,a)<=0),Pe(Se.edgeSign(c,r.event,s)>=0),Pe(a!==r.event&&s!==r.event),Pe(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(Se.vertLeq(a,s)){if(Se.edgeSign(c,a,s)>0)return!1}else if(Se.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),Se.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)),Se.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),f=Se.vertLeq(a,s)?a:s,Se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),Se.vertEq(d,a)||Se.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!Se.vertEq(l,r.event)&&Se.edgeSign(l,r.event,d)>=0||!Se.vertEq(c,r.event)&&Se.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,h,!0),!0):(Se.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),Se.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),Se.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),Se.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}Se.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,Se.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!Se.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}Pe(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(Pe(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),Se.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new bf;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,Se.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=Se.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);Pe(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new bf,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new NI(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++t===1)),Pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,Se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new EI(i,Se.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,Pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!Se.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),_I=function(){function n(){this.mesh=new g0,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=qe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,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)i=e.coords[y],c[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)i=e.coords[b],i<c[b]&&(c[b]=i,h[b]=e),i>l[b]&&(l[b]=i,f[b]=e);var S=0;if(l[1]-c[1]>l[0]-c[0]&&(S=1),l[2]-c[2]>l[S]-c[S]&&(S=2),c[S]>=l[S]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=h[S],o=f[S],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;Se.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;Se.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(Se.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(Se.edgeGoesLeft(o.Lnext)||Se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(Se.edgeGoesRight(t.Lprev)||Se.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===bt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1;if(e===bt.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new g0),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=qe.ODD),e===void 0&&(e=bt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),DI.computeInterior(this,a);var s=this.mesh;return e===bt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===bt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function ao(n){var r=n.windingRule,e=r===void 0?qe.ODD:r,t=n.elementType,o=t===void 0?bt.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new _I;n.edgeCreateCallback&&(b.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(b.vertexIdCallback=n.vertexIdCallback);for(var S=0;S<d.length;S++)b.addContour(l||2,d[S]);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 e5=qe.ODD,t5=qe.NONZERO,r5=qe.POSITIVE,o5=qe.NEGATIVE,n5=qe.ABS_GEQ_TWO,i5=bt.POLYGONS,a5=bt.CONNECTED_POLYGONS,s5=bt.BOUNDARY_CONTOURS;var so=require("three");var _u=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*_u.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*_u.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},gl=_u;gl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var xl=class{constructor(r=[],e=(t,o)=>t<o?-1:t>o?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;let r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){let{data:e,compare:t}=this,o=e[r];for(;r>0;){let i=r-1>>1,a=e[i];if(t(o,a)>=0)break;e[r]=a,r=i}e[r]=o}_down(r){let{data:e,compare:t}=this,o=this.length>>1,i=e[r];for(;r<o;){let a=(r<<1)+1,s=a+1;if(s<this.length&&t(e[s],e[a])<0&&(a=s),t(e[a],i)>=0)break;e[r]=e[a],r=a}e[r]=i}};function vf(n,r,e=1,t=!1){let o=1/0,i=1/0,a=-1/0,s=-1/0;for(let[S,P]of n[0])S<o&&(o=S),P<i&&(i=P),S>a&&(a=S),P>s&&(s=P);let l=a-o,c=s-i,u=Math.max(e,Math.min(l,c));if(u===e){let S=[o,i];return S.distance=0,S.distance}let p=new xl([],(S,P)=>P.max-S.max),d=RI(n),f=new Bu(o+l/2,i+c/2,0,n);f.d>d.d&&(d=f);let h=2;function m(S,P,C){let v=new Bu(S,P,C,n);if(h++,v.max>d.d+e&&p.push(v),v.d>d.d&&(d=v,t&&console.log(`found best ${Math.round(1e4*v.d)/1e4} after ${h} probes`),d.d>r))return r}let y=u/2;for(let S=o;S<a;S+=u)for(let P=i;P<s;P+=u)m(S+y,P+y,y);for(;p.length;){let{max:S,x:P,y:C,h:v}=p.pop();if(S-d.d<=e)break;y=v/2,m(P-y,C-y,y),m(P+y,C-y,y),m(P-y,C+y,y),m(P+y,C+y,y)}t&&console.log(`num probes: ${h}
3
+ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Bu(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=BI(n,r,t),this.max=this.d+this.h*Math.SQRT2}function BI(n,r,e){let t=!1,o=1/0;for(let i of e)for(let a=0,s=i.length,l=s-1;a<s;l=a++){let c=i[a],u=i[l];c[1]>r!=u[1]>r&&n<(u[0]-c[0])*(r-c[1])/(u[1]-c[1])+c[0]&&(t=!t),o=Math.min(o,LI(n,r,c,u))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function RI(n){let r=0,e=0,t=0,o=n[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,t+=(c[1]+u[1])*p,r+=p*3}let i=new Bu(e/r,t/r,0,n);return r===0||i.d<0?new Bu(o[0][0],o[0][1],0,n):i}function LI(n,r,e,t){let o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){let l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}var bl={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=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Gn=class extends so.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=qe.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(M=>{let N=M.extractShapePointsToFlatArray([],i),_=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],k=N[B-0];_.push(V,k)}return _}),p=[],d=[];for(let M=0;M<c.length;M+=2)d.push([c[M],c[M+1]]);p.push(d);for(let M=0;M<u.length;M++){let N=u[M],_=[];for(let B=0;B<N.length;B+=2)_.push([N[B],N[B+1]]);p.push(_)}let f;e.isText?f=new so.Box2().setFromPoints(e.points.map(N=>N.position)).getSize(new so.Vector2).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,t/2),this._bevelSegments=Math.floor(a));let h;try{h=ao({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=bl}let m;try{m=ao({windingRule:qe.ODD,elementType:bt.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 M=0;M<m.elements.length;M++){let N=m.elements[M],_=M%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let M=0;M<m.vertexIndices.length;M++){let N=m.vertexIndices[M],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let M=0;M<m.vertices.length;M++){let N=m.vertices[M];h.vertices.push(N)}}let b=1/0,S=-1/0,P=1/0,C=-1/0;for(let M=0,N=h.vertexCount;M<N;M++){let _=M*2,B=h.vertices[_+0],V=h.vertices[_+1];B<b&&(b=B),B>S&&(S=B),V<P&&(P=V),V>C&&(C=V)}this._minX=b,this._minY=P,this._width=S-b,this._height=C-P,this._buffer=new gl(this._computeBufferEstimatedSize(h));let v=[],A=[];for(let M=h.elementCount-1;M>=0;M--){let N=M>=y,_=M*2,B=h.elements[_+0],V=h.elements[_+1],k=B+V,L={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=k-1,j=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=h.vertices[F*2+0],Z=h.vertices[F*2+1],Q=h.vertices[W*2+0],$=h.vertices[W*2+1],ue=h.vertices[j*2+0],le=h.vertices[j*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let ye=Q-ue,fe=$-le,me=Math.sqrt(ye*ye+fe*fe);ye/=me,fe/=me,L.normals[te*2+0]=-fe,L.normals[te*2+1]=ye,L.concave[te]=ne*fe-ce*ye>0;let be=h.vertexIndices[W];if(Array.isArray(be))L.continuous[te]=!1;else{let[ge,O]=this._shape.getCurveIndexFromVertexId(be-1,!0);if(O>0&&O<1)L.continuous[te]=!0;else{let ie=O===1?ge+1:ge-1;ie=(ie+H)%H;let Ve=O===1?0:1,ke=this._shape.roundedCurves[ge].getTangent(O),ze=this._shape.roundedCurves[ie].getTangent(Ve);L.continuous[te]=ke.dot(ze)>.95}}N&&(L.normals[te*2+0]*=-1,L.normals[te*2+1]*=-1),[F,W,j]=[W,j,j+1],j>=k&&(j-=V)}while(j!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(B*2,k*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(B*2,k*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let ye=ae*2,fe=(ae-1+V)%V*2,me=h.vertices[L.start*2+ye+0],be=h.vertices[L.start*2+ye+1],ge=-L.normals[fe+0]*Z,O=-L.normals[fe+1]*Z,ie=-L.normals[ye+0]*Z,Ve=-L.normals[ye+1]*Z;if(L.concave[ae]||!L.concave[ae]&&N){let ke=Math.atan2(O,ge),ze=Math.atan2(Ve,ie);ze>ke&&(ze-=Math.PI*2);let Oe=ze-ke;if(L.continuous[ae]||N){let Lt=ke+Oe/2,De=Math.cos(Lt)*Z,_t=Math.sin(Lt)*Z;Q[2*ne+0]=me+De*(N?-1:1),Q[2*ne+1]=be+_t*(N?-1:1),le[ne]=ae,ne++}else{let Lt=Math.max(1,Math.floor(i/4*Math.abs(Oe)/Math.PI));for(let De=0;De<=Lt;De++){let _t=ke+Oe*(De/Lt),Vt=Math.cos(_t)*Z,ii=Math.sin(_t)*Z;Q[2*ne+0]=me+Vt,Q[2*ne+1]=be+ii,le[ne]=ae,ne++}}}else Q[2*ne+0]=me+ge,Q[2*ne+1]=be+O,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=me,Q[2*ne+1]=be,le[ne]=ae,ne++,Q[2*ne+0]=me+ie,Q[2*ne+1]=be+Ve,le[ne]=ae,ue[ae]=ne,ne++}let ce=ao({windingRule:qe.POSITIVE,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,me=le[fe],be=le[(fe+1)%le.length];ae.idx=[me,be],ae.Sym.idx=[be,me]},vertexIdCallback:ae=>{let ye=ae.Lprev.idx;return[ye?ye[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[ye,fe]=ce.vertexIndices[ae];if(ye===fe)continue;let me=fe;fe<ye&&(me+=V);for(let be=ye;be<me;be++){let ge=be%V,O=(be+1)%V;if(!L.continuous[ge]||!L.continuous[O]){ce.vertexIndices[ae]=[ye,ge],ce.vertexIndices.splice(ae+1,0,[O,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=v.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=L.concave.length,le=0,ne=Sf(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=Sf(le,V);let ce=K.boundary.vertexIndices.findIndex(ne),ae=Z.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ne(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let ye=le,fe=0,me=this._buildBevelVert(L,K,(ce-1+Q)%Q,void 0,fe),be=this._buildBevelVert(L,Z,(ae-1+$)%$,void 0,fe),ge=me,O=be,ie,Ve,ke=!1;do{fe=(le||ue)/ue,ne=Sf(le,V);let ze=ee(K,ce,ne),Oe=ee(Z,ae,ne),Lt=ke;if(ke=!1,ze&&!Oe){for(let De=0;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie;ke=!0}else if(!ze&&Oe)for(let De=0;De<Oe;De++)Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(O.topN,ge.topP,Ve.topP),l===!1&&v.push(ge.bottomP,O.bottomN,Ve.bottomP),O=Ve;else if(ze&&Oe)if(ie=this._buildBevelVert(L,K,ce,0,fe),Ve=this._buildBevelVert(L,Z,ae,0,fe),Lt?(v.push(ge.topN,Ve.topP,O.topN),v.push(ge.topN,ie.topP,Ve.topP),l===!1&&(v.push(Ve.bottomP,ge.bottomN,O.bottomN),v.push(Ve.bottomP,ie.bottomP,ge.bottomN))):(v.push(O.topN,ge.topN,ie.topP),v.push(O.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,O.bottomN),v.push(ie.bottomP,O.bottomN,Ve.bottomP))),ge=ie,O=Ve,ze===Oe)for(let De=1;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(ge.topN,ie.topP,O.topN),v.push(O.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,O.bottomN),v.push(ie.bottomP,O.bottomN,Ve.bottomP)),ge=ie,O=Ve;else if(ze>Oe){let De=ze/Oe,_t=0;for(let Vt=1;Vt<ze;Vt++)ie=this._buildBevelVert(L,K,(ce+Vt)%Q,Vt/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie,Vt>(_t+1)*De&&(_t++,Ve=this._buildBevelVert(L,Z,(ae+_t)%$,_t/(Oe-1),fe),v.push(O.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,O.bottomN,Ve.bottomP),O=Ve)}else{let De=Oe/ze,_t=0;for(let Vt=1;Vt<Oe;Vt++)Ve=this._buildBevelVert(L,Z,(ae+Vt)%$,Vt/(Oe-1),fe),v.push(O.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,O.bottomN,Ve.bottomP),O=Ve,Vt>(_t+1)*De&&(_t++,ie=this._buildBevelVert(L,K,(ce+_t)%Q,_t/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie)}ce=(ce+ze)%Q,ae=(ae+Oe)%$,le=(le+1)%ue}while(le!==ye)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,L,v),N){let te=[];for(let K=v.length-1;K>=X+2;K-=3){let Z=v[K-2],Q=v[K-1],$=v[K-0];te.push($,Q,Z)}v.splice(X,v.length-X,...te)}if(N){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}A.push(te)}if(!N){let te=q[q.length-1],K;try{K=ao({windingRule:q.length>1?qe.POSITIVE:qe.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...A]})}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],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);v.push(Q.top,$.top,ue.top),l===!1&&v.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let T=new so.BufferAttribute(Uint32Array.from(v),1),g=new so.BufferAttribute(this._buffer.positions,3),D=new so.BufferAttribute(this._buffer.normals,3),E=new so.BufferAttribute(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,T.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(T)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],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[i]=f,f}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.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]&&t.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,b=u*2,S=p*2,P=t.boundary.vertices[y+0],C=t.boundary.vertices[y+1],v=(1-m)*this._bevel,A=(P-this._minX)/this._width,T=(C-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(A=a),T=1);let g=e.normals[b+0],D=e.normals[b+1],E=e.normals[S+0],M=e.normals[S+1];if(f){let k=E-g,L=M-D;g=g+k*(1-i),D=D+L*(1-i);let W=Math.sqrt(g*g+D*D);g/=W,D/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=N*3,B=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]=P,this._buffer.positions[_+1]=C,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=C,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A),d||(this.forPathBevel?(N+=1,_+=3,B+=2):(N+=2,_+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=C,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=M*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=C,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=M*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A)),this.vertexCache[s]=V,V}clone(){let e=new Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var za=class extends vi.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=bt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,b=i[y+0],S=i[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&S!==p&&(c=!1),u=b,p=S,!l&&!c)break}if(!l&&!c)try{s=ao({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=bl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new vi.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new vi.BufferAttribute(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let C=0,v=d;C<v;C++){let A=C*2,T=s.vertices[A+0],g=s.vertices[A+1];T<h&&(h=T),T>m&&(m=T),g<y&&(y=g),g>b&&(b=g)}let S=m-h,P=b-y;for(let C=0,v=d;C<v;C++){let A=C*2,T=s.vertices[A+0],g=s.vertices[A+1],D=(T-h)/S,E=(g-y)/P;this._positionAttribute.setXYZ(C,T,g,0),this._normalAttribute.setXYZ(C,0,0,1),this._uvAttribute.setXY(C,D,E)}for(let C=0,v=f;C<v;C++){let A=C*3,T=s.elements[A+0],g=s.elements[A+1],D=s.elements[A+2];this._indexAttribute.setX(A+0,T),this._indexAttribute.setX(A+1,g),this._indexAttribute.setX(A+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 za(this._shape,this._curveSegments);return e.userData=qo(this.userData),e}};var Ga=class extends Gn{constructor(e,t,o=0,i=12,a=3,s=qe.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Ga(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var br=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:qe.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof $e?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new $e(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new $e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new za(n.shape,o,{windingRule:a}):s=new Ga(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var lo=require("three"),w0=Math.PI*2,ja=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=lo.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=VI(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let f;return o===0?(f=new lo.BufferGeometry,f.setAttribute("position",new lo.Float32BufferAttribute([],3))):f=br.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function VI(n,r,e,t,o,i){if(t>=w0)return o>30||o%4===0?(GI(n,r,e,i),Math.round(o/4)):S0(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=y0({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?zI(n,a.x,a.y,c,o,r,e,i):S0(n,t,o,r,e,i)}function zI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(Fa(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],f=Fa(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),n.addPoint(f)}return s>0?P0(n,i,a,s):n.addPoint(Fa(0,0)),l}function S0(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(Fa(c,u))}return r<w0?i>0?P0(n,t,o,i):n.addPoint(Fa(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&C0(n,t,o,i)),1}function GI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Ru(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Ru(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Ru(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Ru(o,i-e,o+s,i-e,o-s,i-e)),t>0&&C0(n,r,e,t)}function Fa(n,r){return new io(lo.MathUtils.generateUUID(),new lo.Vector2(n,r))}function Ru(n,r,e,t,o,i){let a=Fa(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function P0(n,r,e,t){O0(n,r,e,t).forEach(i=>n.addPoint(i))}function C0(n,r,e,t){let o=O0(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function O0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new lo.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=lo.MathUtils.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}var co=require("three"),A0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new vl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Cf=new co.Uint32BufferAttribute([0,0,0],1),vl=class extends co.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=r&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new co.Vector3,m=new co.Vector3,y=h(),b=h(),S=h(),P,C,v,A,T,g,D,E,M=h(),N=h(),_=h(),B=h(),V=h(),k=h(),L=h(),W=h(),F=t-2*l+.001,j=F/a,H=Math.ceil(s*a),q=H+1,re=F/H,ee=-F/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,ye=Math.max(0,X*(q+ne)),[fe,me,be]=[3,3,2].map(yt=>Array(ye*yt).fill(0)),ge=[],O=i-l;function ie(yt,nt){let Zr=Math.PI/2;g=nt*re,E=2*Math.PI*(g%j)/j+Zr,g+=ee,D=Math.sin(E)*O,T=Math.cos(E)*O,r?yt.set(T,D,g):yt.set(T,g,D)}ie(m,-1e-10),ie(y,0),M.copy(m),ie(m,1);let Ve=m.distanceTo(y),ke=f?0:$+Q,ze=Ve*H+2*ke,Oe=Q,Lt=ze-ke;for(let yt=0;yt<=H;yt++){ie(b,yt),W.subVectors(b,M).normalize(),M.copy(b),k.copy(b).setComponent(+r+1,0).normalize(),L.crossVectors(W,k).normalize();let nt=yt===0,Zr=yt===H,tp=nt?3*Math.PI/2:K,rp=nt?Oe:Lt,sc=nt?X:ae,ai=nt?0:ye-X,wt=W.clone().multiplyScalar(nt?-$:$).add(b),op=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Rr=0;Rr<X;Rr++){let Us=Rr*te;if(N.addVectors(m.copy(k).multiplyScalar(l*Math.cos(Us)),y.copy(L).multiplyScalar(l*Math.sin(Us))),_.copy(N).normalize(),nt||Zr){f||(ue=ai+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=wt.getComponent(ar),me[ue*3+ar]=op.getComponent(ar)}),be[ue*2]=+Zr,be[ue*2+1]=Rr/u),y.copy(_).multiplyScalar(Q),S.addVectors(b,y);for(let ar=0;ar<d;ar++){let si=ar*K+tp;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(si)),y.copy(_).multiplyScalar($*Math.cos(si))),V.copy(B).normalize(),y.addVectors(S,B),B.normalize(),ue=sc+ar*X+Rr,[0,1,2].forEach(Vi=>{fe[ue*3+Vi]=y.getComponent(Vi),me[ue*3+Vi]=V.getComponent(Vi)});let lc=+nt+Math.sin(si);be[ue*2]=(rp+$*lc)/ze,be[ue*2+1]=Rr/u}}y.addVectors(b,N),ue=ce+yt*X+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=y.getComponent(ar),me[ue*3+ar]=_.getComponent(ar)}),be[ue*2]=(ke+yt*Ve)/ze,be[ue*2+1]=Rr/u}}let De=q+2*d+le,_t=1,[Vt,ii]=[+f,De-1];for(let yt=Vt;yt<=ii-1;yt++){let nt=f&&yt===ii-1;for(let Zr=0;Zr<X-1;Zr++)P=yt*X+Zr,C=P+1,v=(nt?Zr:P)+X,A=(nt?Zr+1:C)+X,yt===0?ge.push(C,A,v):yt===De-2?ge.push(P,C,v):ge.push(P,C,v,C,A,v)}this.setIndex(ge),this.setAttribute("position",new co.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new co.Float32BufferAttribute(me,3)),this.setAttribute("uv",new co.Float32BufferAttribute(be,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,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}};var T0=require("three");var I0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Sl(r*.5,i,a):new T0.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Sl=class extends Vn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Sl(r.radius,r.corner,r.cornerSides)}};var Lu=require("three"),M0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Lu.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Lu.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Eo=require("three");var rn=require("three");var pe=require("three"),Mo=new pe.Matrix4,Of=new pe.Object3D,Vu=new pe.Vector3,Fn=class extends pe.EventDispatcher{constructor(){super(),this.uuid=pe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new pe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Mo.makeRotationX(r),this.applyMatrix4(Mo),this}rotateY(r){return Mo.makeRotationY(r),this.applyMatrix4(Mo),this}rotateZ(r){return Mo.makeRotationZ(r),this.applyMatrix4(Mo),this}translate(r,e,t){return Mo.makeTranslation(r,e,t),this.applyMatrix4(Mo),this}scale(r,e,t){return Mo.makeScale(r,e,t),this.applyMatrix4(Mo),this}lookAt(r){return Of.lookAt(r),Of.updateMatrix(),this.applyMatrix4(Of.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new pe.Vector3().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new pe.Color().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 pe.Vector3().fromBufferAttribute(a,d),new pe.Vector3().fromBufferAttribute(a,f),new pe.Vector3().fromBufferAttribute(a,h)],S=new ka(d,f,h,b,y,m);e.faces.push(S),l!==void 0&&e.faceVertexUvs[0].push([new pe.Vector2().fromBufferAttribute(l,d),new pe.Vector2().fromBufferAttribute(l,f),new pe.Vector2().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new pe.Vector2().fromBufferAttribute(c,d),new pe.Vector2().fromBufferAttribute(c,f),new pe.Vector2().fromBufferAttribute(c,h)])}let p=r.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)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Vu).negate(),this.translate(Vu.x,Vu.y,Vu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new pe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new pe.Vector3,e=new pe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new pe.Vector3;if(r){let t=new pe.Vector3,o=new pe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new Fn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new pe.Vector3,u={a:new pe.Vector3,b:new pe.Vector3,c:new pe.Vector3};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new pe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new pe.Matrix3().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,S=h.vertexColors,P=new ka(h.a+i,h.b+i,h.c+i);P.normal.copy(h.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let C=0,v=b.length;C<v;C++)m=b[C].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),P.vertexNormals.push(m);P.color.copy(h.color);for(let C=0,v=S.length;C<v;C++)y=S[C],P.vertexColors.push(y.clone());P.materialIndex=h.materialIndex+t,l.push(P)}for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,C=b.length;P<C;P++)S.push(b[P].clone());this.faceVertexUvs[d].push(S)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new pe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(r[m]=h[m]);return r}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 t=[],o=[],i={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,S=this.faceVertexUvs[0][h]!==void 0,P=m.normal.length()>0,C=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,A=m.vertexColors.length>0,T=0;if(T=u(T,0,0),T=u(T,1,y),T=u(T,2,b),T=u(T,3,S),T=u(T,4,P),T=u(T,5,C),T=u(T,6,v),T=u(T,7,A),t.push(T),t.push(m.a,m.b,m.c),t.push(m.materialIndex),S){let g=this.faceVertexUvs[0][h];t.push(f(g[0]),f(g[1]),f(g[2]))}if(P&&t.push(p(m.normal)),C){let g=m.vertexNormals;t.push(p(g[0]),p(g[1]),p(g[2]))}if(v&&t.push(d(m.color)),A){let g=m.vertexColors;t.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 i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[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 r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new Fn().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,f=t.length;d<f;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,C=b.length;P<C;P++){let v=b[P];S.push(v.clone())}this.faceVertexUvs[d].push(S)}}let i=r.morphTargets;for(let d=0,f=i.length;d<f;d++){let h={};if(h.name=i[d].name,i[d].vertices!==void 0){h.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)h.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){h.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)h.normals.push(i[d].normals[m].clone())}this.morphTargets.push(h)}let a=r.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],S={};S.a=b.a.clone(),S.b=b.b.clone(),S.c=b.c.clone(),h.vertexNormals.push(S)}}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=r.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Af().fromGeometry(this),e=new pe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",zu.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",zu.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",E0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",N0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",N0.call(new pe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new pe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,i.push(zu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new pe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",D0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",D0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new pe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new pe.Float32BufferAttribute(t.vertices.length*3,3),i=new pe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",zu.call(o,t.vertices)),e.setAttribute("color",E0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",FI.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Fn.prototype.isGeometry=!0;var Af=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,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=r.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=r.skinIndices,h=r.skinWeights,m=f.length===t.length,y=h.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let S=e[b];this.vertices.push(t[S.a],t[S.b],t[S.c]);let P=S.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let v=S.normal;this.normals.push(v,v,v)}let C=S.vertexColors;if(C.length===3)this.colors.push(C[0],C[1],C[2]);else{let v=S.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][b];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}if(a===!0){let v=o[1][b];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}for(let v=0;v<l;v++){let A=s[v].vertices;c[v].data.push(A[S.a],A[S.b],A[S.c])}for(let v=0;v<p;v++){let A=u[v].vertexNormals[b];d[v].data.push(A.a,A.b,A.c)}m&&this.skinIndices.push(f[S.a],f[S.b],f[S.c]),y&&this.skinWeights.push(h[S.a],h[S.b],h[S.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},ka=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new pe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new pe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function FI(n){return this.array.set(n),this}function E0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new pe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function N0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new pe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function zu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new pe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function D0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new pe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var jI=["a","b","c"];function kI(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Tf(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function If(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function UI(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],If(a.a,a.b,n,t,a,e),If(a.b,a.c,n,t,a,e),If(a.c,a.a,n,t,a,e)}function Gu(n,r,e,t,o){n.push(new ka(r,e,t,void 0,void 0,o))}function Ua(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Fu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var ju=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof rn.BufferGeometry?r=new Fn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new rn.Vector3,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;UI(l,c,d,f);let h=[],m,y,b,S,P,C,v;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new rn.Vector3,P=3/8,C=1/8,v=y.faces.length,v!=2&&(P=.5,C=0,v!=1),b.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<v;a++){for(S=y.faces[a],s=0;s<3&&(m=l[kI(S,jI[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(C),b.add(e),y.newEdge=h.length,h.push(b)}let A,T,g,D,E,M,N,_=[];for(o=0,i=l.length;o<i;o++){for(M=l[o],E=d[o].edges,t=E.length,t==3?A=3/16:t>3&&(A=3/(8*t)),T=1-t*Number(A),g=A,t<=2&&(t==2?(T=3/4,g=1/8):t==1||t==0),N=M.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<t;a++)D=E[a],m=D.a!==M?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let B=_.concat(h),V=_.length,k,L,W,F=[],j=[],H,q,re,ee,X=new rn.Vector2,te=new rn.Vector2,K=new rn.Vector2;for(o=0,i=c.length;o<i;o++)S=c[o],k=Number(Tf(S.a,S.b,f).newEdge)+V,L=Number(Tf(S.b,S.c,f).newEdge)+V,W=Number(Tf(S.c,S.a,f).newEdge)+V,Gu(F,k,L,W,S.materialIndex),Gu(F,S.a,k,W,S.materialIndex),Gu(F,S.b,L,k,S.materialIndex),Gu(F,S.c,W,L,S.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Ua(q.x,re.x),Ua(q.y,re.y)),te.set(Ua(re.x,ee.x),Ua(re.y,ee.y)),K.set(Ua(q.x,ee.x),Ua(q.y,ee.y)),Fu(j,X,te,K),Fu(j,q,X,K),Fu(j,re,te,X),Fu(j,ee,K,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=j)}};var Gt=new Eo.Vector3,_0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Gt),t={width:Gt.x,height:Gt.y,depth:Gt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Gt)):Gt.set(a.width,a.height,a.depth),(r!==Gt.x||e!==Gt.y||t!==Gt.z)&&i.scale(Gt.x===0?1:r/Gt.x,Gt.y===0?1:e/Gt.y,Gt.z===0?1:t/Gt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new ju(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Eo.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Gt);let a=100/Gt.x;Object.assign(i.parameters,{width:100,height:Gt.y*a,depth:Gt.z*a}),r(this.build(i))})}};var ku=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,f=2*Math.PI/t;for(let m=0;m<t;m++){let y=f*m,b=p+Math.sin(y)*c,S=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,S))}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=br.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};var He=require("three"),B0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Ef(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function wl(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Mf(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function HI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Ef=class extends He.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,b=(t-2)*Math.PI/t,S=Math.PI-b,P=new He.Vector3(0,-f,0),C=new He.Vector3(0,f,0),v=new He.Vector2(r,-f),A=new He.Vector2(m,-f),T=new He.Vector2(0,C.y).sub(A),g=new He.Vector2(0,C.y).sub(v),D=new He.Vector2(T.y,-T.x).normalize(),E=new He.Vector2(g.y,-g.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,N);let _;{let j=new He.Vector3(D.x,D.y,0),H=new He.Vector3(Math.cos(y)*j.x,j.y,Math.sin(y)*j.x);_=j.angleTo(H)}let B=a/Math.tan((Math.PI-T.angle())/2),V=a/Math.tan((Math.PI-_)/2),k=new He.Vector3;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let j=d++,H=[],q=v.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+h,te=new He.Vector2(Math.sin(X),Math.cos(X));wl(q,te,k),c.push(k.x,k.y,k.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],j,H[(ee+1)%H.length])}let L=[];{let j=new He.Vector3,H=new He.Vector3,q=new He.Vector3,re=new He.Vector3,ee=new He.Vector3,X=new He.Vector3;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+h,Z=(te+.5)/t*Math.PI*2+h,Q=(te+1)/t*Math.PI*2+h,$=new He.Vector2(Math.sin(K),Math.cos(K)),ue=new He.Vector2(Math.sin(Z),Math.cos(Z)),le=new He.Vector2(Math.sin(Q),Math.cos(Q));wl(v,$,H),wl(v,le,q),wl(D,ue,j),Mf(C,H,q,V,V,re),c.push(re.x,re.y,re.z),Mf(H,C,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Mf(q,H,C,B,V,X),c.push(X.x,X.y,X.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let me=H.clone().add(q).multiplyScalar(.5),be=C.clone().sub(me).normalize(),O=P.clone().sub(me).normalize().add(be).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(me,ie,O,T.angle())}let ye,fe;{let me=new He.Vector3;wl(E,le,me);let be=X.clone().add(re).multiplyScalar(.5);be=HI(be,q,C);let ge=X.clone().sub(re);[ye,fe]=W(be,ge,me,_,re.y)}{let me=ye,be=me.clone().setY(0).normalize(),ge=new He.Vector3(0,-1,0),O=be.clone().cross(ge);F(me,be,ge,O)}L.concat(fe);{let me=T.angle(),be=Math.PI-me,ge=C.clone();ge.y-=a/Math.sin(me-Math.PI/2);let O=new He.Vector3,ie=[];for(let ke=0;ke<s;ke++){let ze=[],Oe=Math.PI/2-be*ke/s,Lt=Math.cos(Oe),De=Math.sin(Oe),_t=Z;for(let Vt=0;Vt<=ke;Vt++){let ii=Math.cos(_t),yt=Math.sin(_t);j.x=Lt*yt,j.y=De,j.z=Lt*ii,O.copy(ge).addScaledVector(j,a),c.push(O.x,O.y,O.z),u.push(j.x,j.y,j.z),p.push(0,0),ze.push(d++),_t+=Math.PI*2/ke/t}ie.push(ze)}fe.reverse(),ie.push(fe);let Ve=ie.length-1;for(let ke=0;ke<Ve;ke++){let ze=ie[ke],Oe=ie[ke+1],Lt=ze.length-1;l.push(Oe[1],ze[0],Oe[0]);for(let De=1;De<=Lt;De++)l.push(ze[De],ze[De-1],Oe[De]),l.push(Oe[De+1],ze[De],Oe[De])}}}}}this.setIndex(l),this.setAttribute("position",new He.Float32BufferAttribute(c,3)),this.setAttribute("normal",new He.Float32BufferAttribute(u,3)),this.setAttribute("uv",new He.Float32BufferAttribute(p,2));function W(j,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);j.addScaledVector(q,-a/Math.sin(te));let Z=new He.Vector3,Q=new He.Vector3,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let ye=ae/$-.5;if(Z.copy(j),Z.addScaledVector(H,ye),Z.addScaledVector(Q,a),ee!=null){let fe=Math.max(0,Z.y-ee);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 ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,ye=ae+($+1),fe=ye+1,me=ae+1;l.push(ae,ye,me),l.push(ye,fe,me)}return[j.clone().addScaledVector(H,.5),le]}function F(j,H,q,re){let ee=Math.PI/2,X=g.angle()-ee,te=[],K=new He.Vector3,Z=new He.Vector3;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*S,ye=Math.cos(ae),fe=Math.sin(ae),me=Math.atan(Math.tan(X)*ye),be=(ee+me)*le,ge=Math.cos(be),O=Math.sin(be);K.set(0,0,0),K.addScaledVector(H,O*ye),K.addScaledVector(q,ge),K.addScaledVector(re,O*fe),Z.copy(j).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var Ha=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(C,v,A){return v>e&&A>t?Math.min(C*e/v,C*t/A):v>e?C*e/v:A>t?C*t/A:C}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;r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,b)),r.addPoint(r.createPoint(h,b)),r.isClosed=!0;let S=!0;for(let C=0,v=r.points.length;C<v;C++)r.points[C].roundness=f[C],C>0&&f[C]!==f[C-1]&&(S=!1);S&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=br.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};var on=require("three"),R0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=on.MathUtils.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new on.BufferGeometry,u.setAttribute("position",new on.Float32BufferAttribute([],3))):u=new on.SphereGeometry(.5*r,o,i,a,s,l,c*on.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var L0=require("three"),V0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new L0.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var jn=require("three"),z0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Nf(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Nf=class extends jn.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new jn.Vector3(Z,Q,$),h=f(),m=f(),[y,b,S]=[e/2,r/2,t/2],P=-b,C=+b,[v,A,T]=[f(P,-y,+S),f(P,-y,-S),f(P,+y,-S)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));T.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-S,M=v.z-u;o<=d?(T.z=Math.min(E,M),T.z==M&&(T.y-=(E-M)/Math.tan(d-o))):A.z=Math.min(A.z-E-S,v.z-u),h.subVectors(v,A),m.subVectors(T,A);let N=Math.min(h.length(),m.length())*i/100,_=N*Math.tan(o/2),B=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(B).add(A);h.set(0,g(o,!0),D(o,!0)),p.push([T,h.clone()]);let k=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*k;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([v,f(0,1,0)]);let L=Math.sin(k/2)*_*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),j=p[W-1][0].distanceTo(p[W][0]),H=F+L*a+j;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(F+Z*L)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,C,q.y,q.z,C,q.y,q.z,P,X.y,X.z,C,X.y,X.z),l.push(0,re.y,re.z,0,te.y,te.z,0,re.y,re.z,0,re.y,re.z,0,te.y,te.z,0,te.y,te.z),c.push(0,ee,0,K,1,ee,1,ee,0,K,1,K),[q,re,ee]=[X,te,K];this.setAttribute("position",new jn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new jn.Float32BufferAttribute(l,3)),this.setAttribute("uv",new jn.Float32BufferAttribute(c,2))}};var Uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*t/100,S=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let C=0;C<o;C++){let v=m*C,A=f+Math.sin(v)*p,T=h+Math.cos(v)*d;u.addPoint(u.createPoint(A,T))}}else for(let C=0;C<o;C++){let v=f+Math.cos(y)*p,A=h+Math.sin(y)*d;u.addPoint(u.createPoint(v,A)),y+=m,v=f+Math.cos(y)*b,A=h+Math.sin(y)*S,C<=o,u.addPoint(u.createPoint(v,A)),y+=m}u.isClosed=!0;for(let C=0,v=u.points.length;C<v;C++)u.points[C].roundness=i;u.roundness=i,u.update();let P=br.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};var G0=require("three"),F0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new G0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Wa=require("three");var j0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=WI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function WI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=Wa.MathUtils.clamp(o/360,0,1);if(p===0){let d=new Wa.BufferGeometry;return d.setAttribute("position",new Wa.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new vl(!0,n,r,e,t,p,i,a,s,l,c,u)}var k0=require("three"),U0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new k0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var H0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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=t;l.roundness=t,l.update();let p=br.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Ie=require("three");function W0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function qI(n){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(n.toLowerCase())}function $I(n,r,e){let t,o,i,a=Math.floor(n*6),s=n*6-a,l=e*(1-r),c=e*(1-s*r),u=e*(1-(1-s)*r);switch(a%6){case 0:t=e,o=u,i=l;break;case 1:t=c,o=e,i=l;break;case 2:t=l,o=e,i=u;break;case 3:t=l,o=c,i=e;break;case 4:t=u,o=l,i=e;break;case 5:default:t=e,o=l,i=c;break}return{r:t*255,g:o*255,b:i*255}}function YI(n,r,e){n/=255,r/=255,e/=255;let t=Math.max(n,r,e),o=Math.min(n,r,e),i=t,a=t-o,s=t==0?0:a/t,l;if(t==o)l=0;else{switch(t){case n:l=(r-e)/a+(r<e?6:0);break;case r:l=(e-n)/a+2;break;case e:default:l=(n-r)/a+4;break}l/=6}return{h:l,s,v:i}}function XI(n){return n=Math.floor(n),{r:n>>16&255,g:n>>8&255,b:n&255}}function KI(n,r,e){return(n<<16)+(r<<8)+e}function QI(n,r,e){return n=Math.round(n),r=Math.round(r),e=Math.round(e),"#"+[n,r,e].map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function ZI(n){let r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(r,(t,o,i,a)=>String(o+o+i+i+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var q0={parseRgba:qI,hsvToRgb:$I,rgbToHsv:YI,hexToRgb:XI,rgbToHex:KI,rgbToHexString:QI,hexStringToRgb:ZI};function nn(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var Hu=class{constructor(r,e,t){this.id=r;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(r=>r());this.emitter=nn();this._innerCallUserAPI=async r=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await oM(this.userAPI,r),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let t=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=t,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(t)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Fc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Fc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(r){await this.callUserAPI(r)}async callUserAPI(r){await this._debouncedCallUserAPI(r)}update(r,e,t=!0){this.userAPI=r,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&t&&this._debouncedPrefetch(e)}retrieveValue(r){if(this.result)try{return ct.zoom(this.result,r)}catch(e){console.error(e)}}retrieveZoomedKeyValues(r){if(this.result){let e=r&&r.length?ct.zoom(this.result,r):this.result;if(rM(e))return Object.entries(e);if(tM(e))return e.map((t,o)=>[o.toString(),t]);throw eM(e)?new Error("This path points to a value, use retrieveValue() instead. "+r?.join(".")):new Error("Path error"+r?.join("."))}}dispose(){}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}get autostart(){return this.userAPI.autoStart}};function JI(n){let r=new Headers;return n.headers.forEach(e=>{e.data.key!==""&&r.append(e.data.key,e.data.value)}),r}function eM(n){return typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null}function tM(n){return Array.isArray(n)}function rM(n){return typeof n=="object"&&n!==null}async function oM(n,r,e=new AbortController){let t,o=n.url,i=n.proxy?.enabled??!1,a;if(n.integration?.type==="OpenAI"){let l=Pl(n.integration.prompt===""?[]:JSON.parse(n.integration.prompt),r),c=n.integration.behavior===""?[]:Pl(JSON.parse(n.integration.behavior),r);a=`{
4
4
  "model": "${n.integration.model}",
5
5
  "messages": [${n.integration.useBehavior?`
6
6
  {
@@ -12,20 +12,20 @@ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}functio
12
12
  "content": "${l}"
13
13
  }
14
14
  ]
15
- }`}if(i){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${n.proxy.fileId}/external-api/request?uuidexternalapi=${n.proxy.proxyId}`;let u;a!==void 0?u=a:n.method==="POST"&&n.body&&(u=Pl(JSON.parse(n.body),r)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else n.integration?.type==="OpenAI"?t=a:n.method==="POST"&&n.body&&(t=Pl(JSON.parse(n.body),r));let s=await fetch(o,{method:i?"GET":n.method,headers:i?void 0:eM(n),signal:e.signal,body:t});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(n.integration?.type==="OpenAI"){let l=await s.json();return i&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return i&&(l=l.response),l}}var Y0=(n,r)=>{if(typeof n=="string"){let e=r.getVariable(n);if(e)return Y0(e,r)}return Bn.isBoolean(n)?Bn.getDisplayedValue(n).toLowerCase():Bn.getDisplayedValue(n)},Pl=(n,r)=>n.map((e,t)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(t>0?`
16
- `:"")+Pl(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return Y0(o,r)}}return""}).join("");var iM=new Ie.Matrix4,aM=new Ie.Matrix4;function sM(n,r,e){let t=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3],o=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=Ie.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Ie.Matrix4().makeBasis(t[0],t[1],t[2])}var X0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ja.create({parameters:jp}).userData.shape;return{path:n.path??va.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...du,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new _f(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Ie.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},_f=class extends Ie.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!q0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let F=0;F<c;F++){let j=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[j].clone()),p.push(t[j].clone())}let d=(F,j,H)=>{u[F]=u[F].clone().lerp(u[j],H),p[F]=sM(p[F],p[j],H)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,d(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let F=u.length-1;u[F].copy(u[0]),p[F].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:S}=this.inputs.parameters.extrusion,P=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:v,infos:A,vertices:T}=this._computeShapePoints(O),g=0,D;P==="round"&&(D=new Gn(this.inputs.shapeData,2*b,b,O,S,void 0,!0),g=D.getAttribute("position").count);let E=0,M=0;A.sort((F,j)=>F.start-j.start),A.forEach(F=>{F.verticesStart=E,F.verticesCount=F.continuous.reduce((j,H,q)=>j+(q===0||!H?2:1),0),M+=F.verticesCount,E=M});let N=M*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=ao({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{_=Cf}B=_.vertexCount}let V=N+2*B+g*2,k=N+2*B,L={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(A.forEach(F=>{this._extrudeRegion(F,T,p,u,L,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,W,L,p[0],u[0],!1),this._closeEnd(_,N+B,W,L,p[p.length-1],u[u.length-1],!0)),D){L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);for(let q=k;q<k+g;q++)L.uvs[q*2+1]=1e-4;let F=W.length;W.push(...D.getIndex().array.map(q=>q+k)),k+=g,L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);let j=W.length;W.push(...D.getIndex().array.map(q=>q+k)),this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W);let H=iM;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,k,V),H.copy(p[0]).setPosition(u[0]).multiply(aM.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,k-g,k),this.reverseIndicesOnRange(F,j)}else this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Nu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new Ie.Vector3,s=new Ie.Vector3,l=new Ie.Vector3,c=new Ie.Vector3,u=new Ie.Vector3(0,1,0);for(let y=0;y<o;y++){let b=e[y],S;y===0?S=i?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):S=e[y-1];let P;y===o-1?P=i?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let O=b.clone().sub(S).normalize(),v=P.clone().sub(b).normalize(),A=O.clone().add(v).normalize();l.copy(A),y===0&&(A.equals(u)||A.clone().negate().equals(u))&&u.set(0,0,1);let T=u.clone().cross(A).normalize(),g=A.clone().cross(T).normalize();u.copy(g),c.copy(T),y===0&&(a.copy(g),s.copy(A));let D=new Ie.Matrix4().makeBasis(T,g,A);t.push(D)}let p=i?s:l,d=i?a:new Ie.Vector3(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return t;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<t.length;y++){let b=new Ie.Matrix4().makeRotationZ(h*y/t.length);t[y].multiply(b)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Ie.Matrix4,p=new Ie.Matrix4;return e.forEach((d,f)=>{let h=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(Ie.MathUtils.lerp(a,a+s,h)*Ie.MathUtils.DEG2RAD);let m=Ie.MathUtils.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=We.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let S=y.length-1;S>=1;S-=2){let P=y[S-1],O=y[S-0];b.push(P,O)}return b}),s;try{s=ao({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=bl}let l;try{l=ao({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Pf}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,S=s.vertices[b+0],P=s.vertices[b+1];S<u&&(u=S),S>p&&(p=S),P<d&&(d=P),P>f&&(f=P)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,S=s.elements[b+0],P=s.elements[b+1],O=S+P,v={start:S,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let A=S,T=O-1,g=S+1,D=o.roundedCurves.length;do{let E=A-S,M=s.vertices[T*2+0],N=s.vertices[T*2+1],_=s.vertices[A*2+0],B=s.vertices[A*2+1],V=s.vertices[g*2+0],k=s.vertices[g*2+1],L=_-M,W=B-N,F=Math.sqrt(L*L+W*W);L/=F,W/=F;let j=_-V,H=B-k,q=Math.sqrt(j*j+H*H);j/=q,H/=q,v.normals[E*2+0]=-H,v.normals[E*2+1]=j;let re=s.vertexIndices[A];if(Array.isArray(re))v.continuous[E]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)v.continuous[E]=!0;else{let te=X===1?ee+1:ee-1;te=(te+D)%D;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);v.continuous[E]=Z.dot(Q)>.95}}y&&(v.normals[E*2+0]*=-1,v.normals[E*2+1]*=-1),[T,A,g]=[A,g,g+1],g>=O&&(g-=P)}while(g!==S+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Ie.Vector3,u=new Ie.Vector3,p=new Ie.Vector3,d=new Ie.Vector3,f=new Ie.Vector2;o.forEach((m,y)=>{let b=i[y],S=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let O=(e.start+P)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let v=P===0?(e.start+e.count-1)*2:O-2;u.set(t[v+0],t[v+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(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,S,p,d,f),S++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),f.set(0,y/(o.length-1));else{let v=P===e.count-1?e.start*2:O+2;u.set(t[v+0],t[v+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,S,p,d,f),S++}}});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),S=0;for(let P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&S++;let O=P===e.count-1?0:S+1,v=y+S,A=y+O,T=b+O,g=b+S;e.isHole?s.push(v,T,A,v,g,T):s.push(v,A,T,v,T,g),S++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Ie.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Ie.Vector3,d=new Ie.Vector2;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(i,t+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+t,b=f[m+(l?1:2)]+t,S=f[m+(l?2:1)]+t;o.push(y,b,S)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new Ie.Matrix3().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=t*m,b=o*m;y<b;y+=m){if(y===t)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,f[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,f[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[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,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};var Si=require("three"),K0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Q0(){let n=new Si.BufferGeometry;return n.setAttribute("position",new Si.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Si.BufferAttribute(new Uint16Array([]),1)),n}var cM=Q0().attributes,uM=12,dM=1,wi=class extends Si.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,cM),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Bn.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,f=pM(e,t,d),{shapes:h,charWidths:m,charCoords:y}=t.generateShapes(f,e),b=(typeof o=="number"?o:1)*.5,S=(typeof i=="number"?i:1)*.5,P=h.map(A=>new $e().fromShape(A,!0));this.vectorShapes=P;let O=P.map(A=>br.create({shape:A,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?We.NONZERO:We.ODD,subdivisions:this.isLowResolution&&a>0?dM:uM}})),v=O.length?(0,K0.mergeBufferGeometries)(O):Q0();v.translate(-b,S,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([A,T])=>{this.setAttribute(A,T)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=Jt(new Si.BufferGeometry,wi.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}})}get text(){return this.userData.parameters.text??""}};function pM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
15
+ }`}if(i){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${n.proxy.fileId}/external-api/request?uuidexternalapi=${n.proxy.proxyId}`;let u;a!==void 0?u=a:n.method==="POST"&&n.body&&(u=Pl(JSON.parse(n.body),r)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else n.integration?.type==="OpenAI"?t=a:n.method==="POST"&&n.body&&(t=Pl(JSON.parse(n.body),r));let s=await fetch(o,{method:i?"GET":n.method,headers:i?void 0:JI(n),signal:e.signal,body:t});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(n.integration?.type==="OpenAI"){let l=await s.json();return i&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return i&&(l=l.response),l}}var $0=(n,r)=>{if(typeof n=="string"){let e=r.getVariable(n);if(e)return $0(e,r)}return Bn.isBoolean(n)?Bn.getDisplayedValue(n).toLowerCase():Bn.getDisplayedValue(n)},Pl=(n,r)=>n.map((e,t)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(t>0?`
16
+ `:"")+Pl(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return $0(o,r)}}return""}).join("");var nM=new Ie.Matrix4,iM=new Ie.Matrix4;function aM(n,r,e){let t=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3],o=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=Ie.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Ie.Matrix4().makeBasis(t[0],t[1],t[2])}var Y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ja.create({parameters:Fp}).userData.shape;return{path:n.path??va.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...uu,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Df(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Ie.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Df=class extends Ie.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!W0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let F=0;F<c;F++){let j=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[j].clone()),p.push(t[j].clone())}let d=(F,j,H)=>{u[F]=u[F].clone().lerp(u[j],H),p[F]=aM(p[F],p[j],H)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,d(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let F=u.length-1;u[F].copy(u[0]),p[F].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:S}=this.inputs.parameters.extrusion,P=b>0?this.inputs.parameters.extrusion.capType:"flat",C=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(C=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:v,infos:A,vertices:T}=this._computeShapePoints(C),g=0,D;P==="round"&&(D=new Gn(this.inputs.shapeData,2*b,b,C,S,void 0,!0),g=D.getAttribute("position").count);let E=0,M=0;A.sort((F,j)=>F.start-j.start),A.forEach(F=>{F.verticesStart=E,F.verticesCount=F.continuous.reduce((j,H,q)=>j+(q===0||!H?2:1),0),M+=F.verticesCount,E=M});let N=M*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=ao({windingRule:qe.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{_=Pf}B=_.vertexCount}let V=N+2*B+g*2,k=N+2*B,L={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(A.forEach(F=>{this._extrudeRegion(F,T,p,u,L,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,W,L,p[0],u[0],!1),this._closeEnd(_,N+B,W,L,p[p.length-1],u[u.length-1],!0)),D){L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);for(let q=k;q<k+g;q++)L.uvs[q*2+1]=1e-4;let F=W.length;W.push(...D.getIndex().array.map(q=>q+k)),k+=g,L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);let j=W.length;W.push(...D.getIndex().array.map(q=>q+k)),this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W);let H=nM;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,k,V),H.copy(p[0]).setPosition(u[0]).multiply(iM.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,k-g,k),this.reverseIndicesOnRange(F,j)}else this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Eu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new Ie.Vector3,s=new Ie.Vector3,l=new Ie.Vector3,c=new Ie.Vector3,u=new Ie.Vector3(0,1,0);for(let y=0;y<o;y++){let b=e[y],S;y===0?S=i?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):S=e[y-1];let P;y===o-1?P=i?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let C=b.clone().sub(S).normalize(),v=P.clone().sub(b).normalize(),A=C.clone().add(v).normalize();l.copy(A),y===0&&(A.equals(u)||A.clone().negate().equals(u))&&u.set(0,0,1);let T=u.clone().cross(A).normalize(),g=A.clone().cross(T).normalize();u.copy(g),c.copy(T),y===0&&(a.copy(g),s.copy(A));let D=new Ie.Matrix4().makeBasis(T,g,A);t.push(D)}let p=i?s:l,d=i?a:new Ie.Vector3(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return t;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<t.length;y++){let b=new Ie.Matrix4().makeRotationZ(h*y/t.length);t[y].multiply(b)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Ie.Matrix4,p=new Ie.Matrix4;return e.forEach((d,f)=>{let h=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(Ie.MathUtils.lerp(a,a+s,h)*Ie.MathUtils.DEG2RAD);let m=Ie.MathUtils.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=qe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let S=y.length-1;S>=1;S-=2){let P=y[S-1],C=y[S-0];b.push(P,C)}return b}),s;try{s=ao({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=bl}let l;try{l=ao({windingRule:qe.ODD,elementType:bt.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,S=s.vertices[b+0],P=s.vertices[b+1];S<u&&(u=S),S>p&&(p=S),P<d&&(d=P),P>f&&(f=P)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,S=s.elements[b+0],P=s.elements[b+1],C=S+P,v={start:S,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let A=S,T=C-1,g=S+1,D=o.roundedCurves.length;do{let E=A-S,M=s.vertices[T*2+0],N=s.vertices[T*2+1],_=s.vertices[A*2+0],B=s.vertices[A*2+1],V=s.vertices[g*2+0],k=s.vertices[g*2+1],L=_-M,W=B-N,F=Math.sqrt(L*L+W*W);L/=F,W/=F;let j=_-V,H=B-k,q=Math.sqrt(j*j+H*H);j/=q,H/=q,v.normals[E*2+0]=-H,v.normals[E*2+1]=j;let re=s.vertexIndices[A];if(Array.isArray(re))v.continuous[E]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)v.continuous[E]=!0;else{let te=X===1?ee+1:ee-1;te=(te+D)%D;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);v.continuous[E]=Z.dot(Q)>.95}}y&&(v.normals[E*2+0]*=-1,v.normals[E*2+1]*=-1),[T,A,g]=[A,g,g+1],g>=C&&(g-=P)}while(g!==S+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Ie.Vector3,u=new Ie.Vector3,p=new Ie.Vector3,d=new Ie.Vector3,f=new Ie.Vector2;o.forEach((m,y)=>{let b=i[y],S=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let C=(e.start+P)*2;if(c.set(t[C+0],t[C+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let v=P===0?(e.start+e.count-1)*2:C-2;u.set(t[v+0],t[v+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(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,S,p,d,f),S++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),f.set(0,y/(o.length-1));else{let v=P===e.count-1?e.start*2:C+2;u.set(t[v+0],t[v+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,S,p,d,f),S++}}});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),S=0;for(let P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&S++;let C=P===e.count-1?0:S+1,v=y+S,A=y+C,T=b+C,g=b+S;e.isHole?s.push(v,T,A,v,g,T):s.push(v,A,T,v,T,g),S++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Ie.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Ie.Vector3,d=new Ie.Vector2;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(i,t+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+t,b=f[m+(l?1:2)]+t,S=f[m+(l?2:1)]+t;o.push(y,b,S)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new Ie.Matrix3().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=t*m,b=o*m;y<b;y+=m){if(y===t)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,f[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,f[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[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,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};var Si=require("three"),X0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function K0(){let n=new Si.BufferGeometry;return n.setAttribute("position",new Si.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Si.BufferAttribute(new Uint16Array([]),1)),n}var lM=K0().attributes,cM=12,uM=1,wi=class extends Si.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,lM),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Bn.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,f=dM(e,t,d),{shapes:h,charWidths:m,charCoords:y}=t.generateShapes(f,e),b=(typeof o=="number"?o:1)*.5,S=(typeof i=="number"?i:1)*.5,P=h.map(A=>new $e().fromShape(A,!0));this.vectorShapes=P;let C=P.map(A=>br.create({shape:A,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?qe.NONZERO:qe.ODD,subdivisions:this.isLowResolution&&a>0?uM:cM}})),v=C.length?(0,X0.mergeBufferGeometries)(C):K0();v.translate(-b,S,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([A,T])=>{this.setAttribute(A,T)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=Jt(new Si.BufferGeometry,wi.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}})}get text(){return this.userData.parameters.text??""}};function dM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
17
17
  `?(t[t.length-1]+=o,o="",i===`
18
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var at=require("three");var J0,$u=new Promise(n=>{J0=n}),Z0=!1;var qu;function eb(){if(Z0)return;if(qu)return qu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.45/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});J0(l),Z0=!0}return qu=n(),qu}var tb=require("three");var fM=["font"];function an(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];zp(p)&&!fM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),zp(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=$e.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new tb.BufferGeometryLoader().parse(i),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(i.type==="SubdivGeometry"){let c=new Nt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wi(i,r);if(i.type==="InputGeometry")return new wi(i,r);if(i.type==="UIGeometry")return Ha.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Bf(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(ba.defaultData(),100,100);s.shape=c,l=Bf(s)}return l}var rb=require("three"),hM=new rb.Matrix4;function Cl(n,r,e,t){let o=n.position.array,i=n.normal.array,a=hM.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Yu=new at.Box3,qa=new at.Vector3,we;$u.then(n=>{we=n});var ob=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),nb=new Uint32Array([0,1,2,3]),ib=new Uint8Array([4]),Nt=class extends at.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Tn.div(t,o);this.subdividedGeometry&&Cl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Cl(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(qa.fromArray(i));let s=qa.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new at.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new at.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Yu.setFromBufferAttribute(t),Yu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Yu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Yu.getSize(qa);let i={width:qa.x,height:qa.y,depth:qa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(we.free_bvh(t),we.free_subdivision_surface(t));try{a=Nt.allocate(e,i)}catch(u){console.error(u,e),a=Nt.allocate({positionWASM:ob,indexWASM:nb,verticesPerFaceWASM:ib},i)}if(we.set_destination_refinement_level(a,0),s=Nt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=Nt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=Nt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:an(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=zf(i.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}=Gf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=ob,i=nb,a=ib);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,f=i.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),S=new Float32Array(we.HEAPF32.buffer,b,d),P=new Uint32Array(we.HEAPU32.buffer,b+m,f);S.set(o,0),S.set(s,o.length),S.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let O;e?.scaleBaked?.some(A=>A!==1)&&(O=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let v=O?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),v}static buildLevel(e,t,o,i,a){let s=a?we.get_mesh_data2(e,t?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,t?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 S=we.HEAPU32[c[p]>>2],P=we.HEAPU32.subarray(S>>2,(S>>2)+u[p]);if(p++,i===void 0){let O=new at.BufferGeometry;if(O.setIndex(new at.Uint32BufferAttribute(P,1)),O.setAttribute("position",new at.Float32BufferAttribute(f,3)),O.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){O.setAttribute("faceMap",new at.Uint32BufferAttribute(b,1));let v=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new at.BufferAttribute(v,4))}return we.free_mesh_data(s),O.userData.type="SubdivGeometry",O}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(i>>2,(i>>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(t===void 0){let h=new at.BufferGeometry;h.setAttribute("position",new at.Float32BufferAttribute(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 at.BufferAttribute(m,3)),h.setIndex(new at.Uint32BufferAttribute(f,1)),we.free_wireframe_data_for_base_level(i),h}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||we.set_destination_refinement_level(e,t);let a=o?we.get_topological_data2(e,i?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,i?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 ab=["getX","getY","getZ"];function zf(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[ab[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[ab[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var Xu=new at.Vector3,Rf=new at.Vector3,Lf=new at.Vector3,Vf=new at.Vector3;function Gf(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let 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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){Xu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Rf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Lf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Vf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Rf.sub(Xu).normalize(),Lf.sub(Xu).normalize(),Vf.sub(Xu).normalize();let l=Rf.cross(Lf).dot(Vf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var jr={};Qh(jr,{calcBoolean:()=>xM,calcBooleanTopological:()=>gM,freeMeshSet:()=>wM,getMeshSet:()=>bM,hasOpenEdges:()=>vM,transformMeshSet:()=>SM});var mM,sb=new Promise(n=>{mM=n});var Ol=require("three");var Le,$a;sb.then(n=>Le=n);function yM(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=zf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=Gf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function lb(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Le._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Le.HEAPU32.buffer,i,r):new Float32Array(Le.HEAPF32.buffer,i,r)).set(n,0),i}function cb(n){switch(n){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function gM(n,r){$a===void 0&&($a=Le.init_csg());let e=lb(n),t=Le.csg_calc_topological($a,e,n.length,cb(r));Le._free(e);let o=6,i=Le.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Le.HEAPU32[i[s]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Le.HEAPU32[i[s]>>2],p=new Uint32Array(Le.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Le.HEAPU32[i[s]>>2],f=new Uint8Array(Le.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Le.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:f}}function xM(n,r,e,t){$a===void 0&&($a=Le.init_csg());let o=lb(n),i=Le.csg_calc($a,o,n.length,t,cb(r));Le._free(o);let a=5,s=Le.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Le.HEAPU32[s[c]>>2],p=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Le.HEAPU32[s[c]>>2],f=Le.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Ol.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Ol.Float32BufferAttribute(f,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ol.Sphere),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},Le.free_mesh_data(i),h}function bM(n,r,e){if(Le===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let b=n.userData;i=b.verticesPerFace.length,t=b.positions,o=Array(b.verticesPerFace.reduce((S,P)=>S+P,0)+i);for(let S=0,P=0,O=0;S<b.verticesPerFace.length;S++){o[O++]=b.verticesPerFace[S];for(let v=0;v<b.verticesPerFace[S];v++)o[O++]=b.indices[P++]}}else({positions:t,faceIndices:o,nFaces:i}=yM(n,r,e));let a=t.length,s=o.length,l=t.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=Le._malloc(u),h=new Float32Array(Le.HEAPF32.buffer,f,l),m=new Uint32Array(Le.HEAPU32.buffer,f+p,c);h.set(t,0),m.set(o,0);let y=Le.get_csg_mesh(f,a,f+p,s,i);return Le._free(f),y}function vM(n){return Le.has_open_edges(n)}function SM(n,r){Le.transform_csg_mesh(n,r.elements)}function wM(n){Le.free_csg_mesh(n)}var PM={ConeGeometry:Jx,CubeGeometry:e0,CylinderGeometry:Zx,DodecahedronGeometry:r0,EllipseGeometry:ja,HelixGeometry:T0,IcosahedronGeometry:M0,LatheGeometry:E0,NonParametricGeometry:B0,PolygonGeometry:Uu,PyramidGeometry:R0,RectangleGeometry:Ha,SphereGeometry:L0,PlaneGeometry:z0,BackdropGeometry:G0,StarGeometry:Hu,TextFrameGeometry:j0,TorusGeometry:k0,TorusKnotGeometry:H0,TriangleGeometry:W0,PathGeometry:X0,VectorGeometry:br},Bf=n=>PM[n.type].create(n);function Ya(n){return n!==null&&"booleanOp"in n}var Xa=class extends _a(Ku.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ku.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!Ya(this.parent)&&this.visible,Ya(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(jr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ya(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xa&&(e.freeBooleanPointer(),Ya(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Qu=new Ka.Box3;function Al(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),f=n.getY(p),h=n.getZ(p);d<i&&(i=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Qu.min.set(i,a,s),Qu.max.set(l,c,u),Qu.getCenter(t),Qu.getSize(o).multiplyScalar(.5)}var CM=new Ka.BufferGeometry,OM=new Ka.MeshBasicMaterial,Ft=class extends Xa{constructor(r,e){super(CM,OM),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var pn=require("three");var _r=require("three");var Db=require("three");var sn=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(sn.uuidContext===null)throw new Error("plz startContext");sn.uuidContext===sn.globalContext?this.uuid="_gid"+sn.uuidContext.nodeContextUuid++:this.uuid="_uid"+sn.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===sn.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},tt=sn;tt.globalContext={nodeContextUuid:0},tt.uuidContext=sn.globalContext;var po=require("three");var Tl=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var Ff=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},jt=new Ff;var jf=require("three");var ub=require("three"),xe=class extends tt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=ub.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var rt=class extends xe{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var vt=class extends rt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof jf.Vector2?e:new jf.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var kf=require("three");var tr=class extends rt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof kf.Vector3?e:new kf.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var db=require("three"),kt=class extends db.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var vr=class extends rt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof kt?e:new kt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var AM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,pb=/[a-z_0-9]+/gi,J=class extends xe{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,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=pb.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&&jt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=jt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||jt.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&&jt.contains(m)&&e.include(jt.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=AM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(pb);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 TM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Uf=class extends xe{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Uf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=TM.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,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},qe=Uf;qe.PI="PI",qe.PI2="PI2",qe.RECIPROCAL_PI="RECIPROCAL_PI",qe.RECIPROCAL_PI2="RECIPROCAL_PI2",qe.LOG2="LOG2",qe.EPSILON="EPSILON";var IM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
- )*?)}`,"gim"),MM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qa=class extends xe{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=IM.exec(e);if(t){let o=t[2],i;for(;i=MM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Za=class extends xe{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};jt.addKeyword("uv",function(){return new Za});jt.addKeyword("uv2",function(){return new Za(1)});var Zu=require("three");var Pi=class extends xe{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Pi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Zu.LinearEncoding:return["Linear"];case Zu.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=Pi.Nodes[this.method],s=e.include(a);if(s===Pi.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=Pi.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Pi.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},dr=Pi;dr.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
18
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var at=require("three");var Z0,qu=new Promise(n=>{Z0=n}),Q0=!1;var Wu;function J0(){if(Q0)return;if(Wu)return Wu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.47/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});Z0(l),Q0=!0}return Wu=n(),Wu}var eb=require("three");var pM=["font"];function an(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];Vp(p)&&!pM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Vp(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=$e.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new eb.BufferGeometryLoader().parse(i),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(i.type==="SubdivGeometry"){let c=new Nt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wi(i,r);if(i.type==="InputGeometry")return new wi(i,r);if(i.type==="UIGeometry")return Ha.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=_f(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(ba.defaultData(),100,100);s.shape=c,l=_f(s)}return l}var tb=require("three"),fM=new tb.Matrix4;function Cl(n,r,e,t){let o=n.position.array,i=n.normal.array,a=fM.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var $u=new at.Box3,qa=new at.Vector3,we;qu.then(n=>{we=n});var rb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ob=new Uint32Array([0,1,2,3]),nb=new Uint8Array([4]),Nt=class extends at.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Tn.div(t,o);this.subdividedGeometry&&Cl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Cl(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(qa.fromArray(i));let s=qa.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new at.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new at.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;$u.setFromBufferAttribute(t),$u.getCenter(o),e.boundingSphere.radius=o.distanceTo($u.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),$u.getSize(qa);let i={width:qa.x,height:qa.y,depth:qa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(we.free_bvh(t),we.free_subdivision_surface(t));try{a=Nt.allocate(e,i)}catch(u){console.error(u,e),a=Nt.allocate({positionWASM:rb,indexWASM:ob,verticesPerFaceWASM:nb},i)}if(we.set_destination_refinement_level(a,0),s=Nt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=Nt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=Nt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:an(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=Vf(i.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}=zf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=rb,i=ob,a=nb);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,f=i.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),S=new Float32Array(we.HEAPF32.buffer,b,d),P=new Uint32Array(we.HEAPU32.buffer,b+m,f);S.set(o,0),S.set(s,o.length),S.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let C;e?.scaleBaked?.some(A=>A!==1)&&(C=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(C?C.premultiply(t):C=t);let v=C?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,C.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),v}static buildLevel(e,t,o,i,a){let s=a?we.get_mesh_data2(e,t?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,t?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 S=we.HEAPU32[c[p]>>2],P=we.HEAPU32.subarray(S>>2,(S>>2)+u[p]);if(p++,i===void 0){let C=new at.BufferGeometry;if(C.setIndex(new at.Uint32BufferAttribute(P,1)),C.setAttribute("position",new at.Float32BufferAttribute(f,3)),C.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){C.setAttribute("faceMap",new at.Uint32BufferAttribute(b,1));let v=new Float32Array(m.length/3*4).fill(0);C.setAttribute("color",new at.BufferAttribute(v,4))}return we.free_mesh_data(s),C.userData.type="SubdivGeometry",C}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(i>>2,(i>>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(t===void 0){let h=new at.BufferGeometry;h.setAttribute("position",new at.Float32BufferAttribute(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 at.BufferAttribute(m,3)),h.setIndex(new at.Uint32BufferAttribute(f,1)),we.free_wireframe_data_for_base_level(i),h}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||we.set_destination_refinement_level(e,t);let a=o?we.get_topological_data2(e,i?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,i?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 ib=["getX","getY","getZ"];function Vf(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[ib[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[ib[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var Yu=new at.Vector3,Bf=new at.Vector3,Rf=new at.Vector3,Lf=new at.Vector3;function zf(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let 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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){Yu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Bf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Rf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Lf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Bf.sub(Yu).normalize(),Rf.sub(Yu).normalize(),Lf.sub(Yu).normalize();let l=Bf.cross(Rf).dot(Lf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var jr={};Kh(jr,{calcBoolean:()=>gM,calcBooleanTopological:()=>yM,freeMeshSet:()=>SM,getMeshSet:()=>xM,hasOpenEdges:()=>bM,transformMeshSet:()=>vM});var hM,ab=new Promise(n=>{hM=n});var Ol=require("three");var Le,$a;ab.then(n=>Le=n);function mM(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Vf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=zf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function sb(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Le._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Le.HEAPU32.buffer,i,r):new Float32Array(Le.HEAPF32.buffer,i,r)).set(n,0),i}function lb(n){switch(n){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function yM(n,r){$a===void 0&&($a=Le.init_csg());let e=sb(n),t=Le.csg_calc_topological($a,e,n.length,lb(r));Le._free(e);let o=6,i=Le.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Le.HEAPU32[i[s]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Le.HEAPU32[i[s]>>2],p=new Uint32Array(Le.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Le.HEAPU32[i[s]>>2],f=new Uint8Array(Le.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Le.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:f}}function gM(n,r,e,t){$a===void 0&&($a=Le.init_csg());let o=sb(n),i=Le.csg_calc($a,o,n.length,t,lb(r));Le._free(o);let a=5,s=Le.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Le.HEAPU32[s[c]>>2],p=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Le.HEAPU32[s[c]>>2],f=Le.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Ol.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Ol.Float32BufferAttribute(f,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ol.Sphere),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},Le.free_mesh_data(i),h}function xM(n,r,e){if(Le===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let b=n.userData;i=b.verticesPerFace.length,t=b.positions,o=Array(b.verticesPerFace.reduce((S,P)=>S+P,0)+i);for(let S=0,P=0,C=0;S<b.verticesPerFace.length;S++){o[C++]=b.verticesPerFace[S];for(let v=0;v<b.verticesPerFace[S];v++)o[C++]=b.indices[P++]}}else({positions:t,faceIndices:o,nFaces:i}=mM(n,r,e));let a=t.length,s=o.length,l=t.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=Le._malloc(u),h=new Float32Array(Le.HEAPF32.buffer,f,l),m=new Uint32Array(Le.HEAPU32.buffer,f+p,c);h.set(t,0),m.set(o,0);let y=Le.get_csg_mesh(f,a,f+p,s,i);return Le._free(f),y}function bM(n){return Le.has_open_edges(n)}function vM(n,r){Le.transform_csg_mesh(n,r.elements)}function SM(n){Le.free_csg_mesh(n)}var wM={ConeGeometry:Zx,CubeGeometry:Jx,CylinderGeometry:Qx,DodecahedronGeometry:t0,EllipseGeometry:ja,HelixGeometry:A0,IcosahedronGeometry:I0,LatheGeometry:M0,NonParametricGeometry:_0,PolygonGeometry:ku,PyramidGeometry:B0,RectangleGeometry:Ha,SphereGeometry:R0,PlaneGeometry:V0,BackdropGeometry:z0,StarGeometry:Uu,TextFrameGeometry:F0,TorusGeometry:j0,TorusKnotGeometry:U0,TriangleGeometry:H0,PathGeometry:Y0,VectorGeometry:br},_f=n=>wM[n.type].create(n);function Ya(n){return n!==null&&"booleanOp"in n}var Xa=class extends _a(Xu.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Xu.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!Ya(this.parent)&&this.visible,Ya(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(jr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ya(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xa&&(e.freeBooleanPointer(),Ya(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Ku=new Ka.Box3;function Al(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),f=n.getY(p),h=n.getZ(p);d<i&&(i=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Ku.min.set(i,a,s),Ku.max.set(l,c,u),Ku.getCenter(t),Ku.getSize(o).multiplyScalar(.5)}var PM=new Ka.BufferGeometry,CM=new Ka.MeshBasicMaterial,Ft=class extends Xa{constructor(r,e){super(PM,CM),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var pn=require("three");var _r=require("three");var Nb=require("three");var sn=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(sn.uuidContext===null)throw new Error("plz startContext");sn.uuidContext===sn.globalContext?this.uuid="_gid"+sn.uuidContext.nodeContextUuid++:this.uuid="_uid"+sn.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===sn.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},tt=sn;tt.globalContext={nodeContextUuid:0},tt.uuidContext=sn.globalContext;var po=require("three");var Tl=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var Gf=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},jt=new Gf;var Ff=require("three");var cb=require("three"),xe=class extends tt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=cb.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var rt=class extends xe{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var vt=class extends rt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ff.Vector2?e:new Ff.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var jf=require("three");var tr=class extends rt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof jf.Vector3?e:new jf.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var ub=require("three"),kt=class extends ub.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var vr=class extends rt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof kt?e:new kt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var OM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,db=/[a-z_0-9]+/gi,J=class extends xe{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,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=db.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&&jt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=jt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||jt.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&&jt.contains(m)&&e.include(jt.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=OM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(db);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 AM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,kf=class extends xe{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||kf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=AM.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,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},We=kf;We.PI="PI",We.PI2="PI2",We.RECIPROCAL_PI="RECIPROCAL_PI",We.RECIPROCAL_PI2="RECIPROCAL_PI2",We.LOG2="LOG2",We.EPSILON="EPSILON";var TM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
+ )*?)}`,"gim"),IM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qa=class extends xe{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=TM.exec(e);if(t){let o=t[2],i;for(;i=IM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Za=class extends xe{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};jt.addKeyword("uv",function(){return new Za});jt.addKeyword("uv2",function(){return new Za(1)});var Qu=require("three");var Pi=class extends xe{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Pi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Qu.LinearEncoding:return["Linear"];case Qu.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=Pi.Nodes[this.method],s=e.include(a);if(s===Pi.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=Pi.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Pi.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},dr=Pi;dr.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
- `))},dr.LINEAR_TO_LINEAR="LinearToLinear",dr.SRGB_TO_LINEAR="sRGBToLinear",dr.LINEAR_TO_SRGB="LinearTosRGB";var Xe=class extends J{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var fb=require("three"),pr=class extends rt{constructor(e=new fb.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Za,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new dr(new Xe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var se=class extends rt{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Il=class extends xe{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",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,i,t)}};var Hf=class extends xe{constructor(e,t,o=Hf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},Kt=Hf;Kt.ADD="+",Kt.SUB="-",Kt.MUL="*",Kt.DIV="/";var ot=class extends xe{constructor(e,t=ot.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case ot.MIX:case ot.CLAMP:case ot.REFRACT:case ot.SMOOTHSTEP:case ot.FACEFORWARD:return 3;case ot.MIN:case ot.MAX:case ot.MOD:case ot.STEP:case ot.REFLECT:case ot.DISTANCE:case ot.DOT:case ot.CROSS:case ot.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case ot.LENGTH:case ot.DISTANCE:case ot.DOT:return"f";case ot.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,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 ot.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case ot.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case ot.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case ot.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case ot.MIN:case ot.MAX:case ot.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case ot.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case ot.MIX:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),i&&d.push(i),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,t)}},Ae=ot;Ae.RAD="radians",Ae.DEG="degrees",Ae.EXP="exp",Ae.EXP2="exp2",Ae.LOG="log",Ae.LOG2="log2",Ae.SQRT="sqrt",Ae.INV_SQRT="inversesqrt",Ae.FLOOR="floor",Ae.CEIL="ceil",Ae.NORMALIZE="normalize",Ae.FRACT="fract",Ae.SATURATE="saturate",Ae.SIN="sin",Ae.COS="cos",Ae.TAN="tan",Ae.ASIN="asin",Ae.ACOS="acos",Ae.ARCTAN="atan",Ae.ABS="abs",Ae.SIGN="sign",Ae.LENGTH="length",Ae.NEGATE="negate",Ae.INVERT="invert",Ae.MIN="min",Ae.MAX="max",Ae.MOD="mod",Ae.STEP="step",Ae.REFLECT="reflect",Ae.DISTANCE="distance",Ae.DOT="dot",Ae.CROSS="cross",Ae.POW="pow",Ae.MIX="mix",Ae.CLAMP="clamp",Ae.REFRACT="refract",Ae.SMOOTHSTEP="smoothstep",Ae.FACEFORWARD="faceforward";var Ja=class extends xe{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new Il(Ja.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new dr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new dr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new dr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new dr(new Xe("","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 Xe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Xe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Xe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Xe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Xe("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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Il(Ja.Nodes.roughnessToMip,[i]),s=new Ae(a,Ja.Nodes.m0,Ja.Nodes.cubeUV_maxMipLevel,Ae.CLAMP),l=new Ae(s,Ae.FLOOR),c=new Ae(s,Ae.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Kt(l,new se(1).setReadonly(!0),Kt.ADD)),d=new Ae(u,p,c,Ae.MIX);return e.format(d.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},es=Ja;es.Nodes=function(){let e=new Qa(`struct TextureCubeUVData {
22
+ `))},dr.LINEAR_TO_LINEAR="LinearToLinear",dr.SRGB_TO_LINEAR="sRGBToLinear",dr.LINEAR_TO_SRGB="LinearTosRGB";var Xe=class extends J{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var pb=require("three"),pr=class extends rt{constructor(e=new pb.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Za,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new dr(new Xe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var se=class extends rt{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Il=class extends xe{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",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,i,t)}};var Uf=class extends xe{constructor(e,t,o=Uf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},Kt=Uf;Kt.ADD="+",Kt.SUB="-",Kt.MUL="*",Kt.DIV="/";var ot=class extends xe{constructor(e,t=ot.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case ot.MIX:case ot.CLAMP:case ot.REFRACT:case ot.SMOOTHSTEP:case ot.FACEFORWARD:return 3;case ot.MIN:case ot.MAX:case ot.MOD:case ot.STEP:case ot.REFLECT:case ot.DISTANCE:case ot.DOT:case ot.CROSS:case ot.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case ot.LENGTH:case ot.DISTANCE:case ot.DOT:return"f";case ot.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,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 ot.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case ot.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case ot.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case ot.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case ot.MIN:case ot.MAX:case ot.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case ot.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case ot.MIX:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),i&&d.push(i),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,t)}},Ae=ot;Ae.RAD="radians",Ae.DEG="degrees",Ae.EXP="exp",Ae.EXP2="exp2",Ae.LOG="log",Ae.LOG2="log2",Ae.SQRT="sqrt",Ae.INV_SQRT="inversesqrt",Ae.FLOOR="floor",Ae.CEIL="ceil",Ae.NORMALIZE="normalize",Ae.FRACT="fract",Ae.SATURATE="saturate",Ae.SIN="sin",Ae.COS="cos",Ae.TAN="tan",Ae.ASIN="asin",Ae.ACOS="acos",Ae.ARCTAN="atan",Ae.ABS="abs",Ae.SIGN="sign",Ae.LENGTH="length",Ae.NEGATE="negate",Ae.INVERT="invert",Ae.MIN="min",Ae.MAX="max",Ae.MOD="mod",Ae.STEP="step",Ae.REFLECT="reflect",Ae.DISTANCE="distance",Ae.DOT="dot",Ae.CROSS="cross",Ae.POW="pow",Ae.MIX="mix",Ae.CLAMP="clamp",Ae.REFRACT="refract",Ae.SMOOTHSTEP="smoothstep",Ae.FACEFORWARD="faceforward";var Ja=class extends xe{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new Il(Ja.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new dr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new dr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new dr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new dr(new Xe("","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 Xe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Xe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Xe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Xe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Xe("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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Il(Ja.Nodes.roughnessToMip,[i]),s=new Ae(a,Ja.Nodes.m0,Ja.Nodes.cubeUV_maxMipLevel,Ae.CLAMP),l=new Ae(s,Ae.FLOOR),c=new Ae(s,Ae.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Kt(l,new se(1).setReadonly(!0),Kt.ADD)),d=new Ae(u,p,c,Ae.MIX);return e.format(d.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},es=Ja;es.Nodes=function(){let e=new Qa(`struct TextureCubeUVData {
23
23
  vec4 tl;
24
24
  vec4 tr;
25
25
  vec4 br;
26
26
  vec4 bl;
27
27
  vec2 f;
28
- }`),t=new qe("float cubeUV_maxMipLevel 8.0",!0),o=new qe("float cubeUV_minMipLevel 4.0",!0),i=new qe("float cubeUV_maxTileSize 256.0",!0),a=new qe("float cubeUV_minTileSize 16.0",!0),s=new J(`float getFace(vec3 direction) {
28
+ }`),t=new We("float cubeUV_maxMipLevel 8.0",!0),o=new We("float cubeUV_minMipLevel 4.0",!0),i=new We("float cubeUV_maxTileSize 256.0",!0),a=new We("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: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.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,t,o,i,a]);c.useKeywords=!1;let u=new qe("float r0 1.0",!0),p=new qe("float v0 0.339",!0),d=new qe("float m0 -2.0",!0),f=new qe("float r1 0.8",!0),h=new qe("float v1 0.276",!0),m=new qe("float m1 -1.0",!0),y=new qe("float r4 0.4",!0),b=new qe("float v4 0.046",!0),S=new qe("float m4 2.0",!0),P=new qe("float r5 0.305",!0),O=new qe("float v5 0.016",!0),v=new qe("float m5 3.0",!0),A=new qe("float r6 0.21",!0),T=new qe("float v6 0.0038",!0),g=new qe("float m6 4.0",!0),D=[u,p,d,f,h,m,y,b,S,P,O,v,A,T,g],E=new J(`float roughnessToMip(float roughness) {
87
+ }`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new We("float r0 1.0",!0),p=new We("float v0 0.339",!0),d=new We("float m0 -2.0",!0),f=new We("float r1 0.8",!0),h=new We("float v1 0.276",!0),m=new We("float m1 -1.0",!0),y=new We("float r4 0.4",!0),b=new We("float v4 0.046",!0),S=new We("float m4 2.0",!0),P=new We("float r5 0.305",!0),C=new We("float v5 0.016",!0),v=new We("float m5 3.0",!0),A=new We("float r6 0.21",!0),T=new We("float v6 0.0038",!0),g=new We("float m6 4.0",!0),D=[u,p,d,f,h,m,y,b,S,P,C,v,A,T,g],E=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: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.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:E,m0:d,cubeUV_maxMipLevel:t}}();var Ci=class extends xe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Ci.VIEW}getShared(){return this.scope===Ci.WORLD}build(e,t,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,a){let s;switch(this.scope){case Ci.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Ci.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Ci.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Qt=Ci;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Qt(Qt.VIEW)});jt.addKeyword("localNormal",function(){return new Qt(Qt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Qt(Qt.WORLD)});var No=class extends xe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??No.LOCAL}getType(){switch(this.scope){case No.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case No.LOCAL:case No.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case No.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case No.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case No.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case No.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},Sr=No;Sr.LOCAL="local",Sr.WORLD="world",Sr.VIEW="view",Sr.PROJECTION="projection";jt.addKeyword("position",function(){return new Sr});jt.addKeyword("worldPosition",function(){return new Sr(Sr.WORLD)});jt.addKeyword("viewPosition",function(){return new Sr(Sr.VIEW)});var uo=class extends xe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??uo.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case uo.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case uo.VECTOR:{let a=new Qt(Qt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new Sr(Sr.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};`),i="reflectVec"):i=d;break}case uo.CUBE:{let a=new uo(uo.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case uo.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new uo(uo.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Do=uo;Do.CUBE="cube",Do.SPHERE="sphere",Do.VECTOR="vector";var Ju=class extends xe{constructor(e=new pr,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new es(this.value,t??new Do(Do.VECTOR),o),this.irradianceNode=new es(this.value,new Qt(Qt.WORLD),new se(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var hb=require("three");var ed=class extends rt{constructor(e=new hb.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Do,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new dr(new Xe("",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,t)}};var mb=`
101
+ }`,D);return{bilinearCubeUV:c,roughnessToMip:E,m0:d,cubeUV_maxMipLevel:t}}();var Ci=class extends xe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Ci.VIEW}getShared(){return this.scope===Ci.WORLD}build(e,t,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,a){let s;switch(this.scope){case Ci.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Ci.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Ci.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Qt=Ci;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Qt(Qt.VIEW)});jt.addKeyword("localNormal",function(){return new Qt(Qt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Qt(Qt.WORLD)});var No=class extends xe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??No.LOCAL}getType(){switch(this.scope){case No.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case No.LOCAL:case No.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case No.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case No.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case No.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case No.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},Sr=No;Sr.LOCAL="local",Sr.WORLD="world",Sr.VIEW="view",Sr.PROJECTION="projection";jt.addKeyword("position",function(){return new Sr});jt.addKeyword("worldPosition",function(){return new Sr(Sr.WORLD)});jt.addKeyword("viewPosition",function(){return new Sr(Sr.VIEW)});var uo=class extends xe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??uo.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case uo.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case uo.VECTOR:{let a=new Qt(Qt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new Sr(Sr.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};`),i="reflectVec"):i=d;break}case uo.CUBE:{let a=new uo(uo.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case uo.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new uo(uo.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Do=uo;Do.CUBE="cube",Do.SPHERE="sphere",Do.VECTOR="vector";var Zu=class extends xe{constructor(e=new pr,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new es(this.value,t??new Do(Do.VECTOR),o),this.irradianceNode=new es(this.value,new Qt(Qt.WORLD),new se(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var fb=require("three");var Ju=class extends rt{constructor(e=new fb.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Do,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new dr(new Xe("",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,t)}};var hb=`
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
- `,yb=`
109
+ `,mb=`
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
- `,gb=`
151
+ `,yb=`
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
- `,xb=`
188
+ `,gb=`
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
- `,bb=`
203
+ `,xb=`
204
204
  layout(location = 1) out vec4 gVelocity;
205
- `,vb=`
205
+ `,bb=`
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 Sb=["x","y","z","w"],EM=["float","vec2","vec3","vec4"],NM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},DM={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[]"},ts=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let a="";i=i.sort(r);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
210
+ `;var vb=["x","y","z","w"],MM=["float","vec2","vec3","vec4"],EM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},NM={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[]"},ts=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let a="";i=i.sort(r);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[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,20 +245,20 @@ 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(r,e){this.addVertexParsCode(mb),this.addFragmentParsCode(yb),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(gb),this.addFragmentFinalCode(xb)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
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(r,e){this.addVertexParsCode(hb),this.addFragmentParsCode(mb),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(yb),this.addFragmentFinalCode(gb)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
249
249
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
250
250
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
251
251
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
252
252
  `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),l=s[r];if(!l){let c=s.length;l={name:t||"node"+i+c+(a?"_"+a:""),type:e},s.push(l),s[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
253
253
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[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("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
254
254
  `:t+=e+" "+u+" "+l+`;
255
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Tl({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Tl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?jt.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof qe?o=this.includes.consts:r instanceof Qa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof J&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return EM[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case po.CubeReflectionMapping:case po.CubeRefractionMapping:return new ed(t);case po.CubeUVReflectionMapping:return new Ju(new pr(t));default:return new pr(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new tr(t);if(t.isVector4)return new vr(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return NM[r]||r}getFormatByType(r){return DM[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Sb[r]}getIndexByElement(r){return Sb.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=po.LinearEncoding,e===po.LinearEncoding&&this.context.gamma&&(e=po.sRGBEncoding),e}};var Qe=require("three");var Ze=class extends rt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof kt?e:new kt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var Ge=class extends rt{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};var od=require("three");var It=class extends rt{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var fo=class extends rt{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var wb=require("three");var kn=class extends rt{};var td=class extends kn{constructor(e){super("v3");this.image=e;this._value=new wb.Vector3}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Oi=class extends kn{constructor(e,t,o=1008,i=1006){super("t");this.image=e;this.wrap=t;this.minFilter=o;this.magFilter=i}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};var Pb=require("three");var rs=class extends rt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new Pb.Matrix3}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Cb=require("three");var rr=class extends rt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Cb.Matrix4}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ml=require("three");function Ob(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Ml.Matrix3().makeRotation(t*Ml.MathUtils.DEG2RAD))}var rd=class extends rs{constructor(e,t,o=0){super(new Ml.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Ob(this.value,e,t,o)}updateMatrix(){Ob(this.value,this.repeat,this.offset,this.rotation)}};var Wf=require("three");var ho=class extends rt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Wf.Vector4?new Array(e).fill(t):new Array(e).fill(new Wf.Vector4(0))}};var os=class extends xe{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var qf=class extends xe{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(qf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ai=qf;Ai.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
255
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Tl({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Tl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?jt.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof We?o=this.includes.consts:r instanceof Qa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof J&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return MM[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case po.CubeReflectionMapping:case po.CubeRefractionMapping:return new Ju(t);case po.CubeUVReflectionMapping:return new Zu(new pr(t));default:return new pr(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new tr(t);if(t.isVector4)return new vr(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return EM[r]||r}getFormatByType(r){return NM[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return vb[r]}getIndexByElement(r){return vb.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=po.LinearEncoding,e===po.LinearEncoding&&this.context.gamma&&(e=po.sRGBEncoding),e}};var Qe=require("three");var Ze=class extends rt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof kt?e:new kt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var Ge=class extends rt{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};var rd=require("three");var It=class extends rt{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var fo=class extends rt{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var Sb=require("three");var kn=class extends rt{};var ed=class extends kn{constructor(e){super("v3");this.image=e;this._value=new Sb.Vector3}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Oi=class extends kn{constructor(e,t,o=1008,i=1006){super("t");this.image=e;this.wrap=t;this.minFilter=o;this.magFilter=i}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};var wb=require("three");var rs=class extends rt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new wb.Matrix3}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Pb=require("three");var rr=class extends rt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Pb.Matrix4}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ml=require("three");function Cb(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Ml.Matrix3().makeRotation(t*Ml.MathUtils.DEG2RAD))}var td=class extends rs{constructor(e,t,o=0){super(new Ml.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Cb(this.value,e,t,o)}updateMatrix(){Cb(this.value,this.repeat,this.offset,this.rotation)}};var Hf=require("three");var ho=class extends rt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Hf.Vector4?new Array(e).fill(t):new Array(e).fill(new Hf.Vector4(0))}};var os=class extends xe{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Wf=class extends xe{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Wf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ai=Wf;Ai.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
256
256
  float lalpha = alpha * mask;
257
257
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
258
258
  accumAlpha += (1.0 - accumAlpha) * lalpha;
259
259
 
260
260
  return color;
261
- }`)}}();var $f=class extends xe{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include($f.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ns=$f;ns.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
261
+ }`)}}();var qf=class extends xe{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(qf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ns=qf;ns.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
262
262
  vec3 normal = packNormalToRGB( norm ).rgb;
263
263
  normal *= step( vec3(0.5), cnormal );
264
264
 
@@ -508,7 +508,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
508
508
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
509
509
 
510
510
  return color;
511
- }`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Yf=class extends xe{constructor(e,t,o,i,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,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,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Yf.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=Yf;ls.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) {
511
+ }`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var $f=class extends xe{constructor(e,t,o,i,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,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,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include($f.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=$f;ls.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) {
512
512
  vec4 color = colors[0];
513
513
  vec2 m = morph / vUv.xy;
514
514
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -550,7 +550,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
550
550
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
551
551
 
552
552
  return color.xyz;
553
- }`)}}();var Xf=class extends xe{constructor(e,t,o,i,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Xf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),i.push(this.rotation.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Xf;cs.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) {
553
+ }`)}}();var Yf=class extends xe{constructor(e,t,o,i,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Yf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),i.push(this.rotation.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Yf;cs.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) {
554
554
  vec3 viewDir = normalize( vViewPosition );
555
555
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
556
556
  vec3 y = cross( viewDir, x );
@@ -564,7 +564,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
564
564
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
565
565
 
566
566
  return matcapColor.rgb;
567
- }`)}}();var Nl=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Nl||{}),Zt=function(){let r=new J(`vec3 random3(vec3 c) {
567
+ }`)}}();var Zt=function(){let r=new J(`vec3 random3(vec3 c) {
568
568
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
569
569
  vec3 r;
570
570
  r.z = fract(512.0*j);
@@ -573,7 +573,39 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
573
573
  j *= .125;
574
574
  r.y = fract(512.0*j);
575
575
  return r-0.5;
576
- }`),e=new J(`float simplex3d(vec3 p) {
576
+ }`),e=new J(`float simplexFast(vec3 p) {
577
+ vec3 s = floor(p + dot(p, vec3(F3)));
578
+ mediump vec3 x = p - s + dot(s, vec3(G3));
579
+ mediump vec3 hs = s;
580
+
581
+ mediump vec3 e = step(vec3(0.0), x - x.yzx);
582
+ mediump vec3 i1 = e*(1.0 - e.zxy);
583
+ mediump vec3 i2 = 1.0 - e.zxy*(1.0 - e);
584
+
585
+ mediump vec3 x1 = x - i1 + G3;
586
+ mediump vec3 x2 = x - i2 + 2.0*G3;
587
+ mediump vec3 x3 = x - 1.0 + 3.0*G3;
588
+
589
+ mediump vec4 w, d;
590
+
591
+ w.x = dot(x, x);
592
+ w.y = dot(x1, x1);
593
+ w.z = dot(x2, x2);
594
+ w.w = dot(x3, x3);
595
+
596
+ w = max(0.6 - w, 0.0);
597
+
598
+ d.x = dot(random3(hs), x);
599
+ d.y = dot(random3(hs + i1), x1);
600
+ d.z = dot(random3(hs + i2), x2);
601
+ d.w = dot(random3(hs + 1.0), x3);
602
+
603
+ w *= w;
604
+ w *= w;
605
+ d *= w;
606
+
607
+ return dot(d, vec4(52.0));
608
+ }`,[r]);e.keywords.F3=new We("float F3 0.3333333"),e.keywords.G3=new We("float G3 0.1666667");let t=new J(`float simplexPrecise(vec3 p) {
577
609
  vec3 s = floor(p + dot(p, vec3(F3)));
578
610
  vec3 x = p - s + dot(s, vec3(G3));
579
611
 
@@ -604,15 +636,15 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
604
636
  d *= w;
605
637
 
606
638
  return dot(d, vec4(52.0));
607
- }`,[r]);e.keywords.F3=new qe("float F3 0.3333333"),e.keywords.G3=new qe("float G3 0.1666667");let t=new J(`float simplex3dFractal(vec3 m) {
639
+ }`,[r]);t.keywords.F3=new We("float F3 0.3333333"),t.keywords.G3=new We("float G3 0.1666667");let o=new J(`float simplexFractal(vec3 m) {
608
640
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
609
641
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
610
642
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
611
- return 0.5333333 * simplex3d(m * rot1)
612
- + 0.2666667 * simplex3d(2.0 * m * rot2)
613
- + 0.1333333 * simplex3d(4.0 * m * rot3)
614
- + 0.0666667 * simplex3d(8.0 * m);
615
- }`,[e]),o=new J("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new J("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new J(`float simplexAshima(vec3 v) {
643
+ return 0.5333333 * simplexFast(m * rot1)
644
+ + 0.2666667 * simplexFast(2.0 * m * rot2)
645
+ + 0.1333333 * simplexFast(4.0 * m * rot3)
646
+ + 0.0666667 * simplexFast(8.0 * m);
647
+ }`,[e]),i=new J("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),a=new J("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new J(`float simplexAshima(vec3 v) {
616
648
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
617
649
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
618
650
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -657,7 +689,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
657
689
  m = m * m;
658
690
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
659
691
  dot(p2,x2), dot(p3,x3) ) );
660
- }`,[o,i]),s=new J("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new J("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),c=new J(`float noise(vec3 p){
692
+ }`,[i,a]),l=new J("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new J("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new J(`float noise(vec3 p){
661
693
  vec3 a = floor(p);
662
694
  vec3 d = p - a;
663
695
  d = d * d * (3.0 - 2.0 * d);
@@ -672,7 +704,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
672
704
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
673
705
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
674
706
  return o4.y * d.y + o4.x * (1.0 - d.y);
675
- }`,[l]),u=new J(`float fbm(vec3 x) {
707
+ }`,[c]),p=new J(`float fbm(vec3 x) {
676
708
  float v = 0.0;
677
709
  float a = 0.5;
678
710
  vec3 shift = vec3(100);
@@ -682,7 +714,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
682
714
  a *= 0.5;
683
715
  }
684
716
  return v;
685
- }`,[c]);u.keywords.NUM_OCTAVES=new qe(`int NUM_OCTAVES ${5}`);let p=new J("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new J(`float perlin(vec3 P){
717
+ }`,[u]);p.keywords.NUM_OCTAVES=new We(`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){
686
718
  vec3 Pi0 = floor(P);
687
719
  vec3 Pi1 = Pi0 + vec3(1.0);
688
720
  Pi0 = mod(Pi0, 289.0);
@@ -741,17 +773,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
741
773
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
742
774
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
743
775
  return 2.2 * n_xyz;
744
- }`,[o,i,p]),f=new J(`float hashwithoutsine13(vec3 p3)
776
+ }`,[i,a,d]),h=new J(`float hashwithoutsine13(vec3 p3)
745
777
  {
746
778
  p3 = fract(p3 * .1031);
747
779
  p3 += dot(p3, p3.yzx + 33.33);
748
780
  return fract((p3.x + p3.y) * p3.z);
749
- }`),h=new J(`vec3 hashwithoutsine33(vec3 p3)
781
+ }`),m=new J(`vec3 hashwithoutsine33(vec3 p3)
750
782
  {
751
783
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
752
784
  p3 += dot(p3, p3.yxz+33.33);
753
785
  return fract((p3.xxy + p3.yxx)*p3.zyx);
754
- }`),m=new J(`float metric(in vec3 p)
786
+ }`),y=new J(`float metric(in vec3 p)
755
787
  {
756
788
  // L2
757
789
  return length(p);
@@ -759,17 +791,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
759
791
  // Chebyshev
760
792
  // vec3 a = abs(p);
761
793
  // return max(a.x, max(a.y, a.z));
762
- }`),y=new J(`float smin( float a, float b, float k )
794
+ }`),b=new J(`float smin( float a, float b, float k )
763
795
  {
764
796
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
765
797
  float correction = k * h * (1.0 - h);
766
798
  return mix(b, a, h) - correction;
767
- }`),b=new J(`float smax( float a, float b, float k )
799
+ }`),S=new J(`float smax( float a, float b, float k )
768
800
  {
769
801
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
770
802
  float correction = k * h * (1.0 - h);
771
803
  return mix(a, b, h) + correction;
772
- }`),S=new J(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
804
+ }`),P=new J(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
773
805
  // Compute width of each interval
774
806
  float input_width = input_max - input_min;
775
807
  float output_width = output_max - output_min;
@@ -779,7 +811,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
779
811
 
780
812
  // Convert the 0-1 range into a value in output range
781
813
  return output_min + (scaled * output_width);
782
- }`),P=new J(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
814
+ }`),C=new J(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
783
815
  {
784
816
  // Integer and fractional parts of this point's coordinates
785
817
  ivec3 p = ivec3(floor(x));
@@ -917,8 +949,8 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
917
949
  return hashwithoutsine13(vec3(p + mb) + seed);
918
950
  }
919
951
  }
920
- `,[f,h,m,y,b,S]);return{simplex:e,simplexFractal:t,simplexAshima:a,fbm:u,perlin:d,voronoi:P}}();var us=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,O){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,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=S,this.seed=P,this.quality=O,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(Nl)[this.noiseType.value],l=s=="voronoi"?`
921
- float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
952
+ `,[h,m,y,b,S,P]);return{simplexFast:e,simplexPrecise:t,simplexFractal:o,simplexAshima:s,fbm:p,perlin:f,voronoi:C}}();var us=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,C){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,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=S,this.seed=P,this.quality=C,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,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"?`
953
+ float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
922
954
 
923
955
  // Apply clipping to colors
924
956
  v = remap(v, lowCut, highCut, 0.0, 1.0);
@@ -928,18 +960,18 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
928
960
  // Note that the voronoi mode only uses colors "A" and "C" from the UI
929
961
  vec4 color = mix(colorA, colorC, v);
930
962
  `:`
931
- vec3 q = vec3(${s}(st),
932
- ${s}(st + vec3(1.0)),
933
- ${s}(st + vec3(1.0)));
934
- vec3 r = vec3(${s}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
935
- ${s}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
936
- ${s}(st * q));
937
- float f = ${s}(st + r);
963
+ vec3 q = vec3(${l}(st),
964
+ ${l}(st + vec3(1.0)),
965
+ ${l}(st + vec3(1.0)));
966
+ vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
967
+ ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
968
+ ${l}(st * q));
969
+ float f = ${l}(st + r);
938
970
  vec4 color;
939
971
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
940
972
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
941
973
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
942
- `,c=new J(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
974
+ `,u=new J(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
943
975
  {
944
976
  // Prevent scale of zero
945
977
  scale = max(abs(scale), 0.001);
@@ -947,14 +979,14 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
947
979
  vec3 st = position / size;
948
980
  st /= scale;
949
981
 
950
- ${l}
982
+ ${c}
951
983
 
952
984
  float lalpha = alpha * color.a * mask;
953
985
  calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
954
986
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
955
987
 
956
988
  return clamp(color, 0.0, 1.0).rgb;
957
- }`,[Zt.simplex,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.voronoi]),u=e.include(c),p=[];return p.push(this.scale.build(e,"f")),p.push(this.size.build(e,"v3")),p.push(this.move.build(e,"f")),p.push(this.fA.build(e,"v2")),p.push(this.fB.build(e,"v2")),p.push(this.distortion.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.colorC.build(e,"v4")),p.push(this.colorD.build(e,"v4")),p.push(this.voronoiStyle.build(e,"i")),p.push(this.highCut.build(e,"f")),p.push(this.lowCut.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.seed.build(e,"f")),p.push(this.quality.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),t)}};us.numOctaves=5;var Kf=class extends xe{constructor(e,t,o,i,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=t,this.outlineWidth=o,this.contourWidth=i,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,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
989
+ }`,[Zt.simplexFast,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.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),t)}};us.numOctaves=5;var Xf=class extends xe{constructor(e,t,o,i,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=t,this.outlineWidth=o,this.contourWidth=i,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,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
958
990
  vID = randomColor.r;
959
991
  vec2 ${o}_offset = vec2(0.0);
960
992
  if (${s}) {
@@ -969,7 +1001,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
969
1001
  // if this offset is the biggest of all the potential offsets
970
1002
  gl_Position = ${o}_clipPosition;
971
1003
  }
972
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Kf.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ds=Kf;ds.Nodes=function(){let e=new J(`
1004
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Xf.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ds=Xf;ds.Nodes=function(){let e=new J(`
973
1005
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
974
1006
  {
975
1007
  vec2 halton = haltonSequence[frameIndex];
@@ -1369,21 +1401,22 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1369
1401
  float s = mix(size, size * rand, variation);
1370
1402
 
1371
1403
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1372
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Qf=class extends xe{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Qf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},fs=Qf;fs.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1373
- vec3 st = position / noiseScale;
1374
- vec3 q = vec3(simplex3d(st),
1375
- simplex3d(st + vec3(1.0)),
1376
- simplex3d(st + vec3(1.0)));
1377
-
1378
- vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
1379
- simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
1380
- simplex3d(st * q));
1404
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Kf=class extends xe{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Kf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},fs=Kf;fs.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1405
+ float f = 0.0;
1406
+
1407
+ if (noiseStrength != 0.0) {
1408
+ vec3 st = position / noiseScale;
1409
+ float noise = simplexFast(1.6 * st + vec3(1.8, 1.5, 1.9) * simplexFast(st) + vec3(1.7, 9.2, 1.0));
1410
+ f = noise * noiseStrength;
1411
+ }
1381
1412
 
1382
- float noise = simplex3d(st + r);
1413
+ vec3 waves = wavelengths * vec3(1.0, 0.8, 0.6) + 1.0;
1414
+ float angle = dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal));
1383
1415
 
1384
- return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1385
- }`,[Zt.simplex]);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) {
1386
- vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1416
+ mediump vec3 color = cos((((filmThickness + f) / waves) * angle) + movement);
1417
+ return .5 + .5 * color;
1418
+ }`,[Zt.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) {
1419
+ mediump vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1387
1420
 
1388
1421
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
1389
1422
 
@@ -1392,7 +1425,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1392
1425
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1393
1426
 
1394
1427
  return res;
1395
- }`,[e])}}();var Zf=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,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,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Zf.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},hs=Zf;hs.Nodes=function(){let e=new J(`float rand(float n) {
1428
+ }`,[e])}}();var Qf=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,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,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Qf.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},hs=Qf;hs.Nodes=function(){let e=new J(`float rand(float n) {
1396
1429
  return fract(sin(n) * 43758.5453123);
1397
1430
  }`),t=new J(`float hash1(float p) {
1398
1431
  p = fract(p * 0.011);
@@ -1593,9 +1626,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1593
1626
 
1594
1627
  // Position warp noise
1595
1628
  // vec3 offset = vec3(
1596
- // simplex3d(st),
1597
- // simplex3d(st + vec3(111.1, 143.89, 217.19)),
1598
- // simplex3d(st + vec3(171.1, 247.89, 117.23))
1629
+ // simplexFast(st),
1630
+ // simplexFast(st + vec3(111.1, 143.89, 217.19)),
1631
+ // simplexFast(st + vec3(171.1, 247.89, 117.23))
1599
1632
  // );
1600
1633
  // st += offset;
1601
1634
  // float noise = valueNoise(st);
@@ -1628,7 +1661,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1628
1661
 
1629
1662
  return color.xyz;
1630
1663
 
1631
- }`,[Zt.simplex,e,o,a])}}();var Jf=require("three");var Ab=function(){return{textureBicubic:new J(`float w0( float a ) {
1664
+ }`,[Zt.simplexFast,e,o,a])}}();var Zf=require("three");var Ob=function(){return{textureBicubic:new J(`float w0( float a ) {
1632
1665
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1633
1666
  }
1634
1667
 
@@ -1692,7 +1725,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1692
1725
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1693
1726
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1694
1727
  return mix( fSample, cSample, fract( lod ) );
1695
- }`)}}();function Tb(n,r){return n>=r?new Jf.Vector2(r/n,1):new Jf.Vector2(1,n/r)}var eh=class extends xe{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Ne.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(eh.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ms=eh;ms.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1728
+ }`)}}();function Ab(n,r){return n>=r?new Zf.Vector2(r/n,1):new Zf.Vector2(1,n/r)}var Jf=class extends xe{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Ne.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(Jf.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ms=Jf;ms.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1696
1729
  // Slightly modified version of this:
1697
1730
  // https://www.shadertoy.com/view/ltScRG
1698
1731
 
@@ -1752,7 +1785,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1752
1785
  float lod = applyIorToRoughness(roughness, ior);
1753
1786
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1754
1787
  #endif
1755
- }`,[Ab.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 ) {
1788
+ }`,[Ob.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 ) {
1756
1789
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1757
1790
  vec3 refractedRayExit = position + transmissionRay;
1758
1791
 
@@ -1783,20 +1816,20 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1783
1816
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1784
1817
 
1785
1818
  return transmission;
1786
- }`,[a])}}();var th=(e=>(e.NOISE="noise",e.MAP="map",e))(th||{}),rh=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(th)[this.displacementTypeIndex.value]==="map"&&(this.mat=new rs(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(th)[this.displacementTypeIndex.value]){case"map":{o=e.include(rh.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(Nl)[this.noiseFunctionIndex.value],l=new J(`vec3 orthogonal(vec3 v) {
1819
+ }`,[a])}}();var eh=(e=>(e.NOISE="noise",e.MAP="map",e))(eh||{}),th=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(eh)[this.displacementTypeIndex.value]==="map"&&(this.mat=new rs(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(eh)[this.displacementTypeIndex.value]){case"map":{o=e.include(th.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let l=["simplexPrecise","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseFunctionIndex.value],c=new J(`vec3 orthogonal(vec3 v) {
1787
1820
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1788
- }`),c=s=="voronoi"?`
1789
- float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1821
+ }`),u=l=="voronoi"?`
1822
+ float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1790
1823
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1791
1824
  v = smax(v, 0.0, smoothness * 0.25);
1792
1825
  v = smin(v, 1.0, smoothness * 0.25);
1793
1826
 
1794
1827
  return p + n * v * intensity;
1795
1828
  `:`
1796
- return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1797
- `,u=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) {
1798
- ${c}
1799
- }`,[Zt.simplex,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.voronoi]),p=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) {
1829
+ return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1830
+ `,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) {
1831
+ ${u}
1832
+ }`,[Zt.simplexPrecise,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.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) {
1800
1833
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1801
1834
  vec3 tangent1 = orthogonal(normal);
1802
1835
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1812,7 +1845,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1812
1845
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1813
1846
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1814
1847
  return displaced_position;
1815
- }`,[u,l]);o=e.include(p),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ys=rh;ys.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
1848
+ }`,[p,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ys=th;ys.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
1816
1849
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1817
1850
  }`),t=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1818
1851
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -1834,7 +1867,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1834
1867
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1835
1868
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1836
1869
  return displaced_position;
1837
- }`,[e,t])}}();var Ne={normalRenderTarget:new pr,normalRenderTargetDepth:new pr,transmissionRenderTarget:new pr,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new pr,aoRenderTarget:new pr,aoEnabled:new It,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new fo(5,.5),frameIndex:new Ge(0),transmissionLod:new Ge(2)};for(let n of Object.values(Ne))n.isRenderGlobal=!0;var Ib={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.9.45/build/ui.wasm"};var ln=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ze(Et),this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(od.UniformsUtils.merge([od.UniformsLib.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(`
1870
+ }`,[e,t])}}();var Ne={normalRenderTarget:new pr,normalRenderTargetDepth:new pr,transmissionRenderTarget:new pr,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new pr,aoRenderTarget:new pr,aoEnabled:new It,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new fo(5,.5),frameIndex:new Ge(0),transmissionLod:new Ge(2)};for(let n of Object.values(Ne))n.isRenderGlobal=!0;var Tb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.9.47/build/ui.wasm"};var ln=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ze(Et),this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(rd.UniformsUtils.merge([rd.UniformsLib.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(`
1838
1871
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1839
1872
  #include <skinbase_vertex>
1840
1873
  #include <skinnormal_vertex>
@@ -1856,7 +1889,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1856
1889
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1857
1890
  `)}else{this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1858
1891
  `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.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>"),t=l.join(`
1859
- `)}return t}};var Dl=require("three");var _l=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ze(Et),this.emissive=new Ze(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Dl.UniformsUtils.merge([Dl.UniformsLib.fog,Dl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1892
+ `)}return t}};var Nl=require("three");var Dl=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ze(Et),this.emissive=new Ze(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Nl.UniformsUtils.merge([Nl.UniformsLib.fog,Nl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1860
1893
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1861
1894
  #include <skinbase_vertex>
1862
1895
  #include <skinnormal_vertex>
@@ -1967,7 +2000,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1967
2000
  outgoingLight *= ao;
1968
2001
  }
1969
2002
  `),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>"),t=f.join(`
1970
- `)}return t}};var Bl=require("three");var cn=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
2003
+ `)}return t}};var _l=require("three");var cn=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1971
2004
 
1972
2005
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
1973
2006
  vec2 dSTdx = dFdx(bumpMapUv);
@@ -1998,7 +2031,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1998
2031
 
1999
2032
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
2000
2033
  return normalize( abs( fDet ) * vN - vGrad );
2001
- }`);return{dHdxy:n,perturbNormalArb:r}}();var Rl=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Bl.UniformsUtils.merge([Bl.UniformsLib.fog,Bl.UniformsLib.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(`
2034
+ }`);return{dHdxy:n,perturbNormalArb:r}}();var Bl=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(_l.UniformsUtils.merge([_l.UniformsLib.fog,_l.UniformsLib.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(`
2002
2035
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2003
2036
  #include <skinbase_vertex>
2004
2037
  #include <skinnormal_vertex>
@@ -2065,7 +2098,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2065
2098
  outgoingLight *= ao;
2066
2099
  }
2067
2100
  `),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>"),t=f.join(`
2068
- `)}return t}};var gs=require("three");var Ll=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ze(Et),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(gs.UniformsUtils.merge([gs.UniformsLib.fog,gs.UniformsLib.lights])),gs.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2101
+ `)}return t}};var gs=require("three");var Rl=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ze(Et),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(gs.UniformsUtils.merge([gs.UniformsLib.fog,gs.UniformsLib.lights])),gs.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2069
2102
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2070
2103
  #include <skinbase_vertex>
2071
2104
  #include <skinnormal_vertex>
@@ -2094,7 +2127,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2094
2127
  if (dot(normal, faceNormal) < 0.0) {
2095
2128
  normal *= -1.0;
2096
2129
  }
2097
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let b=this.bumpMap.texture.flow(e,"t"),S=this.bumpMap.flow(e,"v3"),P=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",O="";this.bumpMap.projection.value===4?O=`
2130
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let b=this.bumpMap.texture.flow(e,"t"),S=this.bumpMap.flow(e,"v3"),P=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",C="";this.bumpMap.projection.value===4?C=`
2098
2131
  vec3 bumpNormal = vec3(0.0);
2099
2132
  {
2100
2133
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2116,13 +2149,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2116
2149
  }
2117
2150
 
2118
2151
  normal = bumpNormal;
2119
- `:O=`
2152
+ `:C=`
2120
2153
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2121
2154
  vec2 grad = dHdxy(${b.result}, bumpMapCachedUv, ${P});
2122
2155
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2123
2156
  `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2124
2157
  ${S.result};
2125
- ${O}
2158
+ ${C}
2126
2159
  `)}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"),S=this.roughnessMap.flow(e,"v3"),P="";this.roughnessMap.projection.value===4?P=`
2127
2160
  float roughnessChange = 1.0;
2128
2161
  {
@@ -2158,7 +2191,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2158
2191
  outgoingLight *= ao;
2159
2192
  }
2160
2193
  `),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>"),t=m.join(`
2161
- `)}return t}};var Vl=require("three");var zl=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Vl.UniformsUtils.merge([Vl.UniformsLib.fog,Vl.UniformsLib.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(`
2194
+ `)}return t}};var Ll=require("three");var Vl=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ll.UniformsUtils.merge([Ll.UniformsLib.fog,Ll.UniformsLib.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(`
2162
2195
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2163
2196
  #include <skinbase_vertex>
2164
2197
  #include <skinnormal_vertex>
@@ -2243,11 +2276,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2243
2276
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2244
2277
  }
2245
2278
  `),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>"),t=d.join(`
2246
- `)}return t}};var sd=require("three");var nd=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var nh=class extends nd{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},oh;function Mb(n){return typeof n=="string"?n:(oh||(oh=new nh),oh.load(n))}var id=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},ad=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var xs=class extends id{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;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 t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Mb(e),this.img.onload=t,await new Promise(i=>{this.img.onload=()=>{t(),i(null)}})}getTexture(e,t=1008,o=1006){let i=this._cache[e]?.[t]?.[o];if(i)return i;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new sd.VideoTexture(this.img,void 0,e,e):a=new sd.Texture(this.img,void 0,e,e,o,t),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]===void 0&&(this._cache[e][t]={}),this._cache[e][t][o]=a,a}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))for(let i of Object.values(o))i&&(i.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))for(let[a,s]of Object.entries(i))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 Nr=class extends xs{};var dt=require("three");function or(n,r){return r.color(n)}function Eb(n,r){switch(n.type){case"fresnel":return RM(n,r);case"gradient":return LM(n,r);case"depth":return VM(n,r);case"normal":return zM(n,r);case"noise":return GM(n,r);case"rainbow":return FM(n,r);case"toon":return jM(n,r);case"outline":return kM(n,r);case"transmission":return UM(n,r);case"color":return BM(n,r);case"pattern":return HM(n,r)}}function _M(n){return{type:n.type}}function mo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{..._M(n),alpha:i,mode:t,isMask:o}}function BM(n,r){return{...mo(n,r),color:or(n.color,r)}}function RM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...mo(n,r),color:or(a,r),bias:e,scale:t,intensity:o,factor:i}}function LM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...mo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new dt.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new dt.Vector2(...s),morph:new dt.Vector2(...l),angle:a}}function VM(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...mo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new dt.Vector3(...s),direction:l?new dt.Vector3(...l):new dt.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new dt.Vector4(d[0],d[1],d[2],d[3]):new dt.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function zM(n,r){let{cnormal:e}=n;return{...mo(n,r),cnormal:new dt.Vector3(e[0],e[1],e[2])}}function GM(n,r){return{...mo(n,r),scale:n.scale,move:n.move,fA:new dt.Vector2(...n.fA),fB:new dt.Vector2(...n.fB),size:new dt.Vector3(...n.size),distortion:new dt.Vector2(...n.distortion),colorA:or(n.colorA,r),colorB:or(n.colorB,r),colorC:or(n.colorC,r),colorD:or(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function FM(n,r){return{...mo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new dt.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new dt.Vector3(...n.offset)}}function jM(n,r){return{...mo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new dt.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new dt.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:or(n.shadowColor,r),offset:new dt.Vector3(...n.offset)}}function kM(n,r){return{...mo(n,r),outlineColor:or(n.outlineColor,r),contourColor:or(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new dt.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function UM(n,r){return{...mo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function HM(n,r){return{...mo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new dt.Vector2(...n.offset),colorA:or(n.colorA,r),colorB:or(n.colorB,r),frequency:new dt.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new dt.Vector2(...n.vertical),horizontal:new dt.Vector2(...n.horizontal),sides:n.sides}}var Hn=class extends kt{};var ld=require("three");var WM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},qM={depth:["colors"]};function $M(n,r,e){if(r==="isMask")return!0;let t=WM[n.type],o=qM[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function ih(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("magFilter"in i){let a=t;a.magFilter=i.magFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*ld.MathUtils.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function Nb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(ah(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof kn))switch(o=o||$M(e,i,a),s.constructor){case Ze:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case vr:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case tr:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case pr:{ih(a,r,e);break}case ho:{s.value=a.map(l=>new ld.Vector4(...l));break}default:{s.value=a;break}}}return o}var Wn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,qn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)ah(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return fr.createLightLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.uiBuffer(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new td(i),l=new rd(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Ge(t.projection??0),p=new Ge(["x","y","z"].indexOf(t.axis)??0),d=new Ge(t.side??0),f=new vt(t.size?new Qe.Vector2(t.size[0],t.size[1]):new Qe.Vector2(100,100)),h=new se(t.blending??0),m=new se(Wn(t.alpha,o)),y=new Ge(t.mode??0),b=new It(t.isMask??!1),S=new Un(a,s,c,u,p,d,f,h,l,m,y,b),P=new Xe(S.calpha,"f");return new ht(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},S,y,P,b,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(Wn(t.alpha,o)),l=new Ge(t.mode??0),c=new It(t.isMask??!1),u=new se((t.texture.rotation??0)*Qe.MathUtils.DEG2RAD),p=new cs(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ht(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new tr(new Qe.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Ge(t.noiseType??0),u=new Ge(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),f=new se(t.highCut??1),h=new se(t.lowCut??0),m=new Ge(t.quality??1),y=new ys(s,l,i,u,p,d,f,h,m,a,c);return new Gl(r,e,t,{offset:i,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 KM(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):Nb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?ih(o.props,t.shared,this):!0;return!1}dispose(){if(YM(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Nr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ht=class extends qn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Gl=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},fr=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLightLayer(e,t,o,i){let a,s=new se(Wn(o.alpha,i)),l=new Ge(o.mode),c=new se(o.bumpMapIntensity),u=new se(Wn(o.alphaOverride,i)),p;if(!o.visible)a=new ln,p={};else if(o.category==="lambert"){a=new _l;let d=new Ze(i.color(o.emissive)??0),f=new It(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new zl;let d=new se(o.shininess??30),f=new Ze(i.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Ll;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new It(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 Rl;let d=new se(o.shininess??30),f=new Ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new It(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 fr(e,t,o,a,p,i)}get category(){return this.node.category}};function YM(n){let r=n instanceof qn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function kr(n){return{alpha:new se(n.alpha??1),mode:new Ge(n.mode??0),isMask:new It(n.isMask??!1)}}function XM(n,r,e,t,o){switch(n.type){case"color":{let i=new Ze(t.color??Et),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Ze(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=kr(t),p=new El(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ht(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new tr(t.wavelengths??new Qe.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new tr(t.offset??new Qe.Vector3(0,0,0)),p=kr(t),d=new fs(i,a,s,l,c,u,p.alpha,p.isMask),f=new Xe(d.calpha,"f");return new ht(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=Ne.transmissionSize,c=Ne.transmissionRenderTarget,u=Ne.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new vt(d/p,1):new vt(1,p/d),h=kr(t),m=new ms(i,a,s,l,c,u,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Ge(t.positioning??0),a;t.colors?a=new ho(t.colors.length,t.colors):(a=new ho(10,new Qe.Vector4(0,0,0,1)),a.value[1]=new Qe.Vector4(1,1,1,1));let s;t.steps?s=new fo(t.steps.length,t.steps):(s=new fo(10,1),s.value[0]=0);let l=new tr(t.source??new Qe.Vector3(0,0,0)),c=new It(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new vr(t.shadowColor),f=new tr(t.offset??new Qe.Vector3(0,0,0)),h=kr(t),m=new hs(i,a,s,l,c,u,p,d,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{positioning:i,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 i=new Ze(t.outlineColor??16777215),a=new Ze(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),f=new tr(t.contourDirection??new Qe.Vector3(0,1,0)),h=new It(t.positionalLines??!1),m=new It(t.compensation??!0),y=Ne.normalRenderTarget,b=Ne.normalRenderTargetDepth,S=Ne.pixelRatioNode,P=Ne.resolution,O=kr(t),v=new ds(i,a,s,l,c,u,p,d,f,h,m,P,y,b,S,O.alpha),A=new Xe(v.calpha,"f");return new ht(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...O},v,O.mode,A,O.isMask,o)}case"depth":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new tr(t.origin??new Qe.Vector3),d=new tr(t.direction??new Qe.Vector3),f;t.colors?f=new ho(t.colors.length,t.colors):(f=new ho(2,new Qe.Vector4(0,0,0,1)),f.value[1]=new Qe.Vector4(1,1,1,1));let h;t.steps?h=new fo(t.steps.length,t.steps):(h=new fo(2,1),h.value[0]=0);let m=kr(t),y=new ss(i,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new Xe(y.calpha,"f");return new ht(r,e,n,{gradientType:i,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 i=new se(t.scale??1),a=new tr(t.size??new Qe.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new Qe.Vector2(1.7,9.2)),c=new vt(t.fB??new Qe.Vector2(8.3,2.8)),u=new vt(t.distortion??new Qe.Vector2(1,1)),p=new vr(t.colorA),d=new vr(t.colorB),f=new vr(t.colorC),h=new vr(t.colorD),m=new Ge(t.noiseType??0),y=new Ge(t.voronoiStyle??0),b=new se(t.highCut??1),S=new se(t.lowCut??0),P=new se(t.smoothness??.5),O=new se(t.seed??.5),v=new Ge(t.quality??1),A=kr(t),T=new us(i,a,s,l,c,u,p,d,f,h,A.alpha,m,A.isMask,y,b,S,P,O,v),g=new Xe(T.calpha,"f");return new ht(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...A,voronoiStyle:y,highCut:b,lowCut:S,smoothness:P,seed:O,quality:v},T,A.mode,g,A.isMask,o)}case"normal":{let i=new tr(t.cnormal??new Qe.Vector3(1,1,1)),a=kr(t),s=new ns(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s;t.colors?s=new ho(t.colors.length,t.colors):(s=new ho(10,new Qe.Vector4(0,0,0,1)),s.value[1]=new Qe.Vector4(1,1,1,1));let l;t.steps?l=new fo(t.steps.length,t.steps):(l=new fo(10,1),l.value[0]=0);let c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vt(t.morph??new Qe.Vector2(0,0)),p=new se(t.angle??0),d=kr(t),f=new ls(i,a,s,l,c,u,p,d.alpha,d.isMask),h=new Xe(f.calpha,"f");return new ht(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let i=new Ge(t.style??0),a=new Ge(t.projection??0),s=new Ge(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vr(t.colorA),p=new vr(t.colorB),d=new vt(t.frequency??new Qe.Vector2(10,10)),f=new se(t.size??.5),h=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),b=new se(t.rotation??0),S=new vt(t.vertical??new Qe.Vector2(0,1)),P=new vt(t.horizontal??new Qe.Vector2(0,1)),O=new Ge(t.sides??6),v=kr(t),A=new ps(i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,O,v.alpha,v.isMask),T=new Xe(A.calpha,"f");return new ht(r,e,n,{style:i,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:S,horizontal:P,sides:O,...v},A,v.mode,T,v.isMask,o)}default:{let i=new Ze(1,0,0,1),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function KM(n,r,e,t){let o=Eb(e,t);return XM(e,n,r,o,t)}function ah(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=Wn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function cd(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var wr=class extends Db.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},ud=class extends wr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Ii=class extends wr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,tt.startContext(this),this.reset0(e,t),tt.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new ud(e,t,o,this),a.needsJitter=this.needsJitter,this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){tt.startContext(this),(this.data!==e||o)&&this.reset0(e,t),tt.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Yt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>qn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=cd(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=cd(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=cd(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof fr),this.lightLayer===void 0&&(this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 fr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ht&&s.color instanceof Un&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(tt.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=cd(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Wn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);tt.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ht?t.color.mask=void 0:t instanceof fr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ht&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof fr?i.node.mask=new Kt(t.color,t.alpha,Kt.MUL):i instanceof ht&&(i.isMask.value||(i.color.mask=new Kt(t.color,t.alpha,Kt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ht),t=this.layers.findIndex(o=>o instanceof fr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof ht){if(a.isMask.value)continue;o=new os(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Xe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof fr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ht){if(i.isMask.value)continue;e=new os(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Gl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Kt(t,e[o].position,Kt.ADD),t=new Kt(t,new se(.5).setReadonly(!0),Kt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new ts;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ht){let t=e.params.texture;if(t instanceof Oi&&!t.image.loaded)return!1}return!0}};Object.defineProperties(wr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Mi=class extends Ii{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var _b=new Map;function Bb(n){if(typeof n=="string")return n;let r=_b.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},_b.set(n,r)),r.url}var QM,Rb=new Promise(n=>{QM=n});var Lb;Rb.then(n=>Lb=n);var Ei=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Bb(r),format:"wav"},this.sound=new Lb.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ut=require("three"),dd=class{constructor(){this.type="ShapePath";this.color=new Ut.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Ut.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,b,S){let P=m.x,O=y.x,v=b.x,A=S.x,T=m.y,g=y.y,D=b.y,E=S.y,M=(A-v)*(T-D)-(E-D)*(P-v),N=(O-P)*(T-D)-(g-T)*(P-v),_=(E-D)*(O-P)-(A-v)*(g-T),B=M/_,V=N/_;if(_===0&&M!==0||B<=0||B>=1||V<0||V>1)return null;if(M===0&&_===0){for(let k=0;k<2;k++)if(i(k===0?b:S,m,y),t.loc===e.ORIGIN){let L=k===0?b:S;return{x:L.x,y:L.y,t:t.t}}else if(t.loc===e.BETWEEN){let L=+(P+t.t*(O-P)).toPrecision(10),W=+(T+t.t*(g-T)).toPrecision(10);return{x:L,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?b:S,m,y),t.loc===e.ORIGIN){let F=W===0?b:S;return{x:F.x,y:F.y,t:t.t}}let k=+(P+B*(O-P)).toPrecision(10),L=+(T+B*(g-T)).toPrecision(10);return{x:k,y:L,t:B}}}function i(m,y,b){let S=b.x-y.x,P=b.y-y.y,O=m.x-y.x,v=m.y-y.y,A=S*v-O*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===b.x&&m.y===b.y){t.loc=e.DESTINATION,t.t=1;return}if(A<-Number.EPSILON){t.loc=e.LEFT;return}if(A>Number.EPSILON){t.loc=e.RIGHT;return}if(S*O<0||P*v<0){t.loc=e.BEHIND;return}if(Math.sqrt(S*S+P*P)<Math.sqrt(O*O+v*v)){t.loc=e.BEYOND;return}let T;S!==0?T=O/S:T=v/P,t.loc=e.BETWEEN,t.t=T}function a(m,y){let b=[],S=[];for(let P=1;P<m.length;P++){let O=m[P-1],v=m[P];for(let A=1;A<y.length;A++){let T=y[A-1],g=y[A],D=o(O,v,T,g);D!==null&&b.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),S.push(new Ut.Vector2(D.x,D.y)))}}return S}function s(m,y,b){let S=new Ut.Vector2;y.getCenter(S);let P=[];return b.forEach(O=>{O.boundingBox.containsPoint(S)&&a(m,O.points).forEach(A=>{P.push({identifier:O.identifier,isCW:O.isCW,point:A})})}),P.sort((O,v)=>O.point.x-v.point.x),P}function l(m,y,b,S,P){(P==null||P==="")&&(P="nonzero");let O=new Ut.Vector2;m.boundingBox.getCenter(O);let v=[new Ut.Vector2(b,O.y),new Ut.Vector2(S,O.y)],A=s(v,m.boundingBox,y);A.sort((N,_)=>N.point.x-_.point.x);let T=[],g=[];A.forEach(N=>{N.identifier===m.identifier?T.push(N):g.push(N)});let D=T[0].point.x,E=[],M=0;for(;M<g.length&&g[M].point.x<D;)E.length>0&&E[E.length-1]===g[M].identifier?E.pop():E.push(g[M].identifier),M++;if(E.push(m.identifier),P==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(P==="nonzero"){let N=!0,_=null,B=null;for(let V=0;V<E.length;V++){let k=E[V];y[k]&&(N?(B=y[k].isCW,N=!1,_=k):B!==y[k].isCW&&(B=y[k].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,S=999999999,P=-999999999,O=999999999;for(let v=0;v<y.length;v++){let A=y[v];A.y>b&&(b=A.y),A.y<S&&(S=A.y),A.x>P&&(P=A.x),A.x<O&&(O=A.x)}p<=P&&(p=P+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(O,S),new Ut.Vector2(P,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 Ut.Shape;b.curves=m.curves,f.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let O=d[P.identifier],v=new Ut.Path;v.curves=O.curves,b.holes.push(v)}}),h.push(b)}}),h}};var sh=!1,zb,lh=new Promise(n=>{zb=n}),Vb=!1;var pd;function Gb(){if(sh=!0,Vb)return;if(pd)return pd;async function n(){let e=await import("./opentype.js");zb(e),Vb=!0}return pd=n(),pd}var Fl=class{async load(r,e,t=()=>{}){let{load:o}=await lh;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await lh;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function ZM(n){return await(await fetch(n)).arrayBuffer()}var JM=new Fl;async function ch(n){let r,e,t=!1;if(n.url?(r=await ZM(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(sh){let o=await JM.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}var bs=require("three");function eE(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var fd=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=ch(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=ch(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(eE(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(r.charToGlyphIndex(h)),y=r.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(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(S=>this.getTextWidth(S,e)),s=e.width,l=this.getCharWidth(`
2247
- `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],h=r.map(S=>[]),m=r.map(S=>[]),y;for(let S=0;S<r.length;S++){let P=r[S],O={features:{liga:!0}},v=[];try{v=t.stringToGlyphs(P,O)}catch(T){console.warn(T)}p=this.getLineInitialOffsetX(a[S],s,e.horizontalAlign,P,l);let A=[];try{A=this.reverseLigaturesTable(t,P,v)}catch(T){console.warn(T)}u=this.computeSpaceWidthForLine(r,S,e);for(let T=0;T<v.length;T++){let g=v[T],D=g.index===0?`
2279
+ `)}return t}};var ad=require("three");var od=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var oh=class extends od{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},rh;function Ib(n){return typeof n=="string"?n:(rh||(rh=new oh),rh.load(n))}var nd=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},id=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var xs=class extends nd{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;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 t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Ib(e),this.img.onload=t,await new Promise(i=>{this.img.onload=()=>{t(),i(null)}})}getTexture(e,t=1008,o=1006){let i=this._cache[e]?.[t]?.[o];if(i)return i;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new ad.VideoTexture(this.img,void 0,e,e):a=new ad.Texture(this.img,void 0,e,e,o,t),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]===void 0&&(this._cache[e][t]={}),this._cache[e][t][o]=a,a}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))for(let i of Object.values(o))i&&(i.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))for(let[a,s]of Object.entries(i))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 Nr=class extends xs{};var dt=require("three");function or(n,r){return r.color(n)}function Mb(n,r){switch(n.type){case"fresnel":return RM(n,r);case"gradient":return LM(n,r);case"depth":return VM(n,r);case"normal":return zM(n,r);case"noise":return GM(n,r);case"rainbow":return FM(n,r);case"toon":return jM(n,r);case"outline":return kM(n,r);case"transmission":return UM(n,r);case"color":return BM(n,r);case"pattern":return HM(n,r)}}function _M(n){return{type:n.type}}function mo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{..._M(n),alpha:i,mode:t,isMask:o}}function BM(n,r){return{...mo(n,r),color:or(n.color,r)}}function RM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...mo(n,r),color:or(a,r),bias:e,scale:t,intensity:o,factor:i}}function LM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...mo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new dt.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new dt.Vector2(...s),morph:new dt.Vector2(...l),angle:a}}function VM(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...mo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new dt.Vector3(...s),direction:l?new dt.Vector3(...l):new dt.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new dt.Vector4(d[0],d[1],d[2],d[3]):new dt.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function zM(n,r){let{cnormal:e}=n;return{...mo(n,r),cnormal:new dt.Vector3(e[0],e[1],e[2])}}function GM(n,r){return{...mo(n,r),scale:n.scale,move:n.move,fA:new dt.Vector2(...n.fA),fB:new dt.Vector2(...n.fB),size:new dt.Vector3(...n.size),distortion:new dt.Vector2(...n.distortion),colorA:or(n.colorA,r),colorB:or(n.colorB,r),colorC:or(n.colorC,r),colorD:or(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function FM(n,r){return{...mo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new dt.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new dt.Vector3(...n.offset)}}function jM(n,r){return{...mo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new dt.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new dt.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:or(n.shadowColor,r),offset:new dt.Vector3(...n.offset)}}function kM(n,r){return{...mo(n,r),outlineColor:or(n.outlineColor,r),contourColor:or(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new dt.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function UM(n,r){return{...mo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function HM(n,r){return{...mo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new dt.Vector2(...n.offset),colorA:or(n.colorA,r),colorB:or(n.colorB,r),frequency:new dt.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new dt.Vector2(...n.vertical),horizontal:new dt.Vector2(...n.horizontal),sides:n.sides}}var Hn=class extends kt{};var sd=require("three");var WM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},qM={depth:["colors"]};function $M(n,r,e){if(r==="isMask")return!0;let t=WM[n.type],o=qM[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function nh(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("magFilter"in i){let a=t;a.magFilter=i.magFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*sd.MathUtils.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function Eb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(ih(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof kn))switch(o=o||$M(e,i,a),s.constructor){case Ze:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case vr:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case tr:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case pr:{nh(a,r,e);break}case ho:{s.value=a.map(l=>new sd.Vector4(...l));break}default:{s.value=a;break}}}return o}var Wn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,qn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)ih(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return fr.createLightLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.uiBuffer(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new ed(i),l=new td(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Ge(t.projection??0),p=new Ge(["x","y","z"].indexOf(t.axis)??0),d=new Ge(t.side??0),f=new vt(t.size?new Qe.Vector2(t.size[0],t.size[1]):new Qe.Vector2(100,100)),h=new se(t.blending??0),m=new se(Wn(t.alpha,o)),y=new Ge(t.mode??0),b=new It(t.isMask??!1),S=new Un(a,s,c,u,p,d,f,h,l,m,y,b),P=new Xe(S.calpha,"f");return new ht(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},S,y,P,b,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(Wn(t.alpha,o)),l=new Ge(t.mode??0),c=new It(t.isMask??!1),u=new se((t.texture.rotation??0)*Qe.MathUtils.DEG2RAD),p=new cs(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ht(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new tr(new Qe.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Ge(t.noiseType??0),u=new Ge(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),f=new se(t.highCut??1),h=new se(t.lowCut??0),m=new Ge(t.quality??1),y=new ys(s,l,i,u,p,d,f,h,m,a,c);return new zl(r,e,t,{offset:i,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 KM(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):Eb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?nh(o.props,t.shared,this):!0;return!1}dispose(){if(YM(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Nr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ht=class extends qn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},zl=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},fr=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLightLayer(e,t,o,i){let a,s=new se(Wn(o.alpha,i)),l=new Ge(o.mode),c=new se(o.bumpMapIntensity),u=new se(Wn(o.alphaOverride,i)),p;if(!o.visible)a=new ln,p={};else if(o.category==="lambert"){a=new Dl;let d=new Ze(i.color(o.emissive)??0),f=new It(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new Vl;let d=new se(o.shininess??30),f=new Ze(i.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Rl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new It(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 Bl;let d=new se(o.shininess??30),f=new Ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new It(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 fr(e,t,o,a,p,i)}get category(){return this.node.category}};function YM(n){let r=n instanceof qn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function kr(n){return{alpha:new se(n.alpha??1),mode:new Ge(n.mode??0),isMask:new It(n.isMask??!1)}}function XM(n,r,e,t,o){switch(n.type){case"color":{let i=new Ze(t.color??Et),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Ze(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=kr(t),p=new El(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ht(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new tr(t.wavelengths??new Qe.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new tr(t.offset??new Qe.Vector3(0,0,0)),p=kr(t),d=new fs(i,a,s,l,c,u,p.alpha,p.isMask),f=new Xe(d.calpha,"f");return new ht(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=Ne.transmissionSize,c=Ne.transmissionRenderTarget,u=Ne.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new vt(d/p,1):new vt(1,p/d),h=kr(t),m=new ms(i,a,s,l,c,u,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Ge(t.positioning??0),a;t.colors?a=new ho(t.colors.length,t.colors):(a=new ho(10,new Qe.Vector4(0,0,0,1)),a.value[1]=new Qe.Vector4(1,1,1,1));let s;t.steps?s=new fo(t.steps.length,t.steps):(s=new fo(10,1),s.value[0]=0);let l=new tr(t.source??new Qe.Vector3(0,0,0)),c=new It(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new vr(t.shadowColor),f=new tr(t.offset??new Qe.Vector3(0,0,0)),h=kr(t),m=new hs(i,a,s,l,c,u,p,d,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{positioning:i,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 i=new Ze(t.outlineColor??16777215),a=new Ze(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),f=new tr(t.contourDirection??new Qe.Vector3(0,1,0)),h=new It(t.positionalLines??!1),m=new It(t.compensation??!0),y=Ne.normalRenderTarget,b=Ne.normalRenderTargetDepth,S=Ne.pixelRatioNode,P=Ne.resolution,C=kr(t),v=new ds(i,a,s,l,c,u,p,d,f,h,m,P,y,b,S,C.alpha),A=new Xe(v.calpha,"f");return new ht(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...C},v,C.mode,A,C.isMask,o)}case"depth":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new tr(t.origin??new Qe.Vector3),d=new tr(t.direction??new Qe.Vector3),f;t.colors?f=new ho(t.colors.length,t.colors):(f=new ho(2,new Qe.Vector4(0,0,0,1)),f.value[1]=new Qe.Vector4(1,1,1,1));let h;t.steps?h=new fo(t.steps.length,t.steps):(h=new fo(2,1),h.value[0]=0);let m=kr(t),y=new ss(i,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new Xe(y.calpha,"f");return new ht(r,e,n,{gradientType:i,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 i=new se(t.scale??1),a=new tr(t.size??new Qe.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new Qe.Vector2(1.7,9.2)),c=new vt(t.fB??new Qe.Vector2(8.3,2.8)),u=new vt(t.distortion??new Qe.Vector2(1,1)),p=new vr(t.colorA),d=new vr(t.colorB),f=new vr(t.colorC),h=new vr(t.colorD),m=new Ge(t.noiseType??0),y=new Ge(t.voronoiStyle??0),b=new se(t.highCut??1),S=new se(t.lowCut??0),P=new se(t.smoothness??.5),C=new se(t.seed??.5),v=new Ge(t.quality??1),A=kr(t),T=new us(i,a,s,l,c,u,p,d,f,h,A.alpha,m,A.isMask,y,b,S,P,C,v),g=new Xe(T.calpha,"f");return new ht(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...A,voronoiStyle:y,highCut:b,lowCut:S,smoothness:P,seed:C,quality:v},T,A.mode,g,A.isMask,o)}case"normal":{let i=new tr(t.cnormal??new Qe.Vector3(1,1,1)),a=kr(t),s=new ns(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s;t.colors?s=new ho(t.colors.length,t.colors):(s=new ho(10,new Qe.Vector4(0,0,0,1)),s.value[1]=new Qe.Vector4(1,1,1,1));let l;t.steps?l=new fo(t.steps.length,t.steps):(l=new fo(10,1),l.value[0]=0);let c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vt(t.morph??new Qe.Vector2(0,0)),p=new se(t.angle??0),d=kr(t),f=new ls(i,a,s,l,c,u,p,d.alpha,d.isMask),h=new Xe(f.calpha,"f");return new ht(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let i=new Ge(t.style??0),a=new Ge(t.projection??0),s=new Ge(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vr(t.colorA),p=new vr(t.colorB),d=new vt(t.frequency??new Qe.Vector2(10,10)),f=new se(t.size??.5),h=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),b=new se(t.rotation??0),S=new vt(t.vertical??new Qe.Vector2(0,1)),P=new vt(t.horizontal??new Qe.Vector2(0,1)),C=new Ge(t.sides??6),v=kr(t),A=new ps(i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,C,v.alpha,v.isMask),T=new Xe(A.calpha,"f");return new ht(r,e,n,{style:i,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:S,horizontal:P,sides:C,...v},A,v.mode,T,v.isMask,o)}default:{let i=new Ze(1,0,0,1),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function KM(n,r,e,t){let o=Mb(e,t);return XM(e,n,r,o,t)}function ih(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=Wn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function ld(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var wr=class extends Nb.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},cd=class extends wr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Ii=class extends wr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,tt.startContext(this),this.reset0(e,t),tt.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new cd(e,t,o,this),a.needsJitter=this.needsJitter,this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){tt.startContext(this),(this.data!==e||o)&&this.reset0(e,t),tt.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Yt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>qn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=ld(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=ld(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=ld(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof fr),this.lightLayer===void 0&&(this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 fr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ht&&s.color instanceof Un&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(tt.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=ld(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Wn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);tt.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ht?t.color.mask=void 0:t instanceof fr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ht&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof fr?i.node.mask=new Kt(t.color,t.alpha,Kt.MUL):i instanceof ht&&(i.isMask.value||(i.color.mask=new Kt(t.color,t.alpha,Kt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ht),t=this.layers.findIndex(o=>o instanceof fr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof ht){if(a.isMask.value)continue;o=new os(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Xe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof fr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ht){if(i.isMask.value)continue;e=new os(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof zl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Kt(t,e[o].position,Kt.ADD),t=new Kt(t,new se(.5).setReadonly(!0),Kt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new ts;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ht){let t=e.params.texture;if(t instanceof Oi&&!t.image.loaded)return!1}return!0}};Object.defineProperties(wr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Mi=class extends Ii{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Db=new Map;function _b(n){if(typeof n=="string")return n;let r=Db.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Db.set(n,r)),r.url}var QM,Bb=new Promise(n=>{QM=n});var Rb;Bb.then(n=>Rb=n);var Ei=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:_b(r),format:"wav"},this.sound=new Rb.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ut=require("three"),ud=class{constructor(){this.type="ShapePath";this.color=new Ut.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Ut.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,b,S){let P=m.x,C=y.x,v=b.x,A=S.x,T=m.y,g=y.y,D=b.y,E=S.y,M=(A-v)*(T-D)-(E-D)*(P-v),N=(C-P)*(T-D)-(g-T)*(P-v),_=(E-D)*(C-P)-(A-v)*(g-T),B=M/_,V=N/_;if(_===0&&M!==0||B<=0||B>=1||V<0||V>1)return null;if(M===0&&_===0){for(let k=0;k<2;k++)if(i(k===0?b:S,m,y),t.loc===e.ORIGIN){let L=k===0?b:S;return{x:L.x,y:L.y,t:t.t}}else if(t.loc===e.BETWEEN){let L=+(P+t.t*(C-P)).toPrecision(10),W=+(T+t.t*(g-T)).toPrecision(10);return{x:L,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?b:S,m,y),t.loc===e.ORIGIN){let F=W===0?b:S;return{x:F.x,y:F.y,t:t.t}}let k=+(P+B*(C-P)).toPrecision(10),L=+(T+B*(g-T)).toPrecision(10);return{x:k,y:L,t:B}}}function i(m,y,b){let S=b.x-y.x,P=b.y-y.y,C=m.x-y.x,v=m.y-y.y,A=S*v-C*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===b.x&&m.y===b.y){t.loc=e.DESTINATION,t.t=1;return}if(A<-Number.EPSILON){t.loc=e.LEFT;return}if(A>Number.EPSILON){t.loc=e.RIGHT;return}if(S*C<0||P*v<0){t.loc=e.BEHIND;return}if(Math.sqrt(S*S+P*P)<Math.sqrt(C*C+v*v)){t.loc=e.BEYOND;return}let T;S!==0?T=C/S:T=v/P,t.loc=e.BETWEEN,t.t=T}function a(m,y){let b=[],S=[];for(let P=1;P<m.length;P++){let C=m[P-1],v=m[P];for(let A=1;A<y.length;A++){let T=y[A-1],g=y[A],D=o(C,v,T,g);D!==null&&b.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),S.push(new Ut.Vector2(D.x,D.y)))}}return S}function s(m,y,b){let S=new Ut.Vector2;y.getCenter(S);let P=[];return b.forEach(C=>{C.boundingBox.containsPoint(S)&&a(m,C.points).forEach(A=>{P.push({identifier:C.identifier,isCW:C.isCW,point:A})})}),P.sort((C,v)=>C.point.x-v.point.x),P}function l(m,y,b,S,P){(P==null||P==="")&&(P="nonzero");let C=new Ut.Vector2;m.boundingBox.getCenter(C);let v=[new Ut.Vector2(b,C.y),new Ut.Vector2(S,C.y)],A=s(v,m.boundingBox,y);A.sort((N,_)=>N.point.x-_.point.x);let T=[],g=[];A.forEach(N=>{N.identifier===m.identifier?T.push(N):g.push(N)});let D=T[0].point.x,E=[],M=0;for(;M<g.length&&g[M].point.x<D;)E.length>0&&E[E.length-1]===g[M].identifier?E.pop():E.push(g[M].identifier),M++;if(E.push(m.identifier),P==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(P==="nonzero"){let N=!0,_=null,B=null;for(let V=0;V<E.length;V++){let k=E[V];y[k]&&(N?(B=y[k].isCW,N=!1,_=k):B!==y[k].isCW&&(B=y[k].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,S=999999999,P=-999999999,C=999999999;for(let v=0;v<y.length;v++){let A=y[v];A.y>b&&(b=A.y),A.y<S&&(S=A.y),A.x>P&&(P=A.x),A.x<C&&(C=A.x)}p<=P&&(p=P+1),u>=C&&(u=C-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(C,S),new Ut.Vector2(P,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 Ut.Shape;b.curves=m.curves,f.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let C=d[P.identifier],v=new Ut.Path;v.curves=C.curves,b.holes.push(v)}}),h.push(b)}}),h}};var ah=!1,Vb,sh=new Promise(n=>{Vb=n}),Lb=!1;var dd;function zb(){if(ah=!0,Lb)return;if(dd)return dd;async function n(){let e=await import("./opentype.js");Vb(e),Lb=!0}return dd=n(),dd}var Gl=class{async load(r,e,t=()=>{}){let{load:o}=await sh;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await sh;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function ZM(n){return await(await fetch(n)).arrayBuffer()}var JM=new Gl;async function lh(n){let r,e,t=!1;if(n.url?(r=await ZM(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(ah){let o=await JM.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}var bs=require("three");function eE(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var pd=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=lh(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=lh(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(eE(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(r.charToGlyphIndex(h)),y=r.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(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(S=>this.getTextWidth(S,e)),s=e.width,l=this.getCharWidth(`
2280
+ `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],h=r.map(S=>[]),m=r.map(S=>[]),y;for(let S=0;S<r.length;S++){let P=r[S],C={features:{liga:!0}},v=[];try{v=t.stringToGlyphs(P,C)}catch(T){console.warn(T)}p=this.getLineInitialOffsetX(a[S],s,e.horizontalAlign,P,l);let A=[];try{A=this.reverseLigaturesTable(t,P,v)}catch(T){console.warn(T)}u=this.computeSpaceWidthForLine(r,S,e);for(let T=0;T<v.length;T++){let g=v[T],D=g.index===0?`
2248
2281
  `:g.unicode?String.fromCharCode(g.unicode):void 0,E=A[T],M=0,N=0;T===0&&e.horizontalAlign===2&&g.leftSideBearing!==void 0&&(N=-g.leftSideBearing*o),y&&(M=t.getKerningValue(g,y)*o),p+=N+M;let _=0;if(D===`
2249
2282
  `)_=c;else if(D===" ")_=u;else{let B=this.createPath(g,o,p,d,e);B&&(_=B.offsetX-(M+N),f.push(B.path))}if(E.replacements.length===1)m[S].push([p,d]),h[S].push(_);else{let B=E.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,F)=>W+=F,0),k=B.map(W=>W/V),L=p;for(let W=0;W<k.length;W++){let F=_*k[W];m[S].push([L,d]),h[S].push(F),L+=F}}p+=_,y=g}d-=i}let b=[];for(let S=0,P=f.length;S<P;S++)b.push(...f[S].toShapes());return{shapes:b,charWidths:h,lineWidths:a,charCoords:m}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2250
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new dd,l=(r.advanceWidth??1)*e;if(r)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=tE(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,l=this.getTextWidth(i,t);return(s-(l-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function tE(n){if(n.length){let r=n[0];if(r instanceof bs.LineCurve)return r.v1;if(r instanceof bs.CubicBezierCurve||r instanceof bs.QuadraticBezierCurve)return r.v0}}var uh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},jl=class extends uh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=an(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Fb={markNeedsUpdateRendererDirty:()=>{}};var ph=require("three");var hd=1e3,jb=512*hd;function rE(n,r){let e=typeof n;return!!((r==="string"||r==="number")&&e===r||r==="boolean"&&(n==="true"||n==="false"||n===!0||n===!1)||r==="image"&&e==="string"&&n.startsWith("http"))}var kb="https://hooks.spline.design",oE=`${kb}/events?hashFile=`,IK=`${kb}/`,md=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=nn();this.reconnectWaitFor=hd;this._onError=r=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=r=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=hd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=hd,this._connected=!1};this._onMessage=r=>{let e=r.data,t;try{t=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(t){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:i})=>{t[i.name]!==void 0&&rE(t[i.name],i.type)&&(this.result===void 0&&(this.result={}),this.result[i.name]=t[i.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(oE+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>jb&&(this.reconnectWaitFor=jb),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(r){this.userWebhook=r}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(r=>r.data.name)}getParameterValue(r){if(this.getParametersKeys().includes(r)){if(this.result)return this.result?.[r];for(let t of this.userWebhook.parametersSchemas)if(t.data.name===r)return vu.defaultParameterValueByType(t.data.type)}}};var nE=globalThis.atob,iE=globalThis.btoa,Ur=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static base64ToArrayBuffer(r){let e=nE(r),t=e.length,o=new Uint8Array(t);for(let i=0;i<t;i++)o[i]=e.charCodeAt(i);return o.buffer}static arrayBufferToBase64(r){r instanceof Float32Array?r=this.floatTo16BitPCM(r):r instanceof Int16Array&&(r=r.buffer);let e="",t=new Uint8Array(r),o=32768;for(let i=0;i<t.length;i+=o){let a=t.subarray(i,i+o);e+=String.fromCharCode.apply(null,a)}return iE(e)}static mergeInt16Arrays(r,e){if(r instanceof ArrayBuffer&&(r=new Int16Array(r)),e instanceof ArrayBuffer&&(e=new Int16Array(e)),!(r instanceof Int16Array)||!(e instanceof Int16Array))throw new Error("Both items must be Int16Array");let t=new Int16Array(r.length+e.length);for(let o=0;o<r.length;o++)t[o]=r[o];for(let o=0;o<e.length;o++)t[r.length+o]=e[o];return t}static generateId(r,e=21){let t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",o=Array(e-r.length).fill(0).map(i=>t[Math.floor(Math.random()*t.length)]).join("");return`${r}${o}`}};var aE=n=>new Promise(r=>setTimeout(()=>r(),n)),vs=class{constructor(){this.eventHandlers={},this.nextEventHandlers={}}clearEventHandlers(){return this.eventHandlers={},this.nextEventHandlers={},!0}on(r,e){return this.eventHandlers[r]=this.eventHandlers[r]||[],this.eventHandlers[r].push(e),e}onNext(r,e){return this.nextEventHandlers[r]=this.nextEventHandlers[r]||[],this.nextEventHandlers[r].push(e),e}off(r,e){let t=this.eventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.eventHandlers[r];return!0}offNext(r,e){let t=this.nextEventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified next event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.nextEventHandlers[r];return!0}async waitForNext(r,e=null){let t=Date.now(),o;for(this.onNext(r,i=>o=i);!o;){if(e&&Date.now()-t>e)return null;await aE(1)}return o}dispatch(r,e){let t=[].concat(this.eventHandlers[r]||[]);for(let i of t)i(e);let o=[].concat(this.nextEventHandlers[r]||[]);for(let i of o)i(e);return delete this.nextEventHandlers[r],!0}};var kl=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){if(super(),this.defaultUrl="wss://api.openai.com/v1/realtime",this.url=r||this.defaultUrl,this.apiKey=e||null,this.debug=!!o,this.ws=null,globalThis.document&&this.apiKey&&!t)throw new Error('Can not provide API key in the browser without "dangerouslyAllowAPIKeyInBrowser" set to true')}isConnected(){return!!this.ws}log(...r){let t=[`[Websocket/${new Date().toISOString()}]`].concat(r).map(o=>typeof o=="object"&&o!==null?JSON.stringify(o,null,2):o);return this.debug&&console.log(...t),!0}async connect({model:r}={model:"gpt-4o-realtime-preview-2024-10-01"}){if(!this.apiKey&&this.url===this.defaultUrl&&console.warn(`No apiKey provided for connection to "${this.url}"`),this.isConnected())throw new Error("Already connected");if(globalThis.document){this.apiKey&&console.warn("Warning: Connecting using API key in the browser, this is not recommended");let e=globalThis.WebSocket,t=new e(`${this.url}${r?`?model=${r}`:""}`,["realtime",`openai-insecure-api-key.${this.apiKey}`,"openai-beta.realtime-v1"]);return t.addEventListener("message",o=>{let i=JSON.parse(o.data);this.receive(i.type,i)}),new Promise((o,i)=>{let a=()=>{this.disconnect(t),i(new Error(`Could not connect to "${this.url}"`))};t.addEventListener("error",a),t.addEventListener("open",()=>{this.log(`Connected to "${this.url}"`),t.removeEventListener("error",a),t.addEventListener("error",()=>{this.disconnect(t),this.log(`Error, disconnected from "${this.url}"`),this.dispatch("close",{error:!0})}),t.addEventListener("close",()=>{this.disconnect(t),this.log(`Disconnected from "${this.url}"`),this.dispatch("close",{error:!1})}),this.ws=t,o(!0)})})}}disconnect(r){if(!r||this.ws===r)return this.ws&&this.ws.close(),this.ws=null,!0}receive(r,e){return this.log("received:",r,e),this.dispatch(`server.${r}`,e),this.dispatch("server.*",e),!0}send(r,e){if(!this.isConnected())throw new Error("RealtimeAPI is not connected");if(e=e||{},typeof e!="object")throw new Error("data must be an object");let t={event_id:Ur.generateId("evt_"),type:r,...e};return this.dispatch(`client.${r}`,t),this.dispatch("client.*",t),this.log("sent:",r,t),this.ws.send(JSON.stringify(t)),!0}};var Ul=class{constructor(){go(this,"defaultFrequency",24e3);go(this,"EventProcessors",{"conversation.item.created":r=>{let{item:e}=r,t=JSON.parse(JSON.stringify(e));if(this.itemLookup[t.id]||(this.itemLookup[t.id]=t,this.items.push(t)),t.formatted={},t.formatted.audio=new Int16Array(0),t.formatted.text="",t.formatted.transcript="",this.queuedSpeechItems[t.id]&&(t.formatted.audio=this.queuedSpeechItems[t.id].audio,delete this.queuedSpeechItems[t.id]),t.content){let o=t.content.filter(i=>["text","input_text"].includes(i.type));for(let i of o)t.formatted.text+=i.text}return this.queuedTranscriptItems[t.id]&&(t.formatted.transcript=this.queuedTranscriptItems.transcript,delete this.queuedTranscriptItems[t.id]),t.type==="message"?t.role==="user"?(t.status="completed",this.queuedInputAudio&&(t.formatted.audio=this.queuedInputAudio,this.queuedInputAudio=null)):t.status="in_progress":t.type==="function_call"?(t.formatted.tool={type:"function",name:t.name,call_id:t.call_id,arguments:""},t.status="in_progress"):t.type==="function_call_output"&&(t.status="completed",t.formatted.output=t.output),{item:t,delta:null}},"conversation.item.truncated":r=>{let{item_id:e,audio_end_ms:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`item.truncated: Item "${e}" not found`);let i=Math.floor(t*this.defaultFrequency/1e3);return o.formatted.transcript="",o.formatted.audio=o.formatted.audio.slice(0,i),{item:o,delta:null}},"conversation.item.deleted":r=>{let{item_id:e}=r,t=this.itemLookup[e];if(!t)throw new Error(`item.deleted: Item "${e}" not found`);delete this.itemLookup[t.id];let o=this.items.indexOf(t);return o>-1&&this.items.splice(o,1),{item:t,delta:null}},"conversation.item.input_audio_transcription.completed":r=>{let{item_id:e,content_index:t,transcript:o}=r,i=this.itemLookup[e],a=o||" ";return i?(i.content[t].transcript=o,i.formatted.transcript=a,{item:i,delta:{transcript:o}}):(this.queuedTranscriptItems[e]={transcript:a},{item:null,delta:null})},"input_audio_buffer.speech_started":r=>{let{item_id:e,audio_start_ms:t}=r;return this.queuedSpeechItems[e]={audio_start_ms:t},{item:null,delta:null}},"input_audio_buffer.speech_stopped":(r,e)=>{let{item_id:t,audio_end_ms:o}=r;this.queuedSpeechItems[t]||(this.queuedSpeechItems[t]={audio_start_ms:o});let i=this.queuedSpeechItems[t];if(i.audio_end_ms=o,e){let a=Math.floor(i.audio_start_ms*this.defaultFrequency/1e3),s=Math.floor(i.audio_end_ms*this.defaultFrequency/1e3);i.audio=e.slice(a,s)}return{item:null,delta:null}},"response.created":r=>{let{response:e}=r;return this.responseLookup[e.id]||(this.responseLookup[e.id]=e,this.responses.push(e)),{item:null,delta:null}},"response.output_item.added":r=>{let{response_id:e,item:t}=r,o=this.responseLookup[e];if(!o)throw new Error(`response.output_item.added: Response "${e}" not found`);return o.output.push(t.id),{item:null,delta:null}},"response.output_item.done":r=>{let{item:e}=r;if(!e)throw new Error('response.output_item.done: Missing "item"');let t=this.itemLookup[e.id];if(!t)throw new Error(`response.output_item.done: Item "${e.id}" not found`);return t.status=e.status,{item:t,delta:null}},"response.content_part.added":r=>{let{item_id:e,part:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.content_part.added: Item "${e}" not found`);return o.content.push(t),{item:o,delta:null}},"response.audio_transcript.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio_transcript.delta: Item "${e}" not found`);return i.content[t].transcript+=o,i.formatted.transcript+=o,{item:i,delta:{transcript:o}}},"response.audio.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio.delta: Item "${e}" not found`);let a=Ur.base64ToArrayBuffer(o),s=new Int16Array(a);return i.formatted.audio=Ur.mergeInt16Arrays(i.formatted.audio,s),{item:i,delta:{audio:s}}},"response.text.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.text.delta: Item "${e}" not found`);return i.content[t].text+=o,i.formatted.text+=o,{item:i,delta:{text:o}}},"response.function_call_arguments.delta":r=>{let{item_id:e,delta:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.function_call_arguments.delta: Item "${e}" not found`);return o.arguments+=t,o.formatted.tool.arguments+=t,{item:o,delta:{arguments:t}}}});this.clear()}clear(){return this.itemLookup={},this.items=[],this.responseLookup={},this.responses=[],this.queuedSpeechItems={},this.queuedTranscriptItems={},this.queuedInputAudio=null,!0}queueInputAudio(r){return this.queuedInputAudio=r,r}processEvent(r,...e){if(!r.event_id)throw console.error(r),new Error('Missing "event_id" on event');if(!r.type)throw console.error(r),new Error('Missing "type" on event');let t=this.EventProcessors[r.type];if(!t)throw new Error(`Missing conversation event processor for "${r.type}"`);return t.call(this,r,...e)}getItem(r){return this.itemLookup[r]||null}getItems(){return this.items.slice()}};var Ss=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){super(),this.defaultSessionConfig={modalities:["text","audio"],instructions:"",voice:"alloy",input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:null,turn_detection:null,tools:[],tool_choice:"auto",temperature:.8,max_response_output_tokens:4096},this.sessionConfig={},this.transcriptionModels=[{model:"whisper-1"}],this.defaultServerVadConfig={type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:200},this.realtime=new kl({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}),this.conversation=new Ul,this._resetConfig(),this._addAPIEventHandlers()}_resetConfig(){return this.sessionCreated=!1,this.tools={},this.sessionConfig=JSON.parse(JSON.stringify(this.defaultSessionConfig)),this.inputAudioBuffer=new Int16Array(0),!0}_addAPIEventHandlers(){this.realtime.on("client.*",o=>{let i={time:new Date().toISOString(),source:"client",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.*",o=>{let i={time:new Date().toISOString(),source:"server",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.session.created",()=>this.sessionCreated=!0);let r=(o,...i)=>{let{item:a,delta:s}=this.conversation.processEvent(o,...i);return{item:a,delta:s}},e=(o,...i)=>{let{item:a,delta:s}=r(o,...i);return a&&this.dispatch("conversation.updated",{item:a,delta:s}),{item:a,delta:s}},t=async o=>{try{let i=JSON.parse(o.arguments),a=this.tools[o.name];if(!a)throw new Error(`Tool "${o.name}" has not been added`);let s=await a.handler(i);this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify(s)}})}catch(i){this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify({error:i.message})}})}this.createResponse()};return this.realtime.on("server.response.created",r),this.realtime.on("server.response.output_item.added",r),this.realtime.on("server.response.content_part.added",r),this.realtime.on("server.input_audio_buffer.speech_started",o=>{r(o),this.dispatch("conversation.interrupted")}),this.realtime.on("server.input_audio_buffer.speech_stopped",o=>r(o,this.inputAudioBuffer)),this.realtime.on("server.conversation.item.created",o=>{let{item:i}=e(o);this.dispatch("conversation.item.appended",{item:i}),i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i})}),this.realtime.on("server.conversation.item.truncated",e),this.realtime.on("server.conversation.item.deleted",e),this.realtime.on("server.conversation.item.input_audio_transcription.completed",e),this.realtime.on("server.response.audio_transcript.delta",e),this.realtime.on("server.response.audio.delta",e),this.realtime.on("server.response.text.delta",e),this.realtime.on("server.response.function_call_arguments.delta",e),this.realtime.on("server.response.output_item.done",async o=>{let{item:i}=e(o);i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i}),i.formatted.tool&&t(i.formatted.tool)}),!0}isConnected(){return this.realtime.isConnected()}reset(){return this.disconnect(),this.clearEventHandlers(),this.realtime.clearEventHandlers(),this._resetConfig(),this._addAPIEventHandlers(),!0}async connect(){if(this.isConnected())throw new Error("Already connected, use .disconnect() first");return await this.realtime.connect(),this.updateSession(),!0}async waitForSessionCreated(){if(!this.isConnected())throw new Error("Not connected, use .connect() first");for(;!this.sessionCreated;)await new Promise(r=>setTimeout(()=>r(),1));return!0}disconnect(){this.sessionCreated=!1,this.realtime.isConnected()&&this.realtime.disconnect(),this.conversation.clear()}getTurnDetectionType(){return this.sessionConfig.turn_detection?.type||null}addTool(r,e){if(!r?.name)throw new Error("Missing tool name in definition");let t=r?.name;if(this.tools[t])throw new Error(`Tool "${t}" already added. Please use .removeTool("${t}") before trying to add again.`);if(typeof e!="function")throw new Error(`Tool "${t}" handler must be a function`);return this.tools[t]={definition:r,handler:e},this.updateSession(),this.tools[t]}removeTool(r){if(!this.tools[r])throw new Error(`Tool "${r}" does not exist, can not be removed.`);return delete this.tools[r],!0}deleteItem(r){return this.realtime.send("conversation.item.delete",{item_id:r}),!0}updateSession({modalities:r=void 0,instructions:e=void 0,voice:t=void 0,input_audio_format:o=void 0,output_audio_format:i=void 0,input_audio_transcription:a=void 0,turn_detection:s=void 0,tools:l=void 0,tool_choice:c=void 0,temperature:u=void 0,max_response_output_tokens:p=void 0}={}){r!==void 0&&(this.sessionConfig.modalities=r),e!==void 0&&(this.sessionConfig.instructions=e),t!==void 0&&(this.sessionConfig.voice=t),o!==void 0&&(this.sessionConfig.input_audio_format=o),i!==void 0&&(this.sessionConfig.output_audio_format=i),a!==void 0&&(this.sessionConfig.input_audio_transcription=a),s!==void 0&&(this.sessionConfig.turn_detection=s),l!==void 0&&(this.sessionConfig.tools=l),c!==void 0&&(this.sessionConfig.tool_choice=c),u!==void 0&&(this.sessionConfig.temperature=u),p!==void 0&&(this.sessionConfig.max_response_output_tokens=p);let d=[].concat((l||[]).map(h=>{let m={type:"function",...h};if(this.tools[m?.name])throw new Error(`Tool "${m?.name}" has already been defined`);return m}),Object.keys(this.tools).map(h=>({type:"function",...this.tools[h].definition}))),f={...this.sessionConfig};return f.tools=d,this.realtime.isConnected()&&this.realtime.send("session.update",{session:f}),!0}sendUserMessageContent(r=[]){if(r.length){for(let e of r)e.type==="input_audio"&&(e.audio instanceof ArrayBuffer||e.audio instanceof Int16Array)&&(e.audio=Ur.arrayBufferToBase64(e.audio));this.realtime.send("conversation.item.create",{item:{type:"message",role:"user",content:r}})}return this.createResponse(),!0}appendInputAudio(r){return r.byteLength>0&&(this.realtime.send("input_audio_buffer.append",{audio:Ur.arrayBufferToBase64(r)}),this.inputAudioBuffer=Ur.mergeInt16Arrays(this.inputAudioBuffer,r)),!0}createResponse(){return this.getTurnDetectionType()===null&&this.inputAudioBuffer.byteLength>0&&(this.realtime.send("input_audio_buffer.commit"),this.conversation.queueInputAudio(this.inputAudioBuffer),this.inputAudioBuffer=new Int16Array(0)),this.realtime.send("response.create"),!0}cancelResponse(r,e=0){if(r){if(r){let t=this.conversation.getItem(r);if(!t)throw new Error(`Could not find item "${r}"`);if(t.type!=="message")throw new Error('Can only cancelResponse messages with type "message"');if(t.role!=="assistant")throw new Error('Can only cancelResponse messages with role "assistant"');this.realtime.send("response.cancel");let o=t.content.findIndex(i=>i.type==="audio");if(o===-1)throw new Error("Could not find audio on item to cancel");return this.realtime.send("conversation.item.truncate",{item_id:r,content_index:o,audio_end_ms:Math.floor(e/this.conversation.defaultFrequency*1e3)}),{item:t}}}else return this.realtime.send("response.cancel"),{item:null}}async waitForNextItem(){let r=await this.waitForNext("conversation.item.appended"),{item:e}=r;return{item:e}}async waitForNextCompletedItem(){let r=await this.waitForNext("conversation.item.completed"),{item:e}=r;return{item:e}}};var sE=`
2283
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new ud,l=(r.advanceWidth??1)*e;if(r)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=tE(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,l=this.getTextWidth(i,t);return(s-(l-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function tE(n){if(n.length){let r=n[0];if(r instanceof bs.LineCurve)return r.v1;if(r instanceof bs.CubicBezierCurve||r instanceof bs.QuadraticBezierCurve)return r.v0}}var ch=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Fl=class extends ch{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=an(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Gb={markNeedsUpdateRendererDirty:()=>{}};var dh=require("three");var fd=1e3,Fb=512*fd;function rE(n,r){let e=typeof n;return!!((r==="string"||r==="number")&&e===r||r==="boolean"&&(n==="true"||n==="false"||n===!0||n===!1)||r==="image"&&e==="string"&&n.startsWith("http"))}var jb="https://hooks.spline.design",oE=`${jb}/events?hashFile=`,IK=`${jb}/`,hd=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=nn();this.reconnectWaitFor=fd;this._onError=r=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=r=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=fd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=fd,this._connected=!1};this._onMessage=r=>{let e=r.data,t;try{t=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(t){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:i})=>{t[i.name]!==void 0&&rE(t[i.name],i.type)&&(this.result===void 0&&(this.result={}),this.result[i.name]=t[i.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(oE+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>Fb&&(this.reconnectWaitFor=Fb),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(r){this.userWebhook=r}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(r=>r.data.name)}getParameterValue(r){if(this.getParametersKeys().includes(r)){if(this.result)return this.result?.[r];for(let t of this.userWebhook.parametersSchemas)if(t.data.name===r)return bu.defaultParameterValueByType(t.data.type)}}};var nE=globalThis.atob,iE=globalThis.btoa,Ur=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static base64ToArrayBuffer(r){let e=nE(r),t=e.length,o=new Uint8Array(t);for(let i=0;i<t;i++)o[i]=e.charCodeAt(i);return o.buffer}static arrayBufferToBase64(r){r instanceof Float32Array?r=this.floatTo16BitPCM(r):r instanceof Int16Array&&(r=r.buffer);let e="",t=new Uint8Array(r),o=32768;for(let i=0;i<t.length;i+=o){let a=t.subarray(i,i+o);e+=String.fromCharCode.apply(null,a)}return iE(e)}static mergeInt16Arrays(r,e){if(r instanceof ArrayBuffer&&(r=new Int16Array(r)),e instanceof ArrayBuffer&&(e=new Int16Array(e)),!(r instanceof Int16Array)||!(e instanceof Int16Array))throw new Error("Both items must be Int16Array");let t=new Int16Array(r.length+e.length);for(let o=0;o<r.length;o++)t[o]=r[o];for(let o=0;o<e.length;o++)t[r.length+o]=e[o];return t}static generateId(r,e=21){let t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",o=Array(e-r.length).fill(0).map(i=>t[Math.floor(Math.random()*t.length)]).join("");return`${r}${o}`}};var aE=n=>new Promise(r=>setTimeout(()=>r(),n)),vs=class{constructor(){this.eventHandlers={},this.nextEventHandlers={}}clearEventHandlers(){return this.eventHandlers={},this.nextEventHandlers={},!0}on(r,e){return this.eventHandlers[r]=this.eventHandlers[r]||[],this.eventHandlers[r].push(e),e}onNext(r,e){return this.nextEventHandlers[r]=this.nextEventHandlers[r]||[],this.nextEventHandlers[r].push(e),e}off(r,e){let t=this.eventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.eventHandlers[r];return!0}offNext(r,e){let t=this.nextEventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified next event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.nextEventHandlers[r];return!0}async waitForNext(r,e=null){let t=Date.now(),o;for(this.onNext(r,i=>o=i);!o;){if(e&&Date.now()-t>e)return null;await aE(1)}return o}dispatch(r,e){let t=[].concat(this.eventHandlers[r]||[]);for(let i of t)i(e);let o=[].concat(this.nextEventHandlers[r]||[]);for(let i of o)i(e);return delete this.nextEventHandlers[r],!0}};var jl=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){if(super(),this.defaultUrl="wss://api.openai.com/v1/realtime",this.url=r||this.defaultUrl,this.apiKey=e||null,this.debug=!!o,this.ws=null,globalThis.document&&this.apiKey&&!t)throw new Error('Can not provide API key in the browser without "dangerouslyAllowAPIKeyInBrowser" set to true')}isConnected(){return!!this.ws}log(...r){let t=[`[Websocket/${new Date().toISOString()}]`].concat(r).map(o=>typeof o=="object"&&o!==null?JSON.stringify(o,null,2):o);return this.debug&&console.log(...t),!0}async connect({model:r}={model:"gpt-4o-realtime-preview-2024-10-01"}){if(!this.apiKey&&this.url===this.defaultUrl&&console.warn(`No apiKey provided for connection to "${this.url}"`),this.isConnected())throw new Error("Already connected");if(globalThis.document){this.apiKey&&console.warn("Warning: Connecting using API key in the browser, this is not recommended");let e=globalThis.WebSocket,t=new e(`${this.url}${r?`?model=${r}`:""}`,["realtime",`openai-insecure-api-key.${this.apiKey}`,"openai-beta.realtime-v1"]);return t.addEventListener("message",o=>{let i=JSON.parse(o.data);this.receive(i.type,i)}),new Promise((o,i)=>{let a=()=>{this.disconnect(t),i(new Error(`Could not connect to "${this.url}"`))};t.addEventListener("error",a),t.addEventListener("open",()=>{this.log(`Connected to "${this.url}"`),t.removeEventListener("error",a),t.addEventListener("error",()=>{this.disconnect(t),this.log(`Error, disconnected from "${this.url}"`),this.dispatch("close",{error:!0})}),t.addEventListener("close",()=>{this.disconnect(t),this.log(`Disconnected from "${this.url}"`),this.dispatch("close",{error:!1})}),this.ws=t,o(!0)})})}}disconnect(r){if(!r||this.ws===r)return this.ws&&this.ws.close(),this.ws=null,!0}receive(r,e){return this.log("received:",r,e),this.dispatch(`server.${r}`,e),this.dispatch("server.*",e),!0}send(r,e){if(!this.isConnected())throw new Error("RealtimeAPI is not connected");if(e=e||{},typeof e!="object")throw new Error("data must be an object");let t={event_id:Ur.generateId("evt_"),type:r,...e};return this.dispatch(`client.${r}`,t),this.dispatch("client.*",t),this.log("sent:",r,t),this.ws.send(JSON.stringify(t)),!0}};var kl=class{constructor(){go(this,"defaultFrequency",24e3);go(this,"EventProcessors",{"conversation.item.created":r=>{let{item:e}=r,t=JSON.parse(JSON.stringify(e));if(this.itemLookup[t.id]||(this.itemLookup[t.id]=t,this.items.push(t)),t.formatted={},t.formatted.audio=new Int16Array(0),t.formatted.text="",t.formatted.transcript="",this.queuedSpeechItems[t.id]&&(t.formatted.audio=this.queuedSpeechItems[t.id].audio,delete this.queuedSpeechItems[t.id]),t.content){let o=t.content.filter(i=>["text","input_text"].includes(i.type));for(let i of o)t.formatted.text+=i.text}return this.queuedTranscriptItems[t.id]&&(t.formatted.transcript=this.queuedTranscriptItems.transcript,delete this.queuedTranscriptItems[t.id]),t.type==="message"?t.role==="user"?(t.status="completed",this.queuedInputAudio&&(t.formatted.audio=this.queuedInputAudio,this.queuedInputAudio=null)):t.status="in_progress":t.type==="function_call"?(t.formatted.tool={type:"function",name:t.name,call_id:t.call_id,arguments:""},t.status="in_progress"):t.type==="function_call_output"&&(t.status="completed",t.formatted.output=t.output),{item:t,delta:null}},"conversation.item.truncated":r=>{let{item_id:e,audio_end_ms:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`item.truncated: Item "${e}" not found`);let i=Math.floor(t*this.defaultFrequency/1e3);return o.formatted.transcript="",o.formatted.audio=o.formatted.audio.slice(0,i),{item:o,delta:null}},"conversation.item.deleted":r=>{let{item_id:e}=r,t=this.itemLookup[e];if(!t)throw new Error(`item.deleted: Item "${e}" not found`);delete this.itemLookup[t.id];let o=this.items.indexOf(t);return o>-1&&this.items.splice(o,1),{item:t,delta:null}},"conversation.item.input_audio_transcription.completed":r=>{let{item_id:e,content_index:t,transcript:o}=r,i=this.itemLookup[e],a=o||" ";return i?(i.content[t].transcript=o,i.formatted.transcript=a,{item:i,delta:{transcript:o}}):(this.queuedTranscriptItems[e]={transcript:a},{item:null,delta:null})},"input_audio_buffer.speech_started":r=>{let{item_id:e,audio_start_ms:t}=r;return this.queuedSpeechItems[e]={audio_start_ms:t},{item:null,delta:null}},"input_audio_buffer.speech_stopped":(r,e)=>{let{item_id:t,audio_end_ms:o}=r;this.queuedSpeechItems[t]||(this.queuedSpeechItems[t]={audio_start_ms:o});let i=this.queuedSpeechItems[t];if(i.audio_end_ms=o,e){let a=Math.floor(i.audio_start_ms*this.defaultFrequency/1e3),s=Math.floor(i.audio_end_ms*this.defaultFrequency/1e3);i.audio=e.slice(a,s)}return{item:null,delta:null}},"response.created":r=>{let{response:e}=r;return this.responseLookup[e.id]||(this.responseLookup[e.id]=e,this.responses.push(e)),{item:null,delta:null}},"response.output_item.added":r=>{let{response_id:e,item:t}=r,o=this.responseLookup[e];if(!o)throw new Error(`response.output_item.added: Response "${e}" not found`);return o.output.push(t.id),{item:null,delta:null}},"response.output_item.done":r=>{let{item:e}=r;if(!e)throw new Error('response.output_item.done: Missing "item"');let t=this.itemLookup[e.id];if(!t)throw new Error(`response.output_item.done: Item "${e.id}" not found`);return t.status=e.status,{item:t,delta:null}},"response.content_part.added":r=>{let{item_id:e,part:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.content_part.added: Item "${e}" not found`);return o.content.push(t),{item:o,delta:null}},"response.audio_transcript.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio_transcript.delta: Item "${e}" not found`);return i.content[t].transcript+=o,i.formatted.transcript+=o,{item:i,delta:{transcript:o}}},"response.audio.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio.delta: Item "${e}" not found`);let a=Ur.base64ToArrayBuffer(o),s=new Int16Array(a);return i.formatted.audio=Ur.mergeInt16Arrays(i.formatted.audio,s),{item:i,delta:{audio:s}}},"response.text.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.text.delta: Item "${e}" not found`);return i.content[t].text+=o,i.formatted.text+=o,{item:i,delta:{text:o}}},"response.function_call_arguments.delta":r=>{let{item_id:e,delta:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.function_call_arguments.delta: Item "${e}" not found`);return o.arguments+=t,o.formatted.tool.arguments+=t,{item:o,delta:{arguments:t}}}});this.clear()}clear(){return this.itemLookup={},this.items=[],this.responseLookup={},this.responses=[],this.queuedSpeechItems={},this.queuedTranscriptItems={},this.queuedInputAudio=null,!0}queueInputAudio(r){return this.queuedInputAudio=r,r}processEvent(r,...e){if(!r.event_id)throw console.error(r),new Error('Missing "event_id" on event');if(!r.type)throw console.error(r),new Error('Missing "type" on event');let t=this.EventProcessors[r.type];if(!t)throw new Error(`Missing conversation event processor for "${r.type}"`);return t.call(this,r,...e)}getItem(r){return this.itemLookup[r]||null}getItems(){return this.items.slice()}};var Ss=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){super(),this.defaultSessionConfig={modalities:["text","audio"],instructions:"",voice:"alloy",input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:null,turn_detection:null,tools:[],tool_choice:"auto",temperature:.8,max_response_output_tokens:4096},this.sessionConfig={},this.transcriptionModels=[{model:"whisper-1"}],this.defaultServerVadConfig={type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:200},this.realtime=new jl({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}),this.conversation=new kl,this._resetConfig(),this._addAPIEventHandlers()}_resetConfig(){return this.sessionCreated=!1,this.tools={},this.sessionConfig=JSON.parse(JSON.stringify(this.defaultSessionConfig)),this.inputAudioBuffer=new Int16Array(0),!0}_addAPIEventHandlers(){this.realtime.on("client.*",o=>{let i={time:new Date().toISOString(),source:"client",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.*",o=>{let i={time:new Date().toISOString(),source:"server",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.session.created",()=>this.sessionCreated=!0);let r=(o,...i)=>{let{item:a,delta:s}=this.conversation.processEvent(o,...i);return{item:a,delta:s}},e=(o,...i)=>{let{item:a,delta:s}=r(o,...i);return a&&this.dispatch("conversation.updated",{item:a,delta:s}),{item:a,delta:s}},t=async o=>{try{let i=JSON.parse(o.arguments),a=this.tools[o.name];if(!a)throw new Error(`Tool "${o.name}" has not been added`);let s=await a.handler(i);this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify(s)}})}catch(i){this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify({error:i.message})}})}this.createResponse()};return this.realtime.on("server.response.created",r),this.realtime.on("server.response.output_item.added",r),this.realtime.on("server.response.content_part.added",r),this.realtime.on("server.input_audio_buffer.speech_started",o=>{r(o),this.dispatch("conversation.interrupted")}),this.realtime.on("server.input_audio_buffer.speech_stopped",o=>r(o,this.inputAudioBuffer)),this.realtime.on("server.conversation.item.created",o=>{let{item:i}=e(o);this.dispatch("conversation.item.appended",{item:i}),i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i})}),this.realtime.on("server.conversation.item.truncated",e),this.realtime.on("server.conversation.item.deleted",e),this.realtime.on("server.conversation.item.input_audio_transcription.completed",e),this.realtime.on("server.response.audio_transcript.delta",e),this.realtime.on("server.response.audio.delta",e),this.realtime.on("server.response.text.delta",e),this.realtime.on("server.response.function_call_arguments.delta",e),this.realtime.on("server.response.output_item.done",async o=>{let{item:i}=e(o);i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i}),i.formatted.tool&&t(i.formatted.tool)}),!0}isConnected(){return this.realtime.isConnected()}reset(){return this.disconnect(),this.clearEventHandlers(),this.realtime.clearEventHandlers(),this._resetConfig(),this._addAPIEventHandlers(),!0}async connect(){if(this.isConnected())throw new Error("Already connected, use .disconnect() first");return await this.realtime.connect(),this.updateSession(),!0}async waitForSessionCreated(){if(!this.isConnected())throw new Error("Not connected, use .connect() first");for(;!this.sessionCreated;)await new Promise(r=>setTimeout(()=>r(),1));return!0}disconnect(){this.sessionCreated=!1,this.realtime.isConnected()&&this.realtime.disconnect(),this.conversation.clear()}getTurnDetectionType(){return this.sessionConfig.turn_detection?.type||null}addTool(r,e){if(!r?.name)throw new Error("Missing tool name in definition");let t=r?.name;if(this.tools[t])throw new Error(`Tool "${t}" already added. Please use .removeTool("${t}") before trying to add again.`);if(typeof e!="function")throw new Error(`Tool "${t}" handler must be a function`);return this.tools[t]={definition:r,handler:e},this.updateSession(),this.tools[t]}removeTool(r){if(!this.tools[r])throw new Error(`Tool "${r}" does not exist, can not be removed.`);return delete this.tools[r],!0}deleteItem(r){return this.realtime.send("conversation.item.delete",{item_id:r}),!0}updateSession({modalities:r=void 0,instructions:e=void 0,voice:t=void 0,input_audio_format:o=void 0,output_audio_format:i=void 0,input_audio_transcription:a=void 0,turn_detection:s=void 0,tools:l=void 0,tool_choice:c=void 0,temperature:u=void 0,max_response_output_tokens:p=void 0}={}){r!==void 0&&(this.sessionConfig.modalities=r),e!==void 0&&(this.sessionConfig.instructions=e),t!==void 0&&(this.sessionConfig.voice=t),o!==void 0&&(this.sessionConfig.input_audio_format=o),i!==void 0&&(this.sessionConfig.output_audio_format=i),a!==void 0&&(this.sessionConfig.input_audio_transcription=a),s!==void 0&&(this.sessionConfig.turn_detection=s),l!==void 0&&(this.sessionConfig.tools=l),c!==void 0&&(this.sessionConfig.tool_choice=c),u!==void 0&&(this.sessionConfig.temperature=u),p!==void 0&&(this.sessionConfig.max_response_output_tokens=p);let d=[].concat((l||[]).map(h=>{let m={type:"function",...h};if(this.tools[m?.name])throw new Error(`Tool "${m?.name}" has already been defined`);return m}),Object.keys(this.tools).map(h=>({type:"function",...this.tools[h].definition}))),f={...this.sessionConfig};return f.tools=d,this.realtime.isConnected()&&this.realtime.send("session.update",{session:f}),!0}sendUserMessageContent(r=[]){if(r.length){for(let e of r)e.type==="input_audio"&&(e.audio instanceof ArrayBuffer||e.audio instanceof Int16Array)&&(e.audio=Ur.arrayBufferToBase64(e.audio));this.realtime.send("conversation.item.create",{item:{type:"message",role:"user",content:r}})}return this.createResponse(),!0}appendInputAudio(r){return r.byteLength>0&&(this.realtime.send("input_audio_buffer.append",{audio:Ur.arrayBufferToBase64(r)}),this.inputAudioBuffer=Ur.mergeInt16Arrays(this.inputAudioBuffer,r)),!0}createResponse(){return this.getTurnDetectionType()===null&&this.inputAudioBuffer.byteLength>0&&(this.realtime.send("input_audio_buffer.commit"),this.conversation.queueInputAudio(this.inputAudioBuffer),this.inputAudioBuffer=new Int16Array(0)),this.realtime.send("response.create"),!0}cancelResponse(r,e=0){if(r){if(r){let t=this.conversation.getItem(r);if(!t)throw new Error(`Could not find item "${r}"`);if(t.type!=="message")throw new Error('Can only cancelResponse messages with type "message"');if(t.role!=="assistant")throw new Error('Can only cancelResponse messages with role "assistant"');this.realtime.send("response.cancel");let o=t.content.findIndex(i=>i.type==="audio");if(o===-1)throw new Error("Could not find audio on item to cancel");return this.realtime.send("conversation.item.truncate",{item_id:r,content_index:o,audio_end_ms:Math.floor(e/this.conversation.defaultFrequency*1e3)}),{item:t}}}else return this.realtime.send("response.cancel"),{item:null}}async waitForNextItem(){let r=await this.waitForNext("conversation.item.appended"),{item:e}=r;return{item:e}}async waitForNextCompletedItem(){let r=await this.waitForNext("conversation.item.completed"),{item:e}=r;return{item:e}}};var sE=`
2251
2284
  class AudioProcessor extends AudioWorkletProcessor {
2252
2285
 
2253
2286
  constructor() {
@@ -2454,7 +2487,7 @@ class AudioProcessor extends AudioWorkletProcessor {
2454
2487
  }
2455
2488
 
2456
2489
  registerProcessor('audio_processor', AudioProcessor);
2457
- `,lE=new Blob([sE],{type:"application/javascript"}),cE=URL.createObjectURL(lE),Ub=cE;var Hb=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],uE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=[],gd=[];for(let n=1;n<=8;n++)for(let r=0;r<Hb.length;r++){let e=Hb[r];un.push(e/Math.pow(2,8-n)),gd.push(uE[r]+n)}var yd=[32,2e3],dh=un.filter((n,r)=>un[r]>yd[0]&&un[r]<yd[1]),Wb=gd.filter((n,r)=>un[r]>yd[0]&&un[r]<yd[1]);var $n=class{static getFrequencies(r,e,t,o="frequency",i=-100,a=-30){t||(t=new Float32Array(r.frequencyBinCount),r.getFloatFrequencyData(t));let s=e/2,l=1/t.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?dh:un,m=Array(h.length).fill(i);for(let y=0;y<t.length;y++){let b=y*l,S=t[y];for(let P=h.length-1;P>=0;P--)if(b>h[P]){m[P]=Math.max(m[P],S);break}}c=m,u=o==="voice"?dh:un,p=o==="voice"?Wb:gd}else c=Array.from(t),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-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}constructor(r,e=null){if(this.fftResults=[],e){let{length:t,sampleRate:o}=e,i=new OfflineAudioContext({length:t,sampleRate:o}),a=i.createBufferSource();a.buffer=e;let s=i.createAnalyser();s.fftSize=8192,s.smoothingTimeConstant=.1,a.connect(s);let l=1/60,c=t/o,u=p=>{let d=l*p;d<c&&i.suspend(d).then(()=>{let f=new Float32Array(s.frequencyBinCount);s.getFloatFrequencyData(f),this.fftResults.push(f),u(p+1)}),p===1?i.startRendering():i.resume()};a.start(0),u(1),this.audio=r,this.context=i,this.analyser=s,this.sampleRate=o,this.audioBuffer=e}else{let t=new AudioContext,o=t.createMediaElementSource(r),i=t.createAnalyser();i.fftSize=8192,i.smoothingTimeConstant=.1,o.connect(i),i.connect(t.destination),this.audio=r,this.context=t,this.analyser=i,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(r="frequency",e=-100,t=-30){let o=null;if(this.audioBuffer&&this.fftResults.length){let i=this.audio.currentTime/this.audio.duration,a=Math.min(i*this.fftResults.length|0,this.fftResults.length-1);o=this.fftResults[a]}return $n.getFrequencies(this.analyser,this.sampleRate,o,r,e,t)}async resumeIfSuspended(){return this.context.state==="suspended"&&await this.context.resume(),!0}};var dn=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static mergeBuffers(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(new Uint8Array(r),0),t.set(new Uint8Array(e),r.byteLength),t.buffer}_packData(r,e){return[new Uint8Array([e,e>>8]),new Uint8Array([e,e>>8,e>>16,e>>24])][r]}pack(r,e){if(e?.bitsPerSample)if(e?.channels){if(!e?.data)throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');let{bitsPerSample:t,channels:o,data:i}=e,a=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,o.length),this._packData(1,r),this._packData(1,r*o.length*t/8),this._packData(0,o.length*t/8),this._packData(0,t),"data",this._packData(1,o[0].length*o.length*t/8),i],s=new Blob(a,{type:"audio/mpeg"}),l=URL.createObjectURL(s);return{blob:s,url:l,channelCount:o.length,sampleRate:r,duration:i.byteLength/(o.length*r*2)}}};var Hl=class{constructor({sampleRate:r=44100,outputToSpeakers:e=!1,debug:t=!1}={}){this.scriptSrc=Ub,this.sampleRate=r,this.outputToSpeakers=e,this.debug=!!t,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static async decode(r,e=44100,t=-1){let o=new AudioContext({sampleRate:e}),i,a;if(r instanceof Blob){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=r,i=await a.arrayBuffer()}else if(r instanceof ArrayBuffer){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=r,a=new Blob([i],{type:"audio/wav"})}else{let u,p;if(r instanceof Int16Array){p=r,u=new Float32Array(r.length);for(let m=0;m<r.length;m++)u[m]=r[m]/32768}else if(r instanceof Float32Array)u=r;else if(r instanceof Array)u=new Float32Array(r);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(t===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(t<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');p||(p=dn.floatTo16BitPCM(u));let d={bitsPerSample:16,channels:[u],data:p};a=new dn().pack(t,d).blob,i=await a.arrayBuffer()}let s=await o.decodeAudioData(i),l=s.getChannelData(0),c=URL.createObjectURL(a);return{blob:a,url:c,values:l,audioBuffer:s}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}async _event(r,e={},t=null){if(t=t||this.processor,!t)throw new Error("Can not send events without recording first");let o={event:r,id:this._lastEventId++,data:e};t.port.postMessage(o);let i=new Date().valueOf();for(;!this.eventReceipts[o.id];){if(new Date().valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${r}" event`);await new Promise(s=>setTimeout(()=>s(!0),1))}let a=this.eventReceipts[o.id];return delete this.eventReceipts[o.id],a}listenForDeviceChange(r){if(r===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(r!==null){let e=0,t=[],o=a=>a.map(s=>s.deviceId).sort().join(","),i=async()=>{let a=++e,s=await this.listDevices();a===e&&o(t)!==o(s)&&(t=s,r(s.slice()))};navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}async requestPermission(){let r=await navigator.permissions.query({name:"microphone"});if(r.state==="denied")window.alert("You must grant microphone access to use this feature.");else if(r.state==="prompt")try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(o=>o.stop())}catch{window.alert("You must grant microphone access to use this feature.")}return!0}async listDevices(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");await this.requestPermission();let e=(await navigator.mediaDevices.enumerateDevices()).filter(i=>i.kind==="audioinput"),t=e.findIndex(i=>i.deviceId==="default"),o=[];if(t!==-1){let i=e.splice(t,1)[0],a=e.findIndex(s=>s.groupId===i.groupId);a!==-1&&(i=e.splice(a,1)[0]),i.default=!0,o.push(i)}return o.concat(e)}async begin(r){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");try{let s={audio:!0};r&&(s.audio={deviceId:{exact:r}}),this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{throw new Error("Could not start media stream")}let e=new AudioContext({sampleRate:this.sampleRate}),t=e.createMediaStreamSource(this.stream);try{await e.audioWorklet.addModule(this.scriptSrc)}catch(s){throw console.error(s),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let o=new AudioWorkletNode(e,"audio_processor");o.port.onmessage=s=>{let{event:l,id:c,data:u}=s.data;if(l==="receipt")this.eventReceipts[c]=u;else if(l==="chunk")if(this._chunkProcessorSize){let p=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:dn.mergeBuffers(p.raw,u.raw),mono:dn.mergeBuffers(p.mono,u.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(u)};let i=t.connect(o),a=e.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn(`Warning: Output to speakers may affect sound quality,
2490
+ `,lE=new Blob([sE],{type:"application/javascript"}),cE=URL.createObjectURL(lE),kb=cE;var Ub=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],uE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=[],yd=[];for(let n=1;n<=8;n++)for(let r=0;r<Ub.length;r++){let e=Ub[r];un.push(e/Math.pow(2,8-n)),yd.push(uE[r]+n)}var md=[32,2e3],uh=un.filter((n,r)=>un[r]>md[0]&&un[r]<md[1]),Hb=yd.filter((n,r)=>un[r]>md[0]&&un[r]<md[1]);var $n=class{static getFrequencies(r,e,t,o="frequency",i=-100,a=-30){t||(t=new Float32Array(r.frequencyBinCount),r.getFloatFrequencyData(t));let s=e/2,l=1/t.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?uh:un,m=Array(h.length).fill(i);for(let y=0;y<t.length;y++){let b=y*l,S=t[y];for(let P=h.length-1;P>=0;P--)if(b>h[P]){m[P]=Math.max(m[P],S);break}}c=m,u=o==="voice"?uh:un,p=o==="voice"?Hb:yd}else c=Array.from(t),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-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}constructor(r,e=null){if(this.fftResults=[],e){let{length:t,sampleRate:o}=e,i=new OfflineAudioContext({length:t,sampleRate:o}),a=i.createBufferSource();a.buffer=e;let s=i.createAnalyser();s.fftSize=8192,s.smoothingTimeConstant=.1,a.connect(s);let l=1/60,c=t/o,u=p=>{let d=l*p;d<c&&i.suspend(d).then(()=>{let f=new Float32Array(s.frequencyBinCount);s.getFloatFrequencyData(f),this.fftResults.push(f),u(p+1)}),p===1?i.startRendering():i.resume()};a.start(0),u(1),this.audio=r,this.context=i,this.analyser=s,this.sampleRate=o,this.audioBuffer=e}else{let t=new AudioContext,o=t.createMediaElementSource(r),i=t.createAnalyser();i.fftSize=8192,i.smoothingTimeConstant=.1,o.connect(i),i.connect(t.destination),this.audio=r,this.context=t,this.analyser=i,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(r="frequency",e=-100,t=-30){let o=null;if(this.audioBuffer&&this.fftResults.length){let i=this.audio.currentTime/this.audio.duration,a=Math.min(i*this.fftResults.length|0,this.fftResults.length-1);o=this.fftResults[a]}return $n.getFrequencies(this.analyser,this.sampleRate,o,r,e,t)}async resumeIfSuspended(){return this.context.state==="suspended"&&await this.context.resume(),!0}};var dn=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static mergeBuffers(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(new Uint8Array(r),0),t.set(new Uint8Array(e),r.byteLength),t.buffer}_packData(r,e){return[new Uint8Array([e,e>>8]),new Uint8Array([e,e>>8,e>>16,e>>24])][r]}pack(r,e){if(e?.bitsPerSample)if(e?.channels){if(!e?.data)throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');let{bitsPerSample:t,channels:o,data:i}=e,a=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,o.length),this._packData(1,r),this._packData(1,r*o.length*t/8),this._packData(0,o.length*t/8),this._packData(0,t),"data",this._packData(1,o[0].length*o.length*t/8),i],s=new Blob(a,{type:"audio/mpeg"}),l=URL.createObjectURL(s);return{blob:s,url:l,channelCount:o.length,sampleRate:r,duration:i.byteLength/(o.length*r*2)}}};var Ul=class{constructor({sampleRate:r=44100,outputToSpeakers:e=!1,debug:t=!1}={}){this.scriptSrc=kb,this.sampleRate=r,this.outputToSpeakers=e,this.debug=!!t,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static async decode(r,e=44100,t=-1){let o=new AudioContext({sampleRate:e}),i,a;if(r instanceof Blob){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=r,i=await a.arrayBuffer()}else if(r instanceof ArrayBuffer){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=r,a=new Blob([i],{type:"audio/wav"})}else{let u,p;if(r instanceof Int16Array){p=r,u=new Float32Array(r.length);for(let m=0;m<r.length;m++)u[m]=r[m]/32768}else if(r instanceof Float32Array)u=r;else if(r instanceof Array)u=new Float32Array(r);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(t===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(t<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');p||(p=dn.floatTo16BitPCM(u));let d={bitsPerSample:16,channels:[u],data:p};a=new dn().pack(t,d).blob,i=await a.arrayBuffer()}let s=await o.decodeAudioData(i),l=s.getChannelData(0),c=URL.createObjectURL(a);return{blob:a,url:c,values:l,audioBuffer:s}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}async _event(r,e={},t=null){if(t=t||this.processor,!t)throw new Error("Can not send events without recording first");let o={event:r,id:this._lastEventId++,data:e};t.port.postMessage(o);let i=new Date().valueOf();for(;!this.eventReceipts[o.id];){if(new Date().valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${r}" event`);await new Promise(s=>setTimeout(()=>s(!0),1))}let a=this.eventReceipts[o.id];return delete this.eventReceipts[o.id],a}listenForDeviceChange(r){if(r===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(r!==null){let e=0,t=[],o=a=>a.map(s=>s.deviceId).sort().join(","),i=async()=>{let a=++e,s=await this.listDevices();a===e&&o(t)!==o(s)&&(t=s,r(s.slice()))};navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}async requestPermission(){let r=await navigator.permissions.query({name:"microphone"});if(r.state==="denied")window.alert("You must grant microphone access to use this feature.");else if(r.state==="prompt")try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(o=>o.stop())}catch{window.alert("You must grant microphone access to use this feature.")}return!0}async listDevices(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");await this.requestPermission();let e=(await navigator.mediaDevices.enumerateDevices()).filter(i=>i.kind==="audioinput"),t=e.findIndex(i=>i.deviceId==="default"),o=[];if(t!==-1){let i=e.splice(t,1)[0],a=e.findIndex(s=>s.groupId===i.groupId);a!==-1&&(i=e.splice(a,1)[0]),i.default=!0,o.push(i)}return o.concat(e)}async begin(r){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");try{let s={audio:!0};r&&(s.audio={deviceId:{exact:r}}),this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{throw new Error("Could not start media stream")}let e=new AudioContext({sampleRate:this.sampleRate}),t=e.createMediaStreamSource(this.stream);try{await e.audioWorklet.addModule(this.scriptSrc)}catch(s){throw console.error(s),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let o=new AudioWorkletNode(e,"audio_processor");o.port.onmessage=s=>{let{event:l,id:c,data:u}=s.data;if(l==="receipt")this.eventReceipts[c]=u;else if(l==="chunk")if(this._chunkProcessorSize){let p=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:dn.mergeBuffers(p.raw,u.raw),mono:dn.mergeBuffers(p.mono,u.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(u)};let i=t.connect(o),a=e.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn(`Warning: Output to speakers may affect sound quality,
2458
2491
  especially due to system audio feedback preventative measures.
2459
2492
  use only for debugging`),a.connect(e.destination)),this.source=t,this.node=i,this.analyser=a,this.processor=o,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return $n.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(r=()=>{},e=8192){if(this.processor){if(this.recording)throw new Error("Already recording: please call .pause() first");if(typeof r!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=r,this._chunkProcessorSize=e,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(r=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!r&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");let e=await this._event("export");return new dn().pack(this.sampleRate,e.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");let r=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.stream.getTracks().forEach(a=>a.stop()),this.log("Exporting ...");let t=await this._event("export",{},r);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new dn().pack(this.sampleRate,t.audio)}async quit(){return this.listenForDeviceChange(null),this.processor&&await this.end(),!0}};var dE=`
2460
2493
  class StreamProcessor extends AudioWorkletProcessor {
@@ -2545,7 +2578,7 @@ class StreamProcessor extends AudioWorkletProcessor {
2545
2578
  }
2546
2579
 
2547
2580
  registerProcessor('stream_processor', StreamProcessor);
2548
- `,pE=new Blob([dE],{type:"application/javascript"}),fE=URL.createObjectURL(pE),qb=fE;var xd=class{constructor({sampleRate:r=44100}={}){this.scriptSrc=qb,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}async connect(){this.context=new AudioContext({sampleRate:this.sampleRate}),this.context.state==="suspended"&&await this.context.resume();try{await this.context.audioWorklet.addModule(this.scriptSrc)}catch(e){throw console.error(e),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let r=this.context.createAnalyser();return r.fftSize=8192,r.smoothingTimeConstant=.1,this.analyser=r,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return $n.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}_start(){let r=new AudioWorkletNode(this.context,"stream_processor");return r.connect(this.context.destination),r.port.onmessage=e=>{let{event:t}=e.data;if(t==="stop")r.disconnect(),this.stream=null;else if(t==="offset"){let{requestId:o,trackId:i,offset:a}=e.data,s=a/this.sampleRate;this.trackSampleOffsets[o]={trackId:i,offset:a,currentTime:s}}},this.analyser.disconnect(),r.connect(this.analyser),this.stream=r,!0}add16BitPCM(r,e="default"){if(typeof e!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[e])return;this.stream||this._start();let t;if(r instanceof Int16Array)t=r;else if(r instanceof ArrayBuffer)t=new Int16Array(r);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:t,trackId:e}),t}async getTrackSampleOffset(r=!1){if(!this.stream)return null;let e=crypto.randomUUID();this.stream.port.postMessage({event:r?"interrupt":"offset",requestId:e});let t;for(;!t;)t=this.trackSampleOffsets[e],await new Promise(i=>setTimeout(()=>i(),1));let{trackId:o}=t;return r&&o&&(this.interruptedTrackIds[o]=!0),t}async interrupt(){return this.getTrackSampleOffset(!0)}};var $b=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/",Wl=class{constructor(r,e,t){this.data=r;this.id=e;this.shared=t;this.items=[];this.isConnected=!1;this.rafId=0;this.emitter=nn();this.voice=0;this.frequencies=new Float32Array([0]);this.onRealTimeEvent=({time:r,source:e,event:t})=>{e==="server"&&t.type==="spline.ready"?this.onSessionCreated(t):e==="server"&&t.type==="session.created"&&(this.client.createResponse(),this.client.on("realtime.event",this.onRealTimeEvent))};this.onSessionCreated=async r=>{let e=Object.values(this.client.tools).map(t=>({type:"function",...t.definition}));this.client.realtime.send("spline.tools",{tools:e}),this.client.realtime.send("spline.connect",{}),await this.wavRecorder.record(t=>this.client.isConnected()&&this.client.appendInputAudio(t.mono))};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected){let r=this.wavStreamPlayer.analyser?this.wavStreamPlayer.getFrequencies("voice"):{values:new Float32Array([0])},e=r.values.reduce((t,o)=>t+o,0)/r.values.length;this.voice=e,this.frequencies=r.values,this.emitter.emit("voice",{value:e,frequencies:r.values})}};this.client=new Ss({url:$b()+"?uuidfile="+r.integration.hash}),this.wavRecorder=new Hl({sampleRate:24e3}),this.wavStreamPlayer=new xd({sampleRate:24e3})}update(r){this.data=r,this.client=new Ss({url:$b()+"?uuidfile="+r.integration.hash})}setColorByName(r,e){let t=this.shared.getColorByName(r);if(t){let{id:o}=t,{r:i,g:a,b:s}=$0.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:i/255,g:a/255,b:s/255})}}connect(){if(this.isConnected)return;this.isConnected=!0,this.client.updateSession({turn_detection:{type:"server_vad"}}),this.client.addTool({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:i})=>{this.setColorByName("Voice Assistant Color",i)});let r=this.shared.getVariablesNames().join(", ");this.client.addTool({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: ${r}. 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:i,value:a})=>{let s=this.shared.getVariableByName(i);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.client.addTool({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:i,value:a})=>{this.setColorByName(i,a)});let t=this.shared.scene,o=[];t.traverseEntity(i=>{i.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.client.addTool({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:i,direction:a})=>{this.emitter.emit("trigger_event",{description:i,direction:a})}),this.client.on("error",i=>console.error(i)),this.client.on("conversation.interrupted",async()=>{let i=await this.wavStreamPlayer.interrupt();if(i?.trackId){let{trackId:a,offset:s}=i;await this.client.cancelResponse(a,s)}}),this.client.on("conversation.updated",async({item:i,delta:a})=>{let s=this.client.conversation.getItems();if(a?.audio&&this.wavStreamPlayer.add16BitPCM(a.audio,i.id),i.status==="completed"&&i.formatted.audio?.length){let l=await Hl.decode(i.formatted.audio,24e3,24e3);i.formatted.file=l}this.items=s}),this.animate()}disconnect(){cancelAnimationFrame(this.rafId),this.voice=0,this.isConnected=!1}async start(){try{await this.wavRecorder.end()}catch{}await this.wavRecorder.begin(),this.client.on("realtime.event",this.onRealTimeEvent),await this.wavStreamPlayer.connect(),await this.client.connect()}async stop(){try{this.client.off("realtime.event",this.onRealTimeEvent)}catch(r){console.error(r)}this.client.disconnect(),await this.wavRecorder.end(),await this.wavStreamPlayer.interrupt()}computeAnalysisForListenerEvent(r){if(r.analysis==="range"){let e=this.frequencies.slice(...r.analysisRange);return e.reduce((t,o)=>t+o,0)/e.length}return r.analysis==="single"?this.frequencies[r.analysisSingle]:this.voice}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}};function Yb(n){return"variable_"+n}var fh=class extends ad{constructor(e){super();this.shared=e}create(e){return new xs(e,this.shared)}},Ni=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new jl(!0);this.geometryCache2=new jl(!1);this.imageHolderCache=new fh(this);this.thisContext={scene:Fb,shared:this};this.deletedMaterial=new Mi(Yt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(Cu.emptyImage,this);this.deletedVideo=new Nr(xa.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[i,a]of Object.entries(e.images))this.addImage(i,a);if(e.videos)for(let[i,a]of Object.entries(e.videos))this.addVideo(i,a);if(e.audios)for(let[i,a]of Object.entries(e.audios))this.addAudio(i,a);if(e.particles)for(let[i,a]of Object.entries(e.particles))this.addParticle(i,a);this.reset(r)}setRequestRender(r){this._requestRender=r}getImageLoadPromises(){return Object.values(this.images).map(r=>r.loadPromise)}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.data=r,this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.userAPIs))this.addUserAPI(t,o);for(let[t,o]of Object.entries(r.userWebhooks))this.addUserWebhook(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.particles))this.addParticle(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new Mi(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new Ii(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Nr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addUIBuffer(r,e){return this.uiBuffers[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[r].updateSrc(e),!0):(this.uiBuffers[r]=new Nr(e,this),!1)}uiBuffer(r){return this.uiBuffers[r]}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new Nr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Hn(e.r,e.g,e.b,e.a):this.colors[r]=new Hn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}getColorNames(){return Object.values(this.data.colors).map(r=>r.name)}getColorByName(r){for(let e in this.data.colors)if(this.data.colors[e].name===r)return{color:this.colors[e],id:e}}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new kt(0,0,0,0))}else return"a"in r?new kt(r.r,r.g,r.b,r.a):new kt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Ei)return e;{let t=new Ei({src:e.data});return this.audios[r]=t,t}}addParticle(r,e){this.particles[r]=e}getParticle(r){return this.particles[r]}deleteParticle(r){this.particles[r]&&delete this.particles[r]}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Ei&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new fd(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Ei&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){if(this.variables[r]===void 0){let t=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Yb(r));t=o!==null?JSON.parse(o):e.value}return this.variables[r]={value:t,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0}return this.variables[r].value=e.value,!1}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[r].persistent&&localStorage.setItem(Yb(r),JSON.stringify(e));let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],l=t,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[r].locations.splice(i,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]]=t*ph.MathUtils.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),je.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],t)}}return this.requestRender(),!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return r[1]==="rotation"&&(t*=ph.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ct.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(r=>r.data.name)}getVariableByName(r){for(let e of this.data.variables)if(e.data.name===r)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){if(this.data=e,r.path[0]==="images")r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id);else if(r.path[0]==="videos")r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id);else if(r.path[0]==="audios")r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id);else if(r.path[0]==="particles")r.path.length===2&&r.type===0?r.props.data&&this.addParticle(r.path[1],e.particles[r.path[1]]):r.path.length===1&&r.type===1?this.addParticle(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteParticle(r.id);else if(r.path[0]==="colors")r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id);else if(r.path[0]==="materials")r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(gt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t});else if(r.path[0]==="fonts")r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id);else if(r.path[0]==="variables")r.path.length===2&&r.type===0?"value"in r.props?this.updateVariable(r.path[1],r.props.value):"persistent"in r.props&&(this.variables[r.path[1]].persistent=r.props.persistent):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id);else if(r.path[0]==="userAPIs"){if(r.path.length===1&&r.type===1)this.addUserAPI(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserAPI(r.id);else if(typeof r.path[1]=="string"){let o=e.userAPIs[r.path[1]];if(o){let i=r.type===0&&r.props.debounce===void 0,a=this.getUserAPI(r.path[1]);a instanceof Wl?a.update(o):a?.update(o,this,i)}}}else if(r.path[0]==="userWebhooks"){if(r.path.length===1&&r.type===1)this.addUserWebhook(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserWebhook(r.id);else if(typeof r.path[1]=="string"){let o=e.userWebhooks[r.path[1]];o&&this.getUserWebhook(r.path[1])?.update(o)}}else r.path[0]==="lib"&&this.updateLibByOp(gt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}addUserAPI(r,e){return this.userAPIs[r]?(this.userAPIs[r].update(e,this),!0):this.openAIRealtime?.id===r?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Wl(e,r,this),!1):(this.userAPIs[r]=new Wu(r,e,this),!1)}getUserAPI(r){return this.openAIRealtime?.id===r?this.openAIRealtime:this.userAPIs[r]}getUserAPIs(){return this.userAPIs}deleteUserAPI(r){let e=this.userAPIs[r];e&&(e.dispose(),delete this.userAPIs[r])}addUserWebhook(r,e){return this.userWebhooks[r]?(this.userWebhooks[r].update(e),!0):(this.userWebhooks[r]=new md(r,e),!1)}getUserWebhook(r){return this.userWebhooks[r]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(r){let e=this.userWebhooks[r];e&&(e.dispose(),delete this.userWebhooks[r])}get scene(){return this.entityOpContext.scene}},Xb=new Ni(Gr.emptyData());var Pr=class extends Ft{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),_g(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Fe(e.path,["material"])&&this.material instanceof wr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Fe(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(gt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&hc(this.material).forEach(e=>{e instanceof wr&&(e instanceof Mi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var Kb=new Dr.Vector3,Qb=new Dr.Vector4,Zb=new Dr.Vector4,mE=new Dr.Vector3,Jb=new Dr.Matrix4,St=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.isSkinnedMesh=!1;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.bindMode=t.bindMode,this.bindMatrix=new Dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new Dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Ni){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return nl.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return nl.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(e.path,["geometry"])&&this.updateByPatchedOpGeometry(gt.drop(e,1),t.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...i};this.localGeometry=an(u,t,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;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 i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=an(i,t,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof Nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:i,value:a}}of o)this.updateMorphInfluences(i,t.shared.getVariable(a,[this.uuid,"morphTargetInfluences",i]))}super.updateState(e,t)}updateMorphInfluences(e,t){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Qb.fromBufferAttribute(i.attributes.skinIndex,e),Zb.fromBufferAttribute(i.attributes.skinWeight,e),Kb.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=Zb.getComponent(a);if(s!==0){let l=Qb.getComponent(a);Jb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(mE.copy(Kb).applyMatrix4(Jb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function yE(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=new _r.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new _r.Vector3})}r.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=r.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new _r.Float32BufferAttribute(i,3))}function gE(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new _r.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new _r.Float32BufferAttribute(t,3))}function ws(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof wr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?gE(n):yE(n)}function Ps(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[_r.MathUtils.seededRandom(o),_r.MathUtils.seededRandom(o+1e4),_r.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new _r.BufferAttribute(t,3))}var Bo=new pn.Box3,ql=new pn.Vector3;function ev(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Di=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new pn.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=Nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ws(this),Ps(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Ft.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new pn.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bo.setFromBufferAttribute(t),Bo.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bo.getSize(ql),this.hasNonUniformScale&&ql.divide(this.scale);let i={width:ql.x,height:ql.y,depth:ql.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Bo.min.set(e[0],e[2],e[4]),Bo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Bo.min.applyMatrix4(this.shearScaleInv),Bo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new pn.Sphere);let o=t.boundingSphere.center;Bo.getCenter(o),t.boundingSphere.radius=o.distanceTo(Bo.max)}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Ro=require("three"),tv=-1,xE=1,rv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},ov={polygon_center:0,edge:1,vertex:2},$l=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-tv)*(e-t)/(xE-tv)+t},bE=new Ro.Vector3,bd=new Ro.Vector3,vE=new Ro.Vector3,SE=new Ro.Vector3;function Cs(n,r){let e=vE.fromArray(n),t=SE.fromArray(r);bd.copy(t).sub(e);let o=bd.length();return bd.normalize().multiplyScalar(o*.5),bE.copy(e).add(bd).toArray()}var Hr=new Ro.Triangle,vd=new Ro.Vector3,Sd=new Ro.Vector3,_i=new Ro.Vector3;function nv(n){let r=[];for(let e=0;e<=n.index.count;e++)if(vd.fromArray(n.index.array,e*3),Hr.setFromAttributeAndIndices(n.attributes.position,vd.x,vd.y,vd.z),Hr.getNormal(Sd),Hr.getMidpoint(_i),!(isNaN(_i.x)||isNaN(_i.y)||isNaN(_i.z))){let{a:t,b:o,c:i}=Hr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=Cs(a,s),f=Cs(s,l),h=Cs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(O=>Math.round(O)===Math.round(y)).length>1,S=[],P=Hr.getMidpoint(_i).toArray();y===c&&!b&&(S=[f,h,h],P=d),y===u&&!b&&(S=[d,h,h],P=f),y===p&&!b&&(S=[d,f,f],P=h),b&&(S=[d,f,h]),r.push({vertices:[a,s,l],faceCenters:S,midpoint:P,norm:Hr.getNormal(Sd).toArray()})}return r}function iv(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Hr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Hr.getNormal(Sd),Hr.getMidpoint(_i);let o=Hr.a.toArray(),i=Hr.b.toArray(),a=Hr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[Cs(o,i),Cs(i,a),Cs(a,o)],midpoint:_i.toArray(),norm:Sd.toArray()})}return r}var wE=4,PE=.5,hh=n=>.5*(1-Math.cos(n*Math.PI)),mh=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,l=e-i,c=t-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<wE;b++){let S=o+(i<<4)+(a<<8);u=hh(s),p=hh(l),h=this.perlin[S&4095],h+=u*(this.perlin[S+1&4095]-h),m=this.perlin[S+16&4095],m+=u*(this.perlin[S+16+1&4095]-m),h+=p*(m-h),S+=256,m=this.perlin[S&4095],m+=u*(this.perlin[S+1&4095]-m),y=this.perlin[S+16&4095],y+=u*(this.perlin[S+16+1&4095]-y),m+=p*(y-m),h+=hh(c)*(m-h),d+=h*f,f*=PE,o<<=1,s*=2,i<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),c>=1&&(a++,c--)}return d}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},av=mh;var Os=require("three");var sv=new Os.Vector3,lv=new Os.Matrix4,cv=new Os.Ray;function uv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="TextGeometry"||t.geometry.type==="InputGeometry")&&(r=!0)}),r}var Yn=class extends St{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(lv.copy(o).invert(),cv.copy(e.ray).applyMatrix4(lv),cv.intersectBox(this.singleBBox,sv))){let i=sv.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var hr=1e-4,Lo,fv,hv,mv,dv=new Je.Vector3,pv=new Je.Vector3;$u.then(n=>{Lo=n,fv=[Lo.get_face_center,Lo.get_edge_midpoint,Lo.get_vertex_position],hv=[Lo.get_face_normal,Lo.get_edge_normal,Lo.get_vertex_normal],mv=[Lo.face_count,Lo.edge_count,Lo.vertex_count]});var CE=new Je.Matrix4,OE=new Je.Matrix4,Xn=new Je.Vector3,wd=new Je.Vector3,Yl=new Je.Vector3,yh=new Je.Vector3,AE=new Je.Vector3,TE=new Je.Vector3;var gh=class{constructor(r,e){this.data=r;this.is3D=e;this.perlin=new av;r.noiseType==="perlin"?(this.perlin.noiseSeed(r.seed),e?this.noise=(o,i,a)=>this.perlin.noise(o,i,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=kx((0,Pd.default)(r.seed)):this.noise=jx((0,Pd.default)(r.seed))}},As=class extends Ea(Je.Object3D){constructor(e,t){super();this.parameters=t;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 t of this.children)t instanceof tn&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof tn&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new tn(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new tn(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[o])}}getRandom(e,t=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==t)&&(this.random=new gh(e,t)),this.random}_updateRadial(e){let t=e.radial,o=t.start*Je.MathUtils.DEG2RAD,i=t.end*Je.MathUtils.DEG2RAD,a=o-i,s=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Je.Vector3(0,0,1);break;case"y":l=new Je.Vector3(0,1,0);break;default:case"x":l=new Je.Vector3(1,0,0);break}let c=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=$l(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=t.scale[0]+p(y,Me(m,c.scale[0]))||hr,f.scale.y=t.scale[1]+p(y,Me(m,c.scale[1]))||hr,f.scale.z=t.scale[2]+p(y,Me(m,c.scale[2]))||hr,f.position.setScalar(0);let b=a/e.count*d-o;switch(t.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,t.radius),f.position.x+=t.position[0]+p(y,Me(m,c.position[0])),f.position.y+=t.position[1]+p(y,Me(m,c.position[1])),f.position.z+=t.position[2]+p(y,Me(m,c.position[2]));let S=p(y,Me(m,c.rotation[0])),P=p(y,Me(m,c.rotation[1])),O=p(y,Me(m,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+S,f.rotation.y+=s.y+P,f.rotation.z+=s.z+O):f.rotation.set(s.x+S,s.y+P,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=$l(i.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(i.freqScale/10)+i.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Me(p,i.rotation[0])),h=s(d,Me(p,i.rotation[1])),m=s(d,Me(p,i.rotation[2]));c.scale.x=1+(t.scale[0]-1)*l+s(d,Me(p,i.scale[0]))||hr,c.scale.y=1+(t.scale[1]-1)*l+s(d,Me(p,i.scale[1]))||hr,c.scale.z=1+(t.scale[2]-1)*l+s(d,Me(p,i.scale[2]))||hr,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=t.position[0]*l+s(d,Me(p,i.position[0])),c.position.y=t.position[1]*l+s(d,Me(p,i.position[1])),c.position.z=t.position[2]*l+s(d,Me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i,!0),s=$l(i.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 Je.Vector3(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)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement),h=this.children[t++];h.scale.x=1+s(t,Me(f,i.scale[0]))||hr,h.scale.y=1+s(t,Me(f,i.scale[1]))||hr,h.scale.z=1+s(t,Me(f,i.scale[2]))||hr;let m=s(t,Me(f,i.rotation[0])),y=s(t,Me(f,i.rotation[1])),b=s(t,Me(f,i.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(t,Me(f,i.position[0])),h.position.y=o.size[1]*p-c.y+s(t,Me(f,i.position[1])),h.position.z=o.size[2]*d-c.z+s(t,Me(f,i.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)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement),d=this.children[t++];d.scale.x=1+s(t,Me(p,i.scale[0]))||hr,d.scale.y=1+s(t,Me(p,i.scale[1]))||hr,d.scale.z=1+s(t,Me(p,i.scale[2]))||hr;let f=s(t,Me(p,i.rotation[0])),h=s(t,Me(p,i.rotation[1])),m=s(t,Me(p,i.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(t,Me(p,i.position[0])),d.position.y=-o.size[1]*c+s(t,Me(p,i.position[1])),d.position.z=-o.size[2]*u+s(t,Me(p,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=$l(i.strength,this.parameters.randomness);if(!t.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 Yn)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*t.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 Mu(this.objectForSample).build(),u=rv[t.axis],p=this.children;c.setRandomGenerator((0,Pd.default)(this.object.uuid+t.seed));for(let[d,f]of p.entries()){let h=d*(i.freqScale/10)+i.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Me(m,i.rotation[0])),S=s(y,Me(m,i.rotation[1])),P=s(y,Me(m,i.rotation[2]));t.spreadType==="random"?c.sample(Yl,yh):(l.length&&(Yl.fromArray(l[d].pos),yh.fromArray(l[d].norm)),this.objectForSample instanceof Di&&Yl.applyMatrix4(CE.copy(this.objectForSample.matrixWorld).invert())),Yl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Yl),Xn.fromArray(u);let O=t.align==="normal"?yh:this.object.getWorldDirection(TE),v=wd.fromArray(t.position);wd.x+=s(y,Me(m,i.position[0])),wd.y+=s(y,Me(m,i.position[1])),wd.z+=s(y,Me(m,i.position[2]));let A=Math.acos(O.dot(Xn)),T=AE.crossVectors(Xn,O).normalize(),g=OE.makeRotationAxis(T,A),D=O.clone().cross(this.object.up).normalize(),E=D.clone().cross(O).normalize(),M=new Je.Matrix4().makeBasis(D,O,E),N=new Je.Vector3(Xn.y,Xn.z,Xn.x).normalize(),_=N.clone().cross(Xn).normalize(),B=new Je.Matrix4().makeBasis(N,Xn,_).invert(),V=new Je.Matrix4().multiplyMatrices(M,B);f.rotation.setFromRotationMatrix(V),v.applyMatrix4(g),f.position.add(v),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+S,f.rotation.z=f.rotation.z+o.z+P,f.scale.setScalar(1),f.scale.x=f.scale.x+t.scale[0]+s(y,Me(m,i.scale[0]))||hr,f.scale.y=f.scale.y+t.scale[1]+s(y,Me(m,i.scale[1]))||hr,f.scale.z=f.scale.z+t.scale[2]+s(y,Me(m,i.scale[2]))||hr,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,t=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=t.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):t.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof Di){let a=this.objectForSample,s=ov[e],l=mv[s],c=fv[s],u=hv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);dv.fromArray(f).applyMatrix4(a.matrixWorld),pv.fromArray(h),o(dv.toArray(),pv.toArray())}}else(this.objectForSample.geometry.index?nv(this.objectForSample.geometry):iv(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 i=Array.from(t.values());for(let a of i)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 i}updateState(e,t){if(this.parameters=qo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Ft?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Je.Matrix4,this.hiddenMatrix=new Je.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Qr=require("three");var mt=require("three");var nr=require("three");var yv=require("three"),Vo=n=>{var r;return r=class extends n{},r.geometryHelper=new yv.BoxGeometry(30,30,30),r};var lr=require("three"),Cd=new lr.Ray,xh=new lr.Sphere,gv=new lr.Matrix4,zo=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),xh.copy(a.boundingSphere),xh.applyMatrix4(s),e.ray.intersectsSphere(xh)===!1||(gv.copy(s).invert(),Cd.copy(e.ray).applyMatrix4(gv),a.boundingBox!==null&&Cd.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 S=Math.max(0,h.start),P=Math.min(d.count,h.start+h.count);for(m=S,y=P;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(n,e,Cd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let P=a.attributes.position,O=new lr.Vector3,v=new lr.Vector3,A=new lr.Vector3,T=new lr.Vector3,g=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),M=E*E,N=Math.max(0,h.start),_=Math.min(P.count,h.start+h.count);for(let B=N,V=_-1;B<V;B+=g){if(O.fromBufferAttribute(P,B),v.fromBufferAttribute(P,B+1),Cd.distanceSqToSegment(O,v,T,A)>M)continue;T.applyMatrix4(i.matrixWorld);let L=e.ray.origin.distanceTo(T);L<e.near||L>e.far||t.push({distance:L,point:A.clone().applyMatrix4(i.matrixWorld),object:n})}}function b(S,P,O,v,A,T,g){let D=new lr.Vector3,E=new lr.Vector3,M=new lr.Vector3,N=new lr.Vector3,_=new lr.Vector3;if(D.fromBufferAttribute(v,A),E.fromBufferAttribute(v,T),M.fromBufferAttribute(v,g),O.intersectTriangle(D,E,M,!1,N)===null)return null;_.copy(N),_.applyMatrix4(S.matrixWorld);let V=P.ray.origin.distanceTo(_);return V<P.near||V>P.far?null:{faceIndex:1,distance:V,point:_.clone(),object:S}}};var Od=new nr.Vector3,Wr=new nr.Camera,bh=class extends nr.LineSegments{constructor(e){let t=new nr.BufferGeometry,o=new nr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new nr.Color(15711266),c=new nr.Color(15711266),u=new nr.Color(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new nr.Float32BufferAttribute(i,3)),t.setAttribute("color",new nr.Float32BufferAttribute(a,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;Wr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;yo("n1",t,e,Wr,-i,-a,s),yo("n2",t,e,Wr,i,-a,s),yo("n3",t,e,Wr,-i,a,s),yo("n4",t,e,Wr,i,a,s);let l=s;yo("f1",t,e,Wr,-i,-a,l),yo("f2",t,e,Wr,i,-a,l),yo("f3",t,e,Wr,-i,a,l),yo("f4",t,e,Wr,i,a,l);let c=l,u=.5;yo("u1",t,e,Wr,i*.7*u,a*1.1,c),yo("u2",t,e,Wr,-i*.7*u,a*1.1,c),yo("u3",t,e,Wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yo(n,r,e,t,o,i,a){Od.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],Od.x,Od.y,Od.z)}}var Ad=class extends Vo(bh){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){zo(this.object,this.geometry,e,t,!0)}};var Xl=require("three");var Td;(r=>r.is=e=>"objectHelper"in e)(Td||(Td={}));var qr=(n,r)=>class extends _a(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Xl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Xl.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Xl.Box3Helper&&(i.visible=!1)}}};var Id=790,Ts=new mt.Vector3,vh=new mt.Vector3,Sh=new mt.Quaternion,wh=new mt.Vector3,Kl=new mt.Vector3,Ph=new mt.Vector3,fn=class extends qr(mt.Camera,Ad){constructor(e="",t={...mi.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Nn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new mt.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new mt.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new mt.PerspectiveCamera(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new mt.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ts),this.targetOffset=Ts.distanceTo(e)}getTarget(e=new mt.Vector3){return this.getWorldDirection(vh),this.getWorldPosition(Ts),vh.multiplyScalar(this.targetOffset),e.copy(Ts).add(vh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ts),Ts.distanceTo(e)}updateUp(){this.getWorldQuaternion(Sh),wh.set(0,0,1).applyQuaternion(Sh),Kl.copy(mt.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Kl.negate(),Kl.applyQuaternion(Sh),Ph.copy(mt.Object3D.DEFAULT_UP).projectOnPlane(wh),this.angleOffsetFromUp=Ph.angleTo(Kl),this.angleOffsetFromUp*=Ph.cross(Kl).dot(wh)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new mt.Vector3),i=e.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mt.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-Id*.5*i,this.right=Id*.5*i,this.top=Id*.5*(1/a),this.bottom=-Id*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return sa(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var EE=require("three");var Kn=require("three");var Is=new Kn.Matrix4,ME=new Kn.Matrix4;var Cr=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Kn.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof Cr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Ft&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Is.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=jr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1}else a instanceof Cr&&a.needsTransformForDownstream===!0?(jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(jr.transformMeshSet(a.booleanMeshSetAddress,ME.multiplyMatrices(Is,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}jr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===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 Kn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return jr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Kn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=jr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ws(this),Ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};var bv=require("three");var xv;(r=>{function n(e){return je.is(e)&&e instanceof bv.Light}r.is=n})(xv||(xv={}));var Ms=(n,r)=>class extends qr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Qn=n=>n instanceof Ft,Ql=n=>n!==null&&n instanceof Cr;var Zl=n=>Td.is(n);var wv=require("three");var Go=require("three");var NE=new Go.Vector3(1,1,1),vv=new Go.Vector3,DE=new Go.Vector3,Sv=new Go.Quaternion,$r=class extends Vo(Go.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.dummy=new Go.Group;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){zo(this.object,$r.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(vv,Sv,DE),this.matrix.compose(vv,Sv,NE),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var Zn=class extends qr(wv.Group,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e),"buffer"in r&&Object.keys(r).length===1&&e.scene.reloadSplats()}};var Pv=require("three");var Md=class extends qr(Pv.Group,$r){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};var Vs=require("three");var Es=require("three"),_E=n=>`
2581
+ `,pE=new Blob([dE],{type:"application/javascript"}),fE=URL.createObjectURL(pE),Wb=fE;var gd=class{constructor({sampleRate:r=44100}={}){this.scriptSrc=Wb,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}async connect(){this.context=new AudioContext({sampleRate:this.sampleRate}),this.context.state==="suspended"&&await this.context.resume();try{await this.context.audioWorklet.addModule(this.scriptSrc)}catch(e){throw console.error(e),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let r=this.context.createAnalyser();return r.fftSize=8192,r.smoothingTimeConstant=.1,this.analyser=r,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return $n.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}_start(){let r=new AudioWorkletNode(this.context,"stream_processor");return r.connect(this.context.destination),r.port.onmessage=e=>{let{event:t}=e.data;if(t==="stop")r.disconnect(),this.stream=null;else if(t==="offset"){let{requestId:o,trackId:i,offset:a}=e.data,s=a/this.sampleRate;this.trackSampleOffsets[o]={trackId:i,offset:a,currentTime:s}}},this.analyser.disconnect(),r.connect(this.analyser),this.stream=r,!0}add16BitPCM(r,e="default"){if(typeof e!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[e])return;this.stream||this._start();let t;if(r instanceof Int16Array)t=r;else if(r instanceof ArrayBuffer)t=new Int16Array(r);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:t,trackId:e}),t}async getTrackSampleOffset(r=!1){if(!this.stream)return null;let e=crypto.randomUUID();this.stream.port.postMessage({event:r?"interrupt":"offset",requestId:e});let t;for(;!t;)t=this.trackSampleOffsets[e],await new Promise(i=>setTimeout(()=>i(),1));let{trackId:o}=t;return r&&o&&(this.interruptedTrackIds[o]=!0),t}async interrupt(){return this.getTrackSampleOffset(!0)}};var qb=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/",Hl=class{constructor(r,e,t){this.data=r;this.id=e;this.shared=t;this.items=[];this.isConnected=!1;this.rafId=0;this.emitter=nn();this.voice=0;this.frequencies=new Float32Array([0]);this.onRealTimeEvent=({time:r,source:e,event:t})=>{e==="server"&&t.type==="spline.ready"?this.onSessionCreated(t):e==="server"&&t.type==="session.created"&&(this.client.createResponse(),this.client.on("realtime.event",this.onRealTimeEvent))};this.onSessionCreated=async r=>{let e=Object.values(this.client.tools).map(t=>({type:"function",...t.definition}));this.client.realtime.send("spline.tools",{tools:e}),this.client.realtime.send("spline.connect",{}),await this.wavRecorder.record(t=>this.client.isConnected()&&this.client.appendInputAudio(t.mono))};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected){let r=this.wavStreamPlayer.analyser?this.wavStreamPlayer.getFrequencies("voice"):{values:new Float32Array([0])},e=r.values.reduce((t,o)=>t+o,0)/r.values.length;this.voice=e,this.frequencies=r.values,this.emitter.emit("voice",{value:e,frequencies:r.values})}};this.client=new Ss({url:qb()+"?uuidfile="+r.integration.hash}),this.wavRecorder=new Ul({sampleRate:24e3}),this.wavStreamPlayer=new gd({sampleRate:24e3})}update(r){this.data=r,this.client=new Ss({url:qb()+"?uuidfile="+r.integration.hash})}setColorByName(r,e){let t=this.shared.getColorByName(r);if(t){let{id:o}=t,{r:i,g:a,b:s}=q0.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:i/255,g:a/255,b:s/255})}}connect(){if(this.isConnected)return;this.isConnected=!0,this.client.updateSession({turn_detection:{type:"server_vad"}}),this.client.addTool({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:i})=>{this.setColorByName("Voice Assistant Color",i)});let r=this.shared.getVariablesNames().join(", ");this.client.addTool({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: ${r}. 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:i,value:a})=>{let s=this.shared.getVariableByName(i);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.client.addTool({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:i,value:a})=>{this.setColorByName(i,a)});let t=this.shared.scene,o=[];t.traverseEntity(i=>{i.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.client.addTool({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:i,direction:a})=>{this.emitter.emit("trigger_event",{description:i,direction:a})}),this.client.on("error",i=>console.error(i)),this.client.on("conversation.interrupted",async()=>{let i=await this.wavStreamPlayer.interrupt();if(i?.trackId){let{trackId:a,offset:s}=i;await this.client.cancelResponse(a,s)}}),this.client.on("conversation.updated",async({item:i,delta:a})=>{let s=this.client.conversation.getItems();if(a?.audio&&this.wavStreamPlayer.add16BitPCM(a.audio,i.id),i.status==="completed"&&i.formatted.audio?.length){let l=await Ul.decode(i.formatted.audio,24e3,24e3);i.formatted.file=l}this.items=s}),this.animate()}disconnect(){cancelAnimationFrame(this.rafId),this.voice=0,this.isConnected=!1}async start(){try{await this.wavRecorder.end()}catch{}await this.wavRecorder.begin(),this.client.on("realtime.event",this.onRealTimeEvent),await this.wavStreamPlayer.connect(),await this.client.connect()}async stop(){try{this.client.off("realtime.event",this.onRealTimeEvent)}catch(r){console.error(r)}this.client.disconnect(),await this.wavRecorder.end(),await this.wavStreamPlayer.interrupt()}computeAnalysisForListenerEvent(r){if(r.analysis==="range"){let e=this.frequencies.slice(...r.analysisRange);return e.reduce((t,o)=>t+o,0)/e.length}return r.analysis==="single"?this.frequencies[r.analysisSingle]:this.voice}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}};function $b(n){return"variable_"+n}var ph=class extends id{constructor(e){super();this.shared=e}create(e){return new xs(e,this.shared)}},Ni=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Fl(!0);this.geometryCache2=new Fl(!1);this.imageHolderCache=new ph(this);this.thisContext={scene:Gb,shared:this};this.deletedMaterial=new Mi(Yt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(Pu.emptyImage,this);this.deletedVideo=new Nr(xa.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[i,a]of Object.entries(e.images))this.addImage(i,a);if(e.videos)for(let[i,a]of Object.entries(e.videos))this.addVideo(i,a);if(e.audios)for(let[i,a]of Object.entries(e.audios))this.addAudio(i,a);if(e.particles)for(let[i,a]of Object.entries(e.particles))this.addParticle(i,a);this.reset(r)}setRequestRender(r){this._requestRender=r}getImageLoadPromises(){return Object.values(this.images).map(r=>r.loadPromise)}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.data=r,this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.userAPIs))this.addUserAPI(t,o);for(let[t,o]of Object.entries(r.userWebhooks))this.addUserWebhook(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.particles))this.addParticle(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new Mi(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new Ii(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Nr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addUIBuffer(r,e){return this.uiBuffers[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[r].updateSrc(e),!0):(this.uiBuffers[r]=new Nr(e,this),!1)}uiBuffer(r){return this.uiBuffers[r]}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new Nr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Hn(e.r,e.g,e.b,e.a):this.colors[r]=new Hn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}getColorNames(){return Object.values(this.data.colors).map(r=>r.name)}getColorByName(r){for(let e in this.data.colors)if(this.data.colors[e].name===r)return{color:this.colors[e],id:e}}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new kt(0,0,0,0))}else return"a"in r?new kt(r.r,r.g,r.b,r.a):new kt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Ei)return e;{let t=new Ei({src:e.data});return this.audios[r]=t,t}}addParticle(r,e){this.particles[r]=e}getParticle(r){return this.particles[r]}deleteParticle(r){this.particles[r]&&delete this.particles[r]}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Ei&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new pd(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Ei&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){if(this.variables[r]===void 0){let t=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem($b(r));t=o!==null?JSON.parse(o):e.value}return this.variables[r]={value:t,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0}return this.variables[r].value=e.value,!1}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[r].persistent&&localStorage.setItem($b(r),JSON.stringify(e));let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],l=t,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[r].locations.splice(i,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]]=t*dh.MathUtils.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),je.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],t)}}return this.requestRender(),!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return r[1]==="rotation"&&(t*=dh.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ct.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(r=>r.data.name)}getVariableByName(r){for(let e of this.data.variables)if(e.data.name===r)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){if(this.data=e,r.path[0]==="images")r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id);else if(r.path[0]==="videos")r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id);else if(r.path[0]==="audios")r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id);else if(r.path[0]==="particles")r.path.length===2&&r.type===0?r.props.data&&this.addParticle(r.path[1],e.particles[r.path[1]]):r.path.length===1&&r.type===1?this.addParticle(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteParticle(r.id);else if(r.path[0]==="colors")r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id);else if(r.path[0]==="materials")r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(gt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t});else if(r.path[0]==="fonts")r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id);else if(r.path[0]==="variables")r.path.length===2&&r.type===0?"value"in r.props?this.updateVariable(r.path[1],r.props.value):"persistent"in r.props&&(this.variables[r.path[1]].persistent=r.props.persistent):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id);else if(r.path[0]==="userAPIs"){if(r.path.length===1&&r.type===1)this.addUserAPI(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserAPI(r.id);else if(typeof r.path[1]=="string"){let o=e.userAPIs[r.path[1]];if(o){let i=r.type===0&&r.props.debounce===void 0,a=this.getUserAPI(r.path[1]);a instanceof Hl?a.update(o):a?.update(o,this,i)}}}else if(r.path[0]==="userWebhooks"){if(r.path.length===1&&r.type===1)this.addUserWebhook(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserWebhook(r.id);else if(typeof r.path[1]=="string"){let o=e.userWebhooks[r.path[1]];o&&this.getUserWebhook(r.path[1])?.update(o)}}else r.path[0]==="lib"&&this.updateLibByOp(gt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}addUserAPI(r,e){return this.userAPIs[r]?(this.userAPIs[r].update(e,this),!0):this.openAIRealtime?.id===r?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Hl(e,r,this),!1):(this.userAPIs[r]=new Hu(r,e,this),!1)}getUserAPI(r){return this.openAIRealtime?.id===r?this.openAIRealtime:this.userAPIs[r]}getUserAPIs(){return this.userAPIs}deleteUserAPI(r){let e=this.userAPIs[r];e&&(e.dispose(),delete this.userAPIs[r])}addUserWebhook(r,e){return this.userWebhooks[r]?(this.userWebhooks[r].update(e),!0):(this.userWebhooks[r]=new hd(r,e),!1)}getUserWebhook(r){return this.userWebhooks[r]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(r){let e=this.userWebhooks[r];e&&(e.dispose(),delete this.userWebhooks[r])}get scene(){return this.entityOpContext.scene}},Yb=new Ni(Gr.emptyData());var Pr=class extends Ft{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Dg(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Fe(e.path,["material"])&&this.material instanceof wr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Fe(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(gt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&fc(this.material).forEach(e=>{e instanceof wr&&(e instanceof Mi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var Xb=new Dr.Vector3,Kb=new Dr.Vector4,Qb=new Dr.Vector4,mE=new Dr.Vector3,Zb=new Dr.Matrix4,St=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.isSkinnedMesh=!1;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.bindMode=t.bindMode,this.bindMatrix=new Dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new Dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Ni){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return nl.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return nl.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(e.path,["geometry"])&&this.updateByPatchedOpGeometry(gt.drop(e,1),t.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...i};this.localGeometry=an(u,t,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;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 i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=an(i,t,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof Nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:i,value:a}}of o)this.updateMorphInfluences(i,t.shared.getVariable(a,[this.uuid,"morphTargetInfluences",i]))}super.updateState(e,t)}updateMorphInfluences(e,t){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Kb.fromBufferAttribute(i.attributes.skinIndex,e),Qb.fromBufferAttribute(i.attributes.skinWeight,e),Xb.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=Qb.getComponent(a);if(s!==0){let l=Kb.getComponent(a);Zb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(mE.copy(Xb).applyMatrix4(Zb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function yE(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=new _r.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new _r.Vector3})}r.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=r.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new _r.Float32BufferAttribute(i,3))}function gE(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new _r.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new _r.Float32BufferAttribute(t,3))}function ws(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof wr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?gE(n):yE(n)}function Ps(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[_r.MathUtils.seededRandom(o),_r.MathUtils.seededRandom(o+1e4),_r.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new _r.BufferAttribute(t,3))}var Bo=new pn.Box3,Wl=new pn.Vector3;function Jb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Di=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new pn.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=Nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ws(this),Ps(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Ft.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new pn.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bo.setFromBufferAttribute(t),Bo.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bo.getSize(Wl),this.hasNonUniformScale&&Wl.divide(this.scale);let i={width:Wl.x,height:Wl.y,depth:Wl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Bo.min.set(e[0],e[2],e[4]),Bo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Bo.min.applyMatrix4(this.shearScaleInv),Bo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new pn.Sphere);let o=t.boundingSphere.center;Bo.getCenter(o),t.boundingSphere.radius=o.distanceTo(Bo.max)}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Ro=require("three"),ev=-1,xE=1,tv={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},ql=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-ev)*(e-t)/(xE-ev)+t},bE=new Ro.Vector3,xd=new Ro.Vector3,vE=new Ro.Vector3,SE=new Ro.Vector3;function Cs(n,r){let e=vE.fromArray(n),t=SE.fromArray(r);xd.copy(t).sub(e);let o=xd.length();return xd.normalize().multiplyScalar(o*.5),bE.copy(e).add(xd).toArray()}var Hr=new Ro.Triangle,bd=new Ro.Vector3,vd=new Ro.Vector3,_i=new Ro.Vector3;function ov(n){let r=[];for(let e=0;e<=n.index.count;e++)if(bd.fromArray(n.index.array,e*3),Hr.setFromAttributeAndIndices(n.attributes.position,bd.x,bd.y,bd.z),Hr.getNormal(vd),Hr.getMidpoint(_i),!(isNaN(_i.x)||isNaN(_i.y)||isNaN(_i.z))){let{a:t,b:o,c:i}=Hr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=Cs(a,s),f=Cs(s,l),h=Cs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(C=>Math.round(C)===Math.round(y)).length>1,S=[],P=Hr.getMidpoint(_i).toArray();y===c&&!b&&(S=[f,h,h],P=d),y===u&&!b&&(S=[d,h,h],P=f),y===p&&!b&&(S=[d,f,f],P=h),b&&(S=[d,f,h]),r.push({vertices:[a,s,l],faceCenters:S,midpoint:P,norm:Hr.getNormal(vd).toArray()})}return r}function nv(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Hr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Hr.getNormal(vd),Hr.getMidpoint(_i);let o=Hr.a.toArray(),i=Hr.b.toArray(),a=Hr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[Cs(o,i),Cs(i,a),Cs(a,o)],midpoint:_i.toArray(),norm:vd.toArray()})}return r}var wE=4,PE=.5,fh=n=>.5*(1-Math.cos(n*Math.PI)),hh=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,l=e-i,c=t-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<wE;b++){let S=o+(i<<4)+(a<<8);u=fh(s),p=fh(l),h=this.perlin[S&4095],h+=u*(this.perlin[S+1&4095]-h),m=this.perlin[S+16&4095],m+=u*(this.perlin[S+16+1&4095]-m),h+=p*(m-h),S+=256,m=this.perlin[S&4095],m+=u*(this.perlin[S+1&4095]-m),y=this.perlin[S+16&4095],y+=u*(this.perlin[S+16+1&4095]-y),m+=p*(y-m),h+=fh(c)*(m-h),d+=h*f,f*=PE,o<<=1,s*=2,i<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),c>=1&&(a++,c--)}return d}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},iv=hh;var Os=require("three");var av=new Os.Vector3,sv=new Os.Matrix4,lv=new Os.Ray;function cv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="TextGeometry"||t.geometry.type==="InputGeometry")&&(r=!0)}),r}var Yn=class extends St{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(sv.copy(o).invert(),lv.copy(e.ray).applyMatrix4(sv),lv.intersectBox(this.singleBBox,av))){let i=av.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var hr=1e-4,Lo,pv,fv,hv,uv=new Je.Vector3,dv=new Je.Vector3;qu.then(n=>{Lo=n,pv=[Lo.get_face_center,Lo.get_edge_midpoint,Lo.get_vertex_position],fv=[Lo.get_face_normal,Lo.get_edge_normal,Lo.get_vertex_normal],hv=[Lo.face_count,Lo.edge_count,Lo.vertex_count]});var CE=new Je.Matrix4,OE=new Je.Matrix4,Xn=new Je.Vector3,Sd=new Je.Vector3,$l=new Je.Vector3,mh=new Je.Vector3,AE=new Je.Vector3,TE=new Je.Vector3;var yh=class{constructor(r,e){this.data=r;this.is3D=e;this.perlin=new iv;r.noiseType==="perlin"?(this.perlin.noiseSeed(r.seed),e?this.noise=(o,i,a)=>this.perlin.noise(o,i,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=jx((0,wd.default)(r.seed)):this.noise=Fx((0,wd.default)(r.seed))}},As=class extends Ea(Je.Object3D){constructor(e,t){super();this.parameters=t;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 t of this.children)t instanceof tn&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof tn&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)t=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===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new tn(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new tn(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[o])}}getRandom(e,t=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==t)&&(this.random=new yh(e,t)),this.random}_updateRadial(e){let t=e.radial,o=t.start*Je.MathUtils.DEG2RAD,i=t.end*Je.MathUtils.DEG2RAD,a=o-i,s=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Je.Vector3(0,0,1);break;case"y":l=new Je.Vector3(0,1,0);break;default:case"x":l=new Je.Vector3(1,0,0);break}let c=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=ql(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=t.scale[0]+p(y,Me(m,c.scale[0]))||hr,f.scale.y=t.scale[1]+p(y,Me(m,c.scale[1]))||hr,f.scale.z=t.scale[2]+p(y,Me(m,c.scale[2]))||hr,f.position.setScalar(0);let b=a/e.count*d-o;switch(t.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,t.radius),f.position.x+=t.position[0]+p(y,Me(m,c.position[0])),f.position.y+=t.position[1]+p(y,Me(m,c.position[1])),f.position.z+=t.position[2]+p(y,Me(m,c.position[2]));let S=p(y,Me(m,c.rotation[0])),P=p(y,Me(m,c.rotation[1])),C=p(y,Me(m,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+S,f.rotation.y+=s.y+P,f.rotation.z+=s.z+C):f.rotation.set(s.x+S,s.y+P,s.z+C)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=ql(i.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(i.freqScale/10)+i.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Me(p,i.rotation[0])),h=s(d,Me(p,i.rotation[1])),m=s(d,Me(p,i.rotation[2]));c.scale.x=1+(t.scale[0]-1)*l+s(d,Me(p,i.scale[0]))||hr,c.scale.y=1+(t.scale[1]-1)*l+s(d,Me(p,i.scale[1]))||hr,c.scale.z=1+(t.scale[2]-1)*l+s(d,Me(p,i.scale[2]))||hr,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=t.position[0]*l+s(d,Me(p,i.position[0])),c.position.y=t.position[1]*l+s(d,Me(p,i.position[1])),c.position.z=t.position[2]*l+s(d,Me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i,!0),s=ql(i.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 Je.Vector3(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)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement),h=this.children[t++];h.scale.x=1+s(t,Me(f,i.scale[0]))||hr,h.scale.y=1+s(t,Me(f,i.scale[1]))||hr,h.scale.z=1+s(t,Me(f,i.scale[2]))||hr;let m=s(t,Me(f,i.rotation[0])),y=s(t,Me(f,i.rotation[1])),b=s(t,Me(f,i.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(t,Me(f,i.position[0])),h.position.y=o.size[1]*p-c.y+s(t,Me(f,i.position[1])),h.position.z=o.size[2]*d-c.z+s(t,Me(f,i.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)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement),d=this.children[t++];d.scale.x=1+s(t,Me(p,i.scale[0]))||hr,d.scale.y=1+s(t,Me(p,i.scale[1]))||hr,d.scale.z=1+s(t,Me(p,i.scale[2]))||hr;let f=s(t,Me(p,i.rotation[0])),h=s(t,Me(p,i.rotation[1])),m=s(t,Me(p,i.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(t,Me(p,i.position[0])),d.position.y=-o.size[1]*c+s(t,Me(p,i.position[1])),d.position.z=-o.size[2]*u+s(t,Me(p,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=ql(i.strength,this.parameters.randomness);if(!t.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 Yn)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*t.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 Iu(this.objectForSample).build(),u=tv[t.axis],p=this.children;c.setRandomGenerator((0,wd.default)(this.object.uuid+t.seed));for(let[d,f]of p.entries()){let h=d*(i.freqScale/10)+i.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Me(m,i.rotation[0])),S=s(y,Me(m,i.rotation[1])),P=s(y,Me(m,i.rotation[2]));t.spreadType==="random"?c.sample($l,mh):(l.length&&($l.fromArray(l[d].pos),mh.fromArray(l[d].norm)),this.objectForSample instanceof Di&&$l.applyMatrix4(CE.copy(this.objectForSample.matrixWorld).invert())),$l.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy($l),Xn.fromArray(u);let C=t.align==="normal"?mh:this.object.getWorldDirection(TE),v=Sd.fromArray(t.position);Sd.x+=s(y,Me(m,i.position[0])),Sd.y+=s(y,Me(m,i.position[1])),Sd.z+=s(y,Me(m,i.position[2]));let A=Math.acos(C.dot(Xn)),T=AE.crossVectors(Xn,C).normalize(),g=OE.makeRotationAxis(T,A),D=C.clone().cross(this.object.up).normalize(),E=D.clone().cross(C).normalize(),M=new Je.Matrix4().makeBasis(D,C,E),N=new Je.Vector3(Xn.y,Xn.z,Xn.x).normalize(),_=N.clone().cross(Xn).normalize(),B=new Je.Matrix4().makeBasis(N,Xn,_).invert(),V=new Je.Matrix4().multiplyMatrices(M,B);f.rotation.setFromRotationMatrix(V),v.applyMatrix4(g),f.position.add(v),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+S,f.rotation.z=f.rotation.z+o.z+P,f.scale.setScalar(1),f.scale.x=f.scale.x+t.scale[0]+s(y,Me(m,i.scale[0]))||hr,f.scale.y=f.scale.y+t.scale[1]+s(y,Me(m,i.scale[1]))||hr,f.scale.z=f.scale.z+t.scale[2]+s(y,Me(m,i.scale[2]))||hr,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,t=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=t.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):t.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof Di){let a=this.objectForSample,s=rv[e],l=hv[s],c=pv[s],u=fv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);uv.fromArray(f).applyMatrix4(a.matrixWorld),dv.fromArray(h),o(uv.toArray(),dv.toArray())}}else(this.objectForSample.geometry.index?ov(this.objectForSample.geometry):nv(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 i=Array.from(t.values());for(let a of i)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 i}updateState(e,t){if(this.parameters=qo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Ft?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Je.Matrix4,this.hiddenMatrix=new Je.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Qr=require("three");var mt=require("three");var nr=require("three");var mv=require("three"),Vo=n=>{var r;return r=class extends n{},r.geometryHelper=new mv.BoxGeometry(30,30,30),r};var lr=require("three"),Pd=new lr.Ray,gh=new lr.Sphere,yv=new lr.Matrix4,zo=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),gh.copy(a.boundingSphere),gh.applyMatrix4(s),e.ray.intersectsSphere(gh)===!1||(yv.copy(s).invert(),Pd.copy(e.ray).applyMatrix4(yv),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 S=Math.max(0,h.start),P=Math.min(d.count,h.start+h.count);for(m=S,y=P;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(n,e,Pd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let P=a.attributes.position,C=new lr.Vector3,v=new lr.Vector3,A=new lr.Vector3,T=new lr.Vector3,g=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),M=E*E,N=Math.max(0,h.start),_=Math.min(P.count,h.start+h.count);for(let B=N,V=_-1;B<V;B+=g){if(C.fromBufferAttribute(P,B),v.fromBufferAttribute(P,B+1),Pd.distanceSqToSegment(C,v,T,A)>M)continue;T.applyMatrix4(i.matrixWorld);let L=e.ray.origin.distanceTo(T);L<e.near||L>e.far||t.push({distance:L,point:A.clone().applyMatrix4(i.matrixWorld),object:n})}}function b(S,P,C,v,A,T,g){let D=new lr.Vector3,E=new lr.Vector3,M=new lr.Vector3,N=new lr.Vector3,_=new lr.Vector3;if(D.fromBufferAttribute(v,A),E.fromBufferAttribute(v,T),M.fromBufferAttribute(v,g),C.intersectTriangle(D,E,M,!1,N)===null)return null;_.copy(N),_.applyMatrix4(S.matrixWorld);let V=P.ray.origin.distanceTo(_);return V<P.near||V>P.far?null:{faceIndex:1,distance:V,point:_.clone(),object:S}}};var Cd=new nr.Vector3,Wr=new nr.Camera,xh=class extends nr.LineSegments{constructor(e){let t=new nr.BufferGeometry,o=new nr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new nr.Color(15711266),c=new nr.Color(15711266),u=new nr.Color(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new nr.Float32BufferAttribute(i,3)),t.setAttribute("color",new nr.Float32BufferAttribute(a,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;Wr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;yo("n1",t,e,Wr,-i,-a,s),yo("n2",t,e,Wr,i,-a,s),yo("n3",t,e,Wr,-i,a,s),yo("n4",t,e,Wr,i,a,s);let l=s;yo("f1",t,e,Wr,-i,-a,l),yo("f2",t,e,Wr,i,-a,l),yo("f3",t,e,Wr,-i,a,l),yo("f4",t,e,Wr,i,a,l);let c=l,u=.5;yo("u1",t,e,Wr,i*.7*u,a*1.1,c),yo("u2",t,e,Wr,-i*.7*u,a*1.1,c),yo("u3",t,e,Wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yo(n,r,e,t,o,i,a){Cd.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],Cd.x,Cd.y,Cd.z)}}var Od=class extends Vo(xh){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){zo(this.object,this.geometry,e,t,!0)}};var Yl=require("three");var Ad;(r=>r.is=e=>"objectHelper"in e)(Ad||(Ad={}));var qr=(n,r)=>class extends _a(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Yl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Yl.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Yl.Box3Helper&&(i.visible=!1)}}};var Td=790,Ts=new mt.Vector3,bh=new mt.Vector3,vh=new mt.Quaternion,Sh=new mt.Vector3,Xl=new mt.Vector3,wh=new mt.Vector3,fn=class extends qr(mt.Camera,Od){constructor(e="",t={...mi.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Nn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new mt.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new mt.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new mt.PerspectiveCamera(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new mt.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ts),this.targetOffset=Ts.distanceTo(e)}getTarget(e=new mt.Vector3){return this.getWorldDirection(bh),this.getWorldPosition(Ts),bh.multiplyScalar(this.targetOffset),e.copy(Ts).add(bh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ts),Ts.distanceTo(e)}updateUp(){this.getWorldQuaternion(vh),Sh.set(0,0,1).applyQuaternion(vh),Xl.copy(mt.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Xl.negate(),Xl.applyQuaternion(vh),wh.copy(mt.Object3D.DEFAULT_UP).projectOnPlane(Sh),this.angleOffsetFromUp=wh.angleTo(Xl),this.angleOffsetFromUp*=wh.cross(Xl).dot(Sh)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new mt.Vector3),i=e.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mt.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-Td*.5*i,this.right=Td*.5*i,this.top=Td*.5*(1/a),this.bottom=-Td*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return sa(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var EE=require("three");var Kn=require("three");var Is=new Kn.Matrix4,ME=new Kn.Matrix4;var Cr=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Kn.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof Cr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Ft&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Is.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=jr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1}else a instanceof Cr&&a.needsTransformForDownstream===!0?(jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(jr.transformMeshSet(a.booleanMeshSetAddress,ME.multiplyMatrices(Is,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}jr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===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 Kn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return jr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Kn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=jr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ws(this),Ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};var xv=require("three");var gv;(r=>{function n(e){return je.is(e)&&e instanceof xv.Light}r.is=n})(gv||(gv={}));var Ms=(n,r)=>class extends qr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Qn=n=>n instanceof Ft,Kl=n=>n!==null&&n instanceof Cr;var Ql=n=>Ad.is(n);var Sv=require("three");var Go=require("three");var NE=new Go.Vector3(1,1,1),bv=new Go.Vector3,DE=new Go.Vector3,vv=new Go.Quaternion,$r=class extends Vo(Go.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.dummy=new Go.Group;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){zo(this.object,$r.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(bv,vv,DE),this.matrix.compose(bv,vv,NE),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var Zn=class extends qr(Sv.Group,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e),"buffer"in r&&Object.keys(r).length===1&&e.scene.reloadSplats()}};var wv=require("three");var Id=class extends qr(wv.Group,$r){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};var Vs=require("three");var Es=require("three"),_E=n=>`
2549
2582
 
2550
2583
  // PCSS implementation based on:
2551
2584
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2919,7 +2952,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2919
2952
  }
2920
2953
 
2921
2954
  #endif
2922
- `,BE=Es.ShaderChunk.lights_fragment_begin,RE=Es.ShaderChunk.shadowmask_pars_fragment,Cv=null,LE=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Ov=(n="medium")=>{if(Cv===n)return!1;Cv=n;let r=LE(n);Es.ShaderChunk.shadowmap_pars_fragment=_E(r);let e=BE.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 ]"),Es.ShaderChunk.lights_fragment_begin=e;let t=RE.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Es.ShaderChunk.shadowmask_pars_fragment=t,!0};var ec=require("three");var Av=require("three");var Ns=class extends Vo(Av.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ns.geometryHelper,e,t)}};var Tv=require("three");var Ds=class extends Vo(Tv.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ds.geometryHelper,e,t)}};var Nd=require("three");var Ed=class extends Vo(Nd.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ed.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ed._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},Jl=Ed;Jl._vector=new Nd.Vector3;function VE(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var _s=class extends Ms(ec.DirectionalLight,Ns){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new ec.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof ec.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&VE(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var eS=require("three");var Yr=require("three");var Iv=new Yr.Vector3,Mv=new Yr.Vector3,Ev=new Yr.Quaternion,Bs=class extends Ms(Yr.SpotLight,Jl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Yr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Yr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Yr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Mv.setFromMatrixPosition(this.matrixWorld),Ev.setFromRotationMatrix(this.matrixWorld),Iv.copy(this.up).applyQuaternion(Ev).negate().multiplyScalar(this.distance),this.target.position.copy(Mv).add(Iv),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function zE(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),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 Dd(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function Nv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function Dv(n){let[r,e,t]=zE(n),o=Dd(r,Nv(t)),i=Dd(Dd(t,e),Nv(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function _v({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=Dd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Be;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function r(A,T=v.identity()){for(let g=0,D=A.length;g<D;g++)T[g]=A[g];return T}v.copy=r;function e(A,T,g,D,E,M){return v.setAbcdef(v.identity(),A,T,g,D,E,M)}v.create=e;function t(A,T,g,D,E,M,N){return A[0]=T,A[1]=D,A[2]=M,A[3]=g,A[4]=E,A[5]=N,A}v.setAbcdef=t;function o(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=B*g+V*E,H=B*D+V*M,q=k*g+L*E,re=k*D+L*M,ee=W*g+F*E+N,X=W*D+F*M+_;return v.create(j,H,q,re,ee,X)}v.append=o;function i(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=g,H=D,q=E,re=M;(B!==1||V!==0||k!==0||L!==1)&&(j=g*B+D*k,H=g*V+D*L,q=E*B+M*k,re=E*V+M*L);let ee=N*B+_*k+W,X=N*V+_*L+F;return v.create(j,H,q,re,ee,X)}v.prepend=i;function a(A){return[A[0],A[3],A[1],A[4],A[2],A[5]]}v.getAbcdef=a;function s(A){let[T,g,D,E,M,N]=v.getAbcdef(A),_=T*E-g*D,B=E/_,V=-g/_,k=-D/_,L=T/_,W=(D*N-E*M)/_,F=-(T*N-g*M)/_;return v.create(B,V,k,L,W,F)}v.invert=s;function l([A,T],g){let[D,E,M,N,_,B]=v.getAbcdef(g);return[D*A+M*T+_,E*A+N*T+B]}v.apply=l;function c(A,T){let[g,D,E,M,N,_]=v.getAbcdef(T),B=1/(g*M+E*-D),[V,k]=A;return[M*B*V+-E*B*k+(_*E-N*M)*B,g*B*k+-D*B*V+(-_*g+N*D)*B]}v.applyInverse=c;function u(A,T,g=T){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D*T,E*g,M*T,N*g,_*T,B*g),A}v.scale=u;function p(A,T){let g=Math.cos(T),D=Math.sin(T),[E,M,N,_,B,V]=v.getAbcdef(A);return v.setAbcdef(A,E*g-M*D,E*D+M*g,N*g-_*D,N*D+_*g,B*g-V*D,B*D+V*g),A}v.rotate=p;function d(A,T,g){let[D,E]=g,M=v.translate(A,-D,-E);return M=v.rotate(M,T),M=v.translate(M,D,E),M}v.rotateAround=d;function f(A,T,g){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,_+T,B+g),A}v.translate=f;function h(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setTranslate=h;function m(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setPosition=m;function y(A){let[T,g,D,E]=v.getAbcdef(A),M=Math.sqrt(T*T+g*g),N=Math.sqrt(D*D+E*E);return[M,N]}v.getScale=y;function b(A){let[,,,,T,g]=v.getAbcdef(A);return[T,g]}v.getPosition=b;function S(A,T){return v.decompose(A,T).rotation}v.getRotation=S;function P(A,T){let[g,D,E,M,N,_]=v.getAbcdef(A),{rotation:B,scale:V,shear:k}=Dv([[g,E],[D,M]]);return{position:[N+(T[0]*g+T[1]*E)-T[0],_+(T[0]*D+T[1]*M)-T[1]],scale:V,rotation:B,shear:k,pivot:T}}v.decompose=P;function O(A,T,g,D,E=[0,0]){let[M,N]=A,[_,B]=D,[V,k,L,W]=_v({rotation:g,scale:T,shear:E}),F=M-(_*V+B*L)+_,j=N-(_*k+B*W)+B;return v.create(V,k,L,W,F,j)}v.compose=O})(Be||(Be={}));var GE=Math.PI/180,ste=180/Math.PI;function Bv(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Rv(n){return n*GE}var hn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Be.identity();this.worldMatrix=Be.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Jn;this._recursiveBBox=new Jn;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=nn();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.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=Be.compose(this.position,this.scale,Rv(this.rotation),en.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Be.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Be.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return en.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(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Fe(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=ct.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=ct.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,gi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)gi.toOps(this.data,o.data).forEach(a=>{let s=pa.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=gi.patch(this.data,o),gi.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new hn(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof hn&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var ir=class extends hn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof ir&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof ir?o.traverse(e):t=e(o)}intersectsChildrenHelper(e,t,o,i,a){for(let s of this.children)if(s.intersects(e,t,o,!1)&&(a.push(s),i)||s instanceof ir&&s.intersectsChildrenHelper(e,t,o,i,a))return!0;return!1}intersectsChildren(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,t,o,i,a),a}intersectsChildrenHelperReverse(e,t,o,i,a){for(let s of this.children)if(s instanceof ir&&s.intersectsChildrenHelperReverse(e,t,o,i,a)||s.intersects(e,t,o,!1)&&(a.push(s),i))return!0;return!1}intersectsChildrenReverse(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,t,o,i,a),a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new ir(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},Or=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new Or(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function FE(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var Vv=[[-1,1],[-1,-1],[1,-1],[1,1]],Lv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Be.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Be.apply(t,i)):Vv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Be.apply(s,i))})},Jn=class{constructor(){this.matrix=Be.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),Be.copy(r.worldMatrix,this.matrix);let t=Be.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof ir?r.traverse(i=>{i.visible&&Lv(i,e,o)}):Lv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Be.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Be.apply([0,0],t),Be.apply([0,e],t),Be.apply([r,e],t),Be.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Be.apply([r+t,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(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=Be.getAbcdef(this.matrix),l=Be.create(o,i,a,s,t[0],t[1]);this.vertices=Vv.map(([c,u])=>Be.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(FE(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],Be.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Jn;return r.copy(this),r}};var Gv,Fv=new Promise(n=>{Gv=n}),zv=!1;var _d;function jv(){if(zv)return;if(_d)return _d;async function n(){let e=await import("./ui.js");Gv(e.default??e),zv=!0}return _d=n(),_d}function Hv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Te,Oh;async function jE(n){let r=await Fv;Te||(Oh||(Oh=r({locateFile:()=>n})),Te=await Oh)}var kv=Be.identity(),rc=class{constructor(r,e=1){this.canvas=r;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=_e.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=_e.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=kv,this._currentTransform=new Float32Array(kv)}get dpr(){return this._dpr}set dpr(r){this._dpr=r,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 jE(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(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Te.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(Bd(r),Te.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(Bd(r),Te.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}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 r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Te.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.RRectXY(c,i,i);u[4]=u[5]=i,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 r=Be.invert(this.currentTransform);this.ctx.concat(r);let e=Be.translate(Be.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(Bd(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&&t){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=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.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(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(Bd(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,p,d]=l,f=p-c,h=d-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(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Te.ClipOp.Difference:Te.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Te.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!Uv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Te.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Te.XYWHRect(r,e,t,o);if(!!Uv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){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(r,e,t,[o,i,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(t,m,h),e.addText(r);let y=e.build();y.layout(a);let b=i;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(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){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),p=Te.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=Be.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Be.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){!this._isSizeDirty&&r===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function Uv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function Bd({r:n,g:r,b:e,a:t}){return Te.Color4f(n,r,e,t)}var oc=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var nc=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var Rd=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Ld=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var Ar=class extends hn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Rd(e+"-fill",t.fill,o),this.stroke=new Ld(e+"-stroke",t.stroke,o),this.dropShadow=new oc(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new oc(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new nc(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new nc(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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=_e.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=_e.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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),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 t=new Ar(this.uuid,this.data,e);return t.parent=void 0,t}};var ei=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return Bv(e,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new ei(this.uuid,this.data,e);return t.parent=void 0,t}};var Fo=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new Fo(this.uuid,this.data,e);return t.parent=void 0,t}};var ti=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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 t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new ti(this.uuid,this.data,e);return t.parent=void 0,t}};var Rs=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>Vd.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[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=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;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,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-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};Vd.derive(m),e.bezierCurveTo(c,u,p,d,f,h)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new Rs(this.uuid,this.data,e);return t.parent=void 0,t}},Vd;(i=>{function n(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=Ah.derive(h),h}i.derive=n;function r(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??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.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]]]}i.extremas=t;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]]}i.compute=o})(Vd||(Vd={}));var Ah;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=Th.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*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]]}t.compute=e})(Ah||(Ah={}));var Th;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(Th||(Th={}));var Br=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new Fo(e+"-background",Ia.defaultData,o),this.background.parent=this,this.updateState(t,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,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new Br(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var Yv=qs(Ih(),1),mn=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=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,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new mn(this.uuid,this.data,e);return t.parent=void 0,t}};function Xv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,Yv.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return Kv(o)}function Kv(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function Qv(n,r,e){switch(r.type){case"ellipse2d":return new ei(n,r,e);case"rectangle2d":return new Fo(n,r,e);case"text2d":return new ti(n,r,e);case"vector2d":return new Rs(n,r,e);case"path2d":return new mn(n,r,e);case"frame2d":return new Br(n,r,e);case"group2d":default:return new Or(n,r,e)}}var Mh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Or(Mh.GROUP_ID,{...ll.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Qv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Or||s instanceof Br)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof ir&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof ir){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof ir||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}intersectsChildrenReverse(r,e,t,o=!1,i=[]){return this.group.intersectsChildrenReverse(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>mc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Ri=Mh;Ri.GROUP_ID="scene2d";function Eh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,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=r/t;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 WE=qs(Ih(),1);var Loe={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}};var Dt=require("three");var qE=`
2955
+ `,BE=Es.ShaderChunk.lights_fragment_begin,RE=Es.ShaderChunk.shadowmask_pars_fragment,Pv=null,LE=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Cv=(n="medium")=>{if(Pv===n)return!1;Pv=n;let r=LE(n);Es.ShaderChunk.shadowmap_pars_fragment=_E(r);let e=BE.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 ]"),Es.ShaderChunk.lights_fragment_begin=e;let t=RE.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Es.ShaderChunk.shadowmask_pars_fragment=t,!0};var Jl=require("three");var Ov=require("three");var Ns=class extends Vo(Ov.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ns.geometryHelper,e,t)}};var Av=require("three");var Ds=class extends Vo(Av.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ds.geometryHelper,e,t)}};var Ed=require("three");var Md=class extends Vo(Ed.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Md.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Md._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},Zl=Md;Zl._vector=new Ed.Vector3;function VE(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var _s=class extends Ms(Jl.DirectionalLight,Ns){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Jl.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Jl.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&VE(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var Jv=require("three");var Yr=require("three");var Tv=new Yr.Vector3,Iv=new Yr.Vector3,Mv=new Yr.Quaternion,Bs=class extends Ms(Yr.SpotLight,Zl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Yr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Yr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Yr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Iv.setFromMatrixPosition(this.matrixWorld),Mv.setFromRotationMatrix(this.matrixWorld),Tv.copy(this.up).applyQuaternion(Mv).negate().multiplyScalar(this.distance),this.target.position.copy(Iv).add(Tv),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function zE(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),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 Nd(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function Ev(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function Nv(n){let[r,e,t]=zE(n),o=Nd(r,Ev(t)),i=Nd(Nd(t,e),Ev(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function Dv({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=Nd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Be;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function r(A,T=v.identity()){for(let g=0,D=A.length;g<D;g++)T[g]=A[g];return T}v.copy=r;function e(A,T,g,D,E,M){return v.setAbcdef(v.identity(),A,T,g,D,E,M)}v.create=e;function t(A,T,g,D,E,M,N){return A[0]=T,A[1]=D,A[2]=M,A[3]=g,A[4]=E,A[5]=N,A}v.setAbcdef=t;function o(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=B*g+V*E,H=B*D+V*M,q=k*g+L*E,re=k*D+L*M,ee=W*g+F*E+N,X=W*D+F*M+_;return v.create(j,H,q,re,ee,X)}v.append=o;function i(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=g,H=D,q=E,re=M;(B!==1||V!==0||k!==0||L!==1)&&(j=g*B+D*k,H=g*V+D*L,q=E*B+M*k,re=E*V+M*L);let ee=N*B+_*k+W,X=N*V+_*L+F;return v.create(j,H,q,re,ee,X)}v.prepend=i;function a(A){return[A[0],A[3],A[1],A[4],A[2],A[5]]}v.getAbcdef=a;function s(A){let[T,g,D,E,M,N]=v.getAbcdef(A),_=T*E-g*D,B=E/_,V=-g/_,k=-D/_,L=T/_,W=(D*N-E*M)/_,F=-(T*N-g*M)/_;return v.create(B,V,k,L,W,F)}v.invert=s;function l([A,T],g){let[D,E,M,N,_,B]=v.getAbcdef(g);return[D*A+M*T+_,E*A+N*T+B]}v.apply=l;function c(A,T){let[g,D,E,M,N,_]=v.getAbcdef(T),B=1/(g*M+E*-D),[V,k]=A;return[M*B*V+-E*B*k+(_*E-N*M)*B,g*B*k+-D*B*V+(-_*g+N*D)*B]}v.applyInverse=c;function u(A,T,g=T){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D*T,E*g,M*T,N*g,_*T,B*g),A}v.scale=u;function p(A,T){let g=Math.cos(T),D=Math.sin(T),[E,M,N,_,B,V]=v.getAbcdef(A);return v.setAbcdef(A,E*g-M*D,E*D+M*g,N*g-_*D,N*D+_*g,B*g-V*D,B*D+V*g),A}v.rotate=p;function d(A,T,g){let[D,E]=g,M=v.translate(A,-D,-E);return M=v.rotate(M,T),M=v.translate(M,D,E),M}v.rotateAround=d;function f(A,T,g){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,_+T,B+g),A}v.translate=f;function h(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setTranslate=h;function m(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setPosition=m;function y(A){let[T,g,D,E]=v.getAbcdef(A),M=Math.sqrt(T*T+g*g),N=Math.sqrt(D*D+E*E);return[M,N]}v.getScale=y;function b(A){let[,,,,T,g]=v.getAbcdef(A);return[T,g]}v.getPosition=b;function S(A,T){return v.decompose(A,T).rotation}v.getRotation=S;function P(A,T){let[g,D,E,M,N,_]=v.getAbcdef(A),{rotation:B,scale:V,shear:k}=Nv([[g,E],[D,M]]);return{position:[N+(T[0]*g+T[1]*E)-T[0],_+(T[0]*D+T[1]*M)-T[1]],scale:V,rotation:B,shear:k,pivot:T}}v.decompose=P;function C(A,T,g,D,E=[0,0]){let[M,N]=A,[_,B]=D,[V,k,L,W]=Dv({rotation:g,scale:T,shear:E}),F=M-(_*V+B*L)+_,j=N-(_*k+B*W)+B;return v.create(V,k,L,W,F,j)}v.compose=C})(Be||(Be={}));var GE=Math.PI/180,ste=180/Math.PI;function _v(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Bv(n){return n*GE}var hn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Be.identity();this.worldMatrix=Be.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Jn;this._recursiveBBox=new Jn;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=nn();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.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=Be.compose(this.position,this.scale,Bv(this.rotation),en.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Be.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Be.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return en.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(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Fe(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=ct.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=ct.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,gi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)gi.toOps(this.data,o.data).forEach(a=>{let s=pa.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=gi.patch(this.data,o),gi.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new hn(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof hn&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var ir=class extends hn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof ir&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof ir?o.traverse(e):t=e(o)}intersectsChildrenHelper(e,t,o,i,a){for(let s of this.children)if(s.intersects(e,t,o,!1)&&(a.push(s),i)||s instanceof ir&&s.intersectsChildrenHelper(e,t,o,i,a))return!0;return!1}intersectsChildren(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,t,o,i,a),a}intersectsChildrenHelperReverse(e,t,o,i,a){for(let s of this.children)if(s instanceof ir&&s.intersectsChildrenHelperReverse(e,t,o,i,a)||s.intersects(e,t,o,!1)&&(a.push(s),i))return!0;return!1}intersectsChildrenReverse(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,t,o,i,a),a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new ir(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},Or=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new Or(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function FE(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var Lv=[[-1,1],[-1,-1],[1,-1],[1,1]],Rv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Be.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Be.apply(t,i)):Lv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Be.apply(s,i))})},Jn=class{constructor(){this.matrix=Be.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),Be.copy(r.worldMatrix,this.matrix);let t=Be.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof ir?r.traverse(i=>{i.visible&&Rv(i,e,o)}):Rv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Be.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Be.apply([0,0],t),Be.apply([0,e],t),Be.apply([r,e],t),Be.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Be.apply([r+t,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(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=Be.getAbcdef(this.matrix),l=Be.create(o,i,a,s,t[0],t[1]);this.vertices=Lv.map(([c,u])=>Be.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(FE(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],Be.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Jn;return r.copy(this),r}};var zv,Gv=new Promise(n=>{zv=n}),Vv=!1;var Dd;function Fv(){if(Vv)return;if(Dd)return Dd;async function n(){let e=await import("./ui.js");zv(e.default??e),Vv=!0}return Dd=n(),Dd}function Uv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Te,Ch;async function jE(n){let r=await Gv;Te||(Ch||(Ch=r({locateFile:()=>n})),Te=await Ch)}var jv=Be.identity(),tc=class{constructor(r,e=1){this.canvas=r;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=_e.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=_e.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=jv,this._currentTransform=new Float32Array(jv)}get dpr(){return this._dpr}set dpr(r){this._dpr=r,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 jE(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(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Te.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(_d(r),Te.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(_d(r),Te.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}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 r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Te.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.RRectXY(c,i,i);u[4]=u[5]=i,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 r=Be.invert(this.currentTransform);this.ctx.concat(r);let e=Be.translate(Be.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(_d(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&&t){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=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.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(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(_d(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,p,d]=l,f=p-c,h=d-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(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Te.ClipOp.Difference:Te.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Te.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!kv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Te.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Te.XYWHRect(r,e,t,o);if(!!kv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){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(r,e,t,[o,i,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(t,m,h),e.addText(r);let y=e.build();y.layout(a);let b=i;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(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){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),p=Te.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=Be.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=Be.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){!this._isSizeDirty&&r===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function kv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function _d({r:n,g:r,b:e,a:t}){return Te.Color4f(n,r,e,t)}var rc=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var oc=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var Bd=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Rd=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var Ar=class extends hn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Bd(e+"-fill",t.fill,o),this.stroke=new Rd(e+"-stroke",t.stroke,o),this.dropShadow=new rc(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new rc(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new oc(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new oc(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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=_e.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=_e.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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),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 t=new Ar(this.uuid,this.data,e);return t.parent=void 0,t}};var ei=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return _v(e,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new ei(this.uuid,this.data,e);return t.parent=void 0,t}};var Fo=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new Fo(this.uuid,this.data,e);return t.parent=void 0,t}};var ti=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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 t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new ti(this.uuid,this.data,e);return t.parent=void 0,t}};var Rs=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>Ld.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[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=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;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,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-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};Ld.derive(m),e.bezierCurveTo(c,u,p,d,f,h)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new Rs(this.uuid,this.data,e);return t.parent=void 0,t}},Ld;(i=>{function n(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=Oh.derive(h),h}i.derive=n;function r(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??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.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]]]}i.extremas=t;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]]}i.compute=o})(Ld||(Ld={}));var Oh;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=Ah.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*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]]}t.compute=e})(Oh||(Oh={}));var Ah;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(Ah||(Ah={}));var Br=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new Fo(e+"-background",Ia.defaultData,o),this.background.parent=this,this.updateState(t,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,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new Br(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var $v=qs(Th(),1),mn=class extends Ar{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=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,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new mn(this.uuid,this.data,e);return t.parent=void 0,t}};function Yv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,$v.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return Xv(o)}function Xv(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function Kv(n,r,e){switch(r.type){case"ellipse2d":return new ei(n,r,e);case"rectangle2d":return new Fo(n,r,e);case"text2d":return new ti(n,r,e);case"vector2d":return new Rs(n,r,e);case"path2d":return new mn(n,r,e);case"frame2d":return new Br(n,r,e);case"group2d":default:return new Or(n,r,e)}}var Ih=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Or(Ih.GROUP_ID,{...ll.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Kv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Or||s instanceof Br)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof ir&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof ir){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof ir||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}intersectsChildrenReverse(r,e,t,o=!1,i=[]){return this.group.intersectsChildrenReverse(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>hc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Ri=Ih;Ri.GROUP_ID="scene2d";function Mh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,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=r/t;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 WE=qs(Th(),1);var Loe={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}};var Dt=require("three");var qE=`
2923
2956
  varying vec2 vUv;
2924
2957
  void main() {
2925
2958
  vUv = uv;
@@ -2930,7 +2963,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2930
2963
  void main() {
2931
2964
  vec4 texel = texture2D( tDiffuse, vUv );
2932
2965
  gl_FragColor = texel;
2933
- }`,YE=new Dt.OrthographicCamera(-1,1,1,-1,0,1),_h=class extends Dt.BufferGeometry{constructor(){super(),this.setAttribute("position",new Dt.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt.Float32BufferAttribute([0,2,0,0,2,0],2))}},XE=new _h,Bh=class{constructor(r){this._mesh=new Dt.Mesh(XE,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,YE)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},Zv=new Dt.ShaderMaterial({defines:{},uniforms:{tDiffuse:new Dt.Uniform(null)},vertexShader:qE,fragmentShader:$E}),KE=new Bh(Zv),Nh=null,Dh=null,QE=()=>(Nh===null&&(Nh=document.createElement("canvas")),Nh),ZE=n=>(Dh===null&&(Dh=new rc(n)),Dh),JE=Be.identity(),Ls=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;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 r=this.width,e=this.height,t=this.dpr;this.renderer.dpr=this.isScreenSpace?t:Math.floor(2048/Math.max(r,e)),this.renderer.setSize(r,e)};this.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new Ri(Dt.MathUtils.generateUUID(),Iu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=QE(),this.renderer=ZE(this.canvas),this.promise=this.init(),this.renderTarget=new Dt.WebGLRenderTarget(1,1,{type:Dt.HalfFloatType,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 Dt.CanvasTexture(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof rc&&(this.renderer.wasmURL=Ib.skiaWasmUrl),await this.renderer.init()}render(r){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),Zv.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=r.getRenderTarget();r.setRenderTarget(this.renderTarget),r.clear(),KE.render(r),r.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=JE,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},Jv({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(r,e=window.devicePixelRatio){let t=Math.max(1,r?.width??this.width),o=Math.max(1,r?.height??this.height);this.dpr=e,this.width=t,this.height=o,this._innerApplySize();let i=1,a=512,s=512;(t*e<a||o*e<s)&&(i=Math.max(a/(t*e),s/(o*e))),this.renderTarget.setSize(t*e*i,o*e*i),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof Br)))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(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function Jv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof Br&&r instanceof Br||n instanceof Or&&r instanceof Or)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&tN({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function eN(n){if(Rh(n))return[n.width,n.height];if(n instanceof mn){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Or){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function tN({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=eN(r),{width:l,height:c,position:u}=Eh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)rN({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(Rh(n)||n instanceof Or)Rh(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),Jv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof mn){let p=r,d=a!==0?l/a:1,f=s!==0?c/s:1;n.path=Xv(p.path,d,f),n.data={...n.data,path:n.path}}}function rN({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=Eh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:en.isResizeable(l)?l.width:0,objectInitialHeight:en.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),en.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function Rh(n){return n instanceof Fo||n instanceof Br||n instanceof ei||n instanceof ti}var Xr=class extends _a(eS.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new kt(1,1,1,1);this.fog=null;this.backupFog=new Vs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Vs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new fn(Mn,{...mi.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Vs.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new Ri((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.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,t){this.uiCanvas=new Ls(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),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,t){e.color!==void 0&&(this.ambientLight.color=or(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(t=>{t instanceof Cr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Ov(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=or(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=or(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Fe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Fe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Fe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Fe(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,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(or(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof _s&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Bs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize??.5,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Qn(a)||Zl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),ic(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Tr=require("three");var Gd=class extends Ms(Tr.PointLight,Ds){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Tr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Tr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Tr.Box3(a,s),c=new Tr.Box3Helper(l,new Tr.Color(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Tr.Box3Helper){let t=this.shadow.camera,o=new Tr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Tr.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Fd=class extends St{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var zs=class extends St{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Ha;break;case"Ellipse":i=ja;break;case"Polygon":i=Uu;break;case"Star":i=Hu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Al(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var jd=class extends Yn{constructor(e,t,o){super(e,t,o);this.data=t}};var Gs=require("three");var yn=class extends qr(Gs.Group,$r){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=Ca.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Ao.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=vo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Rt.defaultData,...e,...Jr(Rt.defaultData,Ao.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of 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]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(je.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),kd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};rS(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(je.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof St&&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 Gs.Matrix4().fromArray(m)),h=new Gs.Skeleton(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function kd(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)je.is(e)&&kd(e)}}function tS(n,r,e,t){return n.component===r&&bp(n.identity,t)?n.overrideData===e?2:1:0}function rS(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof yn&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(je.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=wa.resolve(e,p,1);if(d!=null&&!(d instanceof lt)){if(!1)debugger;Object.setPrototypeOf(d,lt.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=t.children[c];if(f=je.is(m)?m:null,f!==null){let y=tS(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(p)??null,f!==null)){let y=tS(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),t.children.splice(c,0,f),f.parent===t?(b<=c&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?vo.apply(u.data,d):u.data;eo.is(m.type)&&(m={...m,type:"Empty"}),f=no.createEntity(p,m,n),f.overrideData=d,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(c,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,rS(n,r,e,f,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(je.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}var oS=require("three");var Ud=class extends qr(oS.Bone,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Li=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ls(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,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,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=an(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.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,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Fe(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};var Re=require("three"),IS=require("three/examples/jsm/misc/GPUComputationRenderer.js");var Ht=require("three"),nS=require("three/examples/jsm/math/MeshSurfaceSampler.js");function iS(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function aS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function sS(n,r){let e=new Ht.Mesh(n.geometry,n.material),t=[],o=[],i=new Ht.Vector3,a=new Ht.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new nS.MeshSurfaceSampler(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function Lh(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new Ht.DataTexture(t,r,r,Ht.RGBAFormat,Ht.FloatType);return o.needsUpdate=!0,o}function lS({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}function cS(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}var uS=`
2966
+ }`,YE=new Dt.OrthographicCamera(-1,1,1,-1,0,1),Dh=class extends Dt.BufferGeometry{constructor(){super(),this.setAttribute("position",new Dt.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt.Float32BufferAttribute([0,2,0,0,2,0],2))}},XE=new Dh,_h=class{constructor(r){this._mesh=new Dt.Mesh(XE,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,YE)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},Qv=new Dt.ShaderMaterial({defines:{},uniforms:{tDiffuse:new Dt.Uniform(null)},vertexShader:qE,fragmentShader:$E}),KE=new _h(Qv),Eh=null,Nh=null,QE=()=>(Eh===null&&(Eh=document.createElement("canvas")),Eh),ZE=n=>(Nh===null&&(Nh=new tc(n)),Nh),JE=Be.identity(),Ls=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;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 r=this.width,e=this.height,t=this.dpr;this.renderer.dpr=this.isScreenSpace?t:Math.floor(2048/Math.max(r,e)),this.renderer.setSize(r,e)};this.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new Ri(Dt.MathUtils.generateUUID(),Tu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=QE(),this.renderer=ZE(this.canvas),this.promise=this.init(),this.renderTarget=new Dt.WebGLRenderTarget(1,1,{type:Dt.HalfFloatType,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 Dt.CanvasTexture(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof tc&&(this.renderer.wasmURL=Tb.skiaWasmUrl),await this.renderer.init()}render(r){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),Qv.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=r.getRenderTarget();r.setRenderTarget(this.renderTarget),r.clear(),KE.render(r),r.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=JE,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},Zv({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(r,e=window.devicePixelRatio){let t=Math.max(1,r?.width??this.width),o=Math.max(1,r?.height??this.height);this.dpr=e,this.width=t,this.height=o,this._innerApplySize();let i=1,a=512,s=512;(t*e<a||o*e<s)&&(i=Math.max(a/(t*e),s/(o*e))),this.renderTarget.setSize(t*e*i,o*e*i),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof Br)))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(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function Zv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof Br&&r instanceof Br||n instanceof Or&&r instanceof Or)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&tN({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function eN(n){if(Bh(n))return[n.width,n.height];if(n instanceof mn){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Or){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function tN({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=eN(r),{width:l,height:c,position:u}=Mh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)rN({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(Bh(n)||n instanceof Or)Bh(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),Zv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof mn){let p=r,d=a!==0?l/a:1,f=s!==0?c/s:1;n.path=Yv(p.path,d,f),n.data={...n.data,path:n.path}}}function rN({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=Mh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:en.isResizeable(l)?l.width:0,objectInitialHeight:en.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),en.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function Bh(n){return n instanceof Fo||n instanceof Br||n instanceof ei||n instanceof ti}var Xr=class extends _a(Jv.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new kt(1,1,1,1);this.fog=null;this.backupFog=new Vs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Vs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new fn(Mn,{...mi.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Vs.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new Ri((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.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,t){this.uiCanvas=new Ls(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),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,t){e.color!==void 0&&(this.ambientLight.color=or(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(t=>{t instanceof Cr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Cv(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=or(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=or(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Fe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Fe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Fe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Fe(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,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(or(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof _s&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Bs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize??.5,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Qn(a)||Ql(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),nc(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Tr=require("three");var zd=class extends Ms(Tr.PointLight,Ds){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Tr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Tr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Tr.Box3(a,s),c=new Tr.Box3Helper(l,new Tr.Color(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Tr.Box3Helper){let t=this.shadow.camera,o=new Tr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Tr.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Gd=class extends St{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var zs=class extends St{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Ha;break;case"Ellipse":i=ja;break;case"Polygon":i=ku;break;case"Star":i=Uu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Al(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Fd=class extends Yn{constructor(e,t,o){super(e,t,o);this.data=t}};var Gs=require("three");var yn=class extends qr(Gs.Group,$r){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=Ca.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Ao.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=vo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Rt.defaultData,...e,...Jr(Rt.defaultData,Ao.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of 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]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(je.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),jd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};tS(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(je.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof St&&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 Gs.Matrix4().fromArray(m)),h=new Gs.Skeleton(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function jd(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)je.is(e)&&jd(e)}}function eS(n,r,e,t){return n.component===r&&xp(n.identity,t)?n.overrideData===e?2:1:0}function tS(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof yn&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(je.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=wa.resolve(e,p,1);if(d!=null&&!(d instanceof lt)){if(!1)debugger;Object.setPrototypeOf(d,lt.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=t.children[c];if(f=je.is(m)?m:null,f!==null){let y=eS(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(p)??null,f!==null)){let y=eS(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),t.children.splice(c,0,f),f.parent===t?(b<=c&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?vo.apply(u.data,d):u.data;eo.is(m.type)&&(m={...m,type:"Empty"}),f=no.createEntity(p,m,n),f.overrideData=d,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(c,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,tS(n,r,e,f,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(je.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}var rS=require("three");var kd=class extends qr(rS.Bone,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Li=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ls(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,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,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=an(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.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,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Fe(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};var Re=require("three"),TS=require("three/examples/jsm/misc/GPUComputationRenderer.js");var Ht=require("three"),oS=require("three/examples/jsm/math/MeshSurfaceSampler.js");function nS(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function iS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function aS(n,r){let e=new Ht.Mesh(n.geometry,n.material),t=[],o=[],i=new Ht.Vector3,a=new Ht.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new oS.MeshSurfaceSampler(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function Rh(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new Ht.DataTexture(t,r,r,Ht.RGBAFormat,Ht.FloatType);return o.needsUpdate=!0,o}function sS({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}function lS(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}var cS=`
2934
2967
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2935
2968
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2936
2969
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -2999,7 +3032,7 @@ void main() {
2999
3032
  gl_FragColor = mix(vec4(0.0), activeColor, isActive);
3000
3033
 
3001
3034
  }
3002
- `;var dS=`
3035
+ `;var uS=`
3003
3036
 
3004
3037
  vec3 mod289(vec3 x) {
3005
3038
  return x - floor(x * (1.0 / 289.0)) * 289.0;
@@ -3201,7 +3234,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3201
3234
  );
3202
3235
  }
3203
3236
 
3204
- `;var pS=`
3237
+ `;var dS=`
3205
3238
  #ifdef USE_COLLIDER
3206
3239
  float restitution = max(uBounce * 2., .01); // Energy Loss
3207
3240
  // SPHERE COLLIDER
@@ -3269,7 +3302,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3269
3302
  #endif
3270
3303
  #endif
3271
3304
  // END COLLIDER
3272
- `;var fS=`
3305
+ `;var pS=`
3273
3306
  #ifdef USE_ATTRACTOR
3274
3307
 
3275
3308
  #ifdef USE_SPHERE_COLLIDER
@@ -3343,7 +3376,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3343
3376
  velocity *= uForceDamping;
3344
3377
  #endif
3345
3378
  #endif
3346
- `;var hS=`
3379
+ `;var fS=`
3347
3380
  #ifdef USE_VORTEX
3348
3381
  // Box dimensions
3349
3382
  vec3 boxHalfSize = uColliderSize / 2.0;
@@ -3382,7 +3415,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3382
3415
  velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
3383
3416
  }
3384
3417
  #endif
3385
- `;var mS=`
3418
+ `;var hS=`
3386
3419
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3387
3420
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3388
3421
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3408,7 +3441,7 @@ uniform float uForceDamping;
3408
3441
  uniform float uForceIntensity;
3409
3442
 
3410
3443
 
3411
- `+dS+`
3444
+ `+uS+`
3412
3445
  float rand(vec2 co){
3413
3446
  return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
3414
3447
  }
@@ -3484,11 +3517,11 @@ void main() {
3484
3517
  #endif
3485
3518
 
3486
3519
  // COLLIDER
3487
- ${pS}
3520
+ ${dS}
3488
3521
  // ATTRACTION
3489
- ${fS}
3522
+ ${pS}
3490
3523
  // VORTEX
3491
- ${hS}
3524
+ ${fS}
3492
3525
  }
3493
3526
  // End isActive
3494
3527
 
@@ -3506,7 +3539,7 @@ void main() {
3506
3539
 
3507
3540
  gl_FragColor = vec4(velocity, collisionFlag);
3508
3541
  }
3509
- `;var wS=require("three");var Vh=`
3542
+ `;var SS=require("three");var Lh=`
3510
3543
 
3511
3544
  // Linear Fade In
3512
3545
  float linearFadeIn(float t) {
@@ -3539,7 +3572,7 @@ void main() {
3539
3572
  float constant(float t) {
3540
3573
  return 1.0;
3541
3574
  }
3542
- `;var yS=`
3575
+ `;var mS=`
3543
3576
 
3544
3577
  float rand(vec3 co){
3545
3578
  return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
@@ -3554,7 +3587,7 @@ vec3 applyForce(vec3 force, float mass) {
3554
3587
 
3555
3588
  return acceleration;
3556
3589
  }
3557
- `;var gS=`
3590
+ `;var yS=`
3558
3591
  vec3 rgb2xyz (in vec3 rgb) {
3559
3592
  float r = rgb.r;
3560
3593
  float g = rgb.g;
@@ -3645,7 +3678,7 @@ vec3 lab2rgb (in vec3 lab) {
3645
3678
  return(rgb);
3646
3679
  }
3647
3680
 
3648
- `;var xS=`
3681
+ `;var gS=`
3649
3682
  uniform sampler2D uPosition;
3650
3683
  uniform float uSize;
3651
3684
  uniform float uSizeEnd;
@@ -3666,9 +3699,9 @@ vec3 lab2rgb (in vec3 lab) {
3666
3699
  varying vec2 vUv;
3667
3700
  varying vec2 vRef;
3668
3701
 
3669
- ${yS}
3670
- ${Vh}
3671
- `,bS=({easeSize:n="linearFadeOut"})=>`
3702
+ ${mS}
3703
+ ${Lh}
3704
+ `,xS=({easeSize:n="linearFadeOut"})=>`
3672
3705
  vUv = uv;
3673
3706
  vRef = ref;
3674
3707
  // Normalized LifeTime 1 to 0
@@ -3720,7 +3753,7 @@ vec3 lab2rgb (in vec3 lab) {
3720
3753
  mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
3721
3754
  mvPosition.xy += rotatedPosition;
3722
3755
  gl_Position = projectionMatrix * mvPosition;
3723
- `,vS=`
3756
+ `,bS=`
3724
3757
  uniform vec4 uColor; // start color
3725
3758
  uniform vec4 uColor2; // end color
3726
3759
  uniform sampler2D uTexture; // texture
@@ -3731,10 +3764,10 @@ vec3 lab2rgb (in vec3 lab) {
3731
3764
  float random(vec2 co) {
3732
3765
  return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
3733
3766
  }
3734
- `+Vh+`
3735
- ${gS}
3767
+ `+Lh+`
3768
+ ${yS}
3736
3769
 
3737
- `,SS=({easeOpacity:n="linearFadeOut"})=>`
3770
+ `,vS=({easeOpacity:n="linearFadeOut"})=>`
3738
3771
  // if Particle is dead, hide it
3739
3772
  if (v_LifeLeft <= 0.005 ) {
3740
3773
  discard;
@@ -3755,7 +3788,7 @@ vec3 lab2rgb (in vec3 lab) {
3755
3788
 
3756
3789
  gl_FragColor = vec4(finalColor, finalAlpha);
3757
3790
 
3758
- `;var Hd=class extends wS.ShaderMaterial{constructor(e,t){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,t),this.context=t}reset(){}init(e,t){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],tt.startContext(tt.globalContext),this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},t.shared),tt.endContext(tt.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 ts;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(bb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(vb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(xS),e.addFragmentParsCode(vS),e.addVertexFinalCode(bS({easeSize:this.easeSize})),e.addFragmentFinalCode(SS({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()}};var Kr=require("three");var PS=require("three"),CS=require("three"),OS=require("three"),Fs=class{constructor(r,e,t,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=r,this.type=t,this.textureSize=aS(e);let i=1;this.targetMesh=o?.type==="Mesh"&&o?o:this.getMesh(t,i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(t,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(r,e){let{positions:t,normals:o}=sS(e,r*r),i=Lh(t,r),a=Lh(o,r);return{dataTexture:i,positions:t,dataTextureNormals:a}}getMesh(r,e){let t=null;switch(r){case"SphereEmitterShape":{t=new Kr.SphereGeometry(e*.5,32,32);break}case"TorusEmitterShape":{t=new CS.TorusGeometry(e*.5,.3,15,40);break}case"ConeEmitterShape":{t=new Kr.ConeGeometry(e,e,15);break}case"BoxEmitterShape":{t=new Kr.BoxGeometry(e,e,e);break}case"PlaneEmitterShape":{t=new OS.PlaneGeometry(e,e),t.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{t=new Kr.SphereGeometry(e,32,32);break}default:{t=new Kr.SphereGeometry(e,32,32);break}}return new PS.Mesh(t,new Kr.MeshBasicMaterial({color:16711680}))}applyToShader(r,e){this.size=new Kr.Vector3().fromArray(e.size),r.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function ri(n){let r={...n},e=ga.defaultData;r.forceFieldObjectId&&(r.colliderEntityId=r.forceFieldObjectId);let t={...e.shape,...r.shape},o={...e.renderMaterial,...r.renderMaterial};return{...e,...r,shape:t,renderMaterial:o}}var AS=`
3791
+ `;var Ud=class extends SS.ShaderMaterial{constructor(e,t){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,t),this.context=t}reset(){}init(e,t){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],tt.startContext(tt.globalContext),this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},t.shared),tt.endContext(tt.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 ts;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(xb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(bb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(gS),e.addFragmentParsCode(bS),e.addVertexFinalCode(xS({easeSize:this.easeSize})),e.addFragmentFinalCode(vS({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()}};var Kr=require("three");var wS=require("three"),PS=require("three"),CS=require("three"),Fs=class{constructor(r,e,t,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=r,this.type=t,this.textureSize=iS(e);let i=1;this.targetMesh=o?.type==="Mesh"&&o?o:this.getMesh(t,i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(t,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(r,e){let{positions:t,normals:o}=aS(e,r*r),i=Rh(t,r),a=Rh(o,r);return{dataTexture:i,positions:t,dataTextureNormals:a}}getMesh(r,e){let t=null;switch(r){case"SphereEmitterShape":{t=new Kr.SphereGeometry(e*.5,32,32);break}case"TorusEmitterShape":{t=new PS.TorusGeometry(e*.5,.3,15,40);break}case"ConeEmitterShape":{t=new Kr.ConeGeometry(e,e,15);break}case"BoxEmitterShape":{t=new Kr.BoxGeometry(e,e,e);break}case"PlaneEmitterShape":{t=new CS.PlaneGeometry(e,e),t.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{t=new Kr.SphereGeometry(e,32,32);break}default:{t=new Kr.SphereGeometry(e,32,32);break}}return new wS.Mesh(t,new Kr.MeshBasicMaterial({color:16711680}))}applyToShader(r,e){this.size=new Kr.Vector3().fromArray(e.size),r.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function ri(n){let r={...n},e=ga.defaultData;r.forceFieldObjectId&&(r.colliderEntityId=r.forceFieldObjectId);let t={...e.shape,...r.shape},o={...e.renderMaterial,...r.renderMaterial};return{...e,...r,shape:t,renderMaterial:o}}var OS=`
3759
3792
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3760
3793
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3761
3794
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3802,8 +3835,8 @@ void main() {
3802
3835
 
3803
3836
 
3804
3837
  }
3805
- `;var zh=10,Wd=class extends Re.Object3D{constructor(e,t){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 Re.TextureLoader;this.currentWorldPosition=new Re.Vector3;this.systemQuaternion=new Re.Quaternion;this.worldGravity=new Re.Vector3(0,0,0);this.directionAxis=new Re.Vector3(0,0,0);this.colliderV3=new Re.Vector3(0,0,0);this.colliderQuaternion=new Re.Quaternion(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=t,this.shared=t.context.shared;let o=t.data;this.material=new Hd(o.renderMaterial,t.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Re.Vector3(0,0,0)},uEmissionData:{value:new Re.Vector3(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(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,t){let o=t.data;if(typeof t=="string"){let i=this.shared.image(t),a=new Re.Texture(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Re.Texture(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,t){let o=iS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new Re.InstancedBufferAttribute(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,t){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/t,i=this.targetFPS/o,a=this.previousRatio+(i-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],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(ri({...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,t){if(!this.velocitySimRT||!this.positionSimRT)return;t[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),t[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};t[2]==="shape_size_0"&&o(0,e),t[2]==="shape_size_1"&&o(1,e),t[2]==="shape_size_2"&&o(2,e),t[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/zh),t[2]==="gravity"&&this.worldGravity.set(0,e/100,0),t[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),t[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),t[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),t[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),t[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(ri(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 t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}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 t=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],i={...ri(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}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 t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),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 t=[Number(e[0])*Re.MathUtils.DEG2RAD,Number(e[1])*Re.MathUtils.DEG2RAD,Number(e[2])*Re.MathUtils.DEG2RAD],o=new Re.Euler(t[0],t[1],t[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:t,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:p}=e;return t!==void 0||o!==void 0||(i||i===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 t=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(t)},100);if(!this.emitterShape)return;let o=new IS.GPUComputationRenderer(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+uS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+mS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",AS,cS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=lS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Re.Vector3(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 Re.Vector4(0,0,0,1)},uColliderPos:{value:new Re.Vector3(0,0,0)},uColliderSize:{value:new Re.Vector3(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Re.Vector4(0,0,0,1)},uColliderQuaternionInvert:{value:new Re.Vector4(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={...ri(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 t=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[t,o,i]}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 i=o?.colliderType;i==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),i==="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 t="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${o}
3806
- `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Re.Vector3(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 i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new Fs(o,t,e.type,i):new Fs(o,t,"SphereEmitterShape")}else return new Fs(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Re.InstancedMesh(new Re.PlaneGeometry(1,1,1),this.material,o),this.updateGeometryAttributes(t,e),this.material.needsUpdate=!0,t.onBeforeRender=()=>{this.applyWorldSpace()},t}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:o=0}){return Math.ceil(e*(t+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let o=e-this.lastEmitTime,i=1/t;if(o>=i){let a=Math.max(1,Math.floor(o/i));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(ri(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var js=require("three");var qd=class extends Ft{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new js.BufferGeometry;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={...t,...ri(t)},this.geometry.setAttribute("position",new js.Float32BufferAttribute([],3)),this.material=new js.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Wd(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 t=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||t)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),t||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(o=>o.identity===e);return t?t.data:null}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Fe(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...gt.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}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 oN(){try{let n=window.location.href;if(n.includes("reducesubdiv=")){let r=n.indexOf("reducesubdiv=")+13;return parseInt(n.slice(r,r+1))}}catch{}}var Gh=oN();function nN(n,r,e){Gh!==void 0&&(r?.geometry?.subdivisions??0)>Gh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=Gh);let t;return r.geometry.type==="TextGeometry"?new Yn(n,r,e):r.geometry.type==="InputGeometry"?new jd(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Di(n,r,e):r.geometry.type==="PathGeometry"?t=new zs(n,r,e):r.geometry.type==="VectorGeometry"?t=new Fd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Cr(n,r,e):r.geometry.type==="UIGeometry"?t=new Li(n,r,e):t=new St(n,r,e),t)}function $d(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?nN(n,r,e):r.type==="Empty"?new Zn(n,r):r.type==="Particle"?new qd(n,r,e):r.type==="ParticleCollider"?new Md(n,r,e):r.type==="Splat"?new Zn(n,r):r.type==="Bone"?new Ud(n,r):r.type==="Page"?new Xr(n,r,e):r.type==="PointLight"?new Gd(n,r,e):r.type==="SpotLight"?new Bs(n,r,e):r.type==="DirectionalLight"?new _s(n,r,e):r.type==="Component"||r.type==="Instance"?new yn(n,r,e):eo.is(r.type)?new fn(n,r):(console.error(r),new Zn(n,r))}no.createEntity=$d;function iN(n,r,e){let t=$d(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,p=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),p&&n.changeSelectedState(p,e),n.resetBBoxNeedsUpdate()}no.changeEntityProptotype=iN;no.Cloner=As;function MS(n,r,e,t){n.updateByOp(r,e,t,!1)}var ks=require("three");function ES(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Ps(n),ws(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Pr&&n.needsAO&&n.layers.enable(5),e}function NS(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function DS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ES(e,e.material[t])&&(r=!0);else ES(e,e.material)&&(r=!0)}),r}function _S(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)NS(e,e.material[t])&&(r=!0);else NS(e,e.material)&&(r=!0)}),r}var lN=new ks.Raycaster,cN=new ks.Matrix4,uN=new ks.Ray;function ic(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=cN.copy(i.matrixWorld).invert(),s=uN.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=lN;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far;let u=c.intersectObject(n,!1);u.length>0&&e.push({...u[0],object:t?i:n})}}var Yd=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);){if(a=this._constraints.get(a),i.includes(a)){console.warn(`circular dependency detected: ${i.join(" -> ")}`);break}e.has(a)||i.push(a)}for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=r.find(i[s]);l?l.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var BS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var jo=class{};go(jo,"DepthMapRange",1<<16),go(jo,"MemoryPageSize",65536),go(jo,"BytesPerFloat",4),go(jo,"BytesPerInt",4);function dN(n){let r,e,t,o,i,a,s,l,c,u,p,d,f,h,m,y;function b(M){let N=new Float64Array(u,a,16);for(let B=0;B<16;B++)N[B]=M[B];let _;if(t>1){r.exports.sortIndexes(o,i,c,a,s,l,d.DepthMapRange,t);let B=new Uint32Array(t);_=B.buffer,B.set(new Uint32Array(u,l,t))}else if(t===1){let B=new Uint32Array(t);B[0]=new Uint32Array(u,o,e)[0],_=B.buffer}else _=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:_},[_])}function S(M,N,_){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let k=0;k<_.length-1;k++){let L=N[k],W=M[k].elements,F=L.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?A(H):D(H)),j=L.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?A(H):D(H));for(let H=_[k];H<_[k+1];H++){let q=f[H*3],re=f[H*3+1],ee=f[H*3+2];if((F.length===0||O(q,re,ee,F))&&(j.length===0||!O(q,re,ee,j))){let X=1/(W[3]*q+W[7]*re+W[11]*ee+W[15]);B[t*3]=(W[0]*q+W[4]*re+W[8]*ee+W[12])*X,B[t*3+1]=(W[1]*q+W[5]*re+W[9]*ee+W[13])*X,B[t*3+2]=(W[2]*q+W[6]*re+W[10]*ee+W[14])*X,V[t]=H,t++}}}}function P(M,N){let _=[],B=N.filter(L=>L.enabled&&L.mode==="Include").map(L=>L.type==="Box"?A(L):D(L)),V=N.filter(L=>L.enabled&&L.mode==="Exclude").map(L=>L.type==="Box"?A(L):D(L)),k=M.length;for(let L=0;L<k;L+=3){let W=M[L],F=M[L+1],j=M[L+2];(B.length===0||O(W,F,j,B))&&(V.length===0||!O(W,F,j,V))||_.push(L/3)}return _}function O(M,N,_,B,V){return B[V==="Intersect"?"every":"some"](k=>{let L=v(M,N,_,k.invRotationMatrix,k.cropCenter);return Array.isArray(k)?g(L.x,L.y,L.z,k):E(L.x,L.y,L.z,k)})}function v(M,N,_,B,V){let k=M-V[0],L=N-V[1],W=_-V[2],F=1/(B[3]*k+B[7]*L+B[11]*W+B[15]);return{x:(B[0]*k+B[4]*L+B[8]*W+B[12])*F+V[0],y:(B[1]*k+B[5]*L+B[9]*W+B[13])*F+V[1],z:(B[2]*k+B[6]*L+B[10]*W+B[14])*F+V[2]}}function A(M){let N=M.cropSize[0]/2,_=M.cropSize[1]/2,B=M.cropSize[2]/2,V=[M.cropCenter[0]-N,M.cropCenter[1]-_,M.cropCenter[2]-B,M.cropCenter[0]+N,M.cropCenter[1]+_,M.cropCenter[2]+B],k=T(M.cropRotation);return Object.assign(V,{invRotationMatrix:k,cropCenter:M.cropCenter})}function T(M){let N=[],_=M[0]*Math.PI/180,B=M[1]*Math.PI/180,V=M[2]*Math.PI/180,k=Math.cos(_),L=Math.sin(_),W=Math.cos(B),F=Math.sin(B),j=Math.cos(V),H=Math.sin(V),q=k*j,re=k*H,ee=L*j,X=L*H;return N[0]=W*j,N[1]=-W*H,N[2]=F,N[4]=re+ee*F,N[5]=q-X*F,N[6]=-L*W,N[8]=X-q*F,N[9]=ee+re*F,N[10]=k*W,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(M,N,_,B){return M>=B[0]&&M<=B[3]&&N>=B[1]&&N<=B[4]&&_>=B[2]&&_<=B[5]}function D(M){let N=2/M.cropSize[0],_=2/M.cropSize[1],B=2/M.cropSize[2],V=T(M.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:B,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,N,_,B){let V=(M-B.cropCenter[0])*B.invRadiusX,k=(N-B.cropCenter[1])*B.invRadiusY,L=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+k*k+L*L<=1}n.onmessage=M=>{if(M.data.getCroppedIndexes){let N=new Uint32Array(P(new Float32Array(M.data.positions),M.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:N},[N])}else if(M.data.positions)p=M.data.positions,f=new Float32Array(p),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,h=M.data.meshIndexIntervals,S(m,y,h),n.postMessage({sortSetupComplete:!0});else if(M.data.sort||M.data.newMatrixWorlds||M.data.newCropsArray)(M.data.newMatrixWorlds||M.data.newCropsArray)&&(y=M.data.newCropsArray||y,m=M.data.newMatrixWorlds||m,S(m,y,h)),b(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){d=M.data.init.Constants,e=M.data.init.splatCount;let N=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(M.data.init.sorterWasmBytes),V=N+_,k=e*V,L=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,F=k+L+W,j=Math.floor(F/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:j*2,maximum:j*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*N,a=i+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function RS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",dN.toString(),")(self)"],{type:"application/javascript"}))),e=atob(BS),t=new Uint8Array(e.length);for(let o=0;o<e.length;o++)t[o]=e.charCodeAt(o);return r.postMessage({init:{sorterWasmBytes:t.buffer,splatCount:n,Constants:{BytesPerFloat:jo.BytesPerFloat,BytesPerInt:jo.BytesPerInt,DepthMapRange:jo.DepthMapRange,MemoryPageSize:jo.MemoryPageSize}}}),r}var mr=require("three");var Ce=require("three");var Xd=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),LS=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Kd=new Ce.Vector2;function Qd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var oi=class extends Ce.Mesh{constructor(e,t,o,i,a=!1,s=1,l,c){super(o,i);this.splatCount=t,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,t,o=!1,i=1,a,s){let l=oi.buildGeomtery(t),c=oi.buildMaterial(a);return new oi(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3838
+ `;var Vh=10,Hd=class extends Re.Object3D{constructor(e,t){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 Re.TextureLoader;this.currentWorldPosition=new Re.Vector3;this.systemQuaternion=new Re.Quaternion;this.worldGravity=new Re.Vector3(0,0,0);this.directionAxis=new Re.Vector3(0,0,0);this.colliderV3=new Re.Vector3(0,0,0);this.colliderQuaternion=new Re.Quaternion(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=t,this.shared=t.context.shared;let o=t.data;this.material=new Ud(o.renderMaterial,t.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Re.Vector3(0,0,0)},uEmissionData:{value:new Re.Vector3(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(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,t){let o=t.data;if(typeof t=="string"){let i=this.shared.image(t),a=new Re.Texture(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Re.Texture(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,t){let o=nS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new Re.InstancedBufferAttribute(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,t){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/t,i=this.targetFPS/o,a=this.previousRatio+(i-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],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(ri({...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,t){if(!this.velocitySimRT||!this.positionSimRT)return;t[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),t[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};t[2]==="shape_size_0"&&o(0,e),t[2]==="shape_size_1"&&o(1,e),t[2]==="shape_size_2"&&o(2,e),t[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/Vh),t[2]==="gravity"&&this.worldGravity.set(0,e/100,0),t[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),t[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),t[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),t[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),t[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(ri(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"]))/Vh),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 t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}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 t=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],i={...ri(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}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 t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),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 t=[Number(e[0])*Re.MathUtils.DEG2RAD,Number(e[1])*Re.MathUtils.DEG2RAD,Number(e[2])*Re.MathUtils.DEG2RAD],o=new Re.Euler(t[0],t[1],t[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:t,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:p}=e;return t!==void 0||o!==void 0||(i||i===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 t=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(t)},100);if(!this.emitterShape)return;let o=new TS.GPUComputationRenderer(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+cS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+hS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",OS,lS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=sS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Re.Vector3(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 Re.Vector4(0,0,0,1)},uColliderPos:{value:new Re.Vector3(0,0,0)},uColliderSize:{value:new Re.Vector3(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Re.Vector4(0,0,0,1)},uColliderQuaternionInvert:{value:new Re.Vector4(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"]))/Vh}};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={...ri(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 t=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[t,o,i]}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 i=o?.colliderType;i==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),i==="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 t="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${o}
3839
+ `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Re.Vector3(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 i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new Fs(o,t,e.type,i):new Fs(o,t,"SphereEmitterShape")}else return new Fs(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Re.InstancedMesh(new Re.PlaneGeometry(1,1,1),this.material,o),this.updateGeometryAttributes(t,e),this.material.needsUpdate=!0,t.onBeforeRender=()=>{this.applyWorldSpace()},t}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:o=0}){return Math.ceil(e*(t+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let o=e-this.lastEmitTime,i=1/t;if(o>=i){let a=Math.max(1,Math.floor(o/i));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(ri(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var js=require("three");var Wd=class extends Ft{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new js.BufferGeometry;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={...t,...ri(t)},this.geometry.setAttribute("position",new js.Float32BufferAttribute([],3)),this.material=new js.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Hd(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 t=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||t)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),t||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(o=>o.identity===e);return t?t.data:null}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Fe(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...gt.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}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 oN(){try{let n=window.location.href;if(n.includes("reducesubdiv=")){let r=n.indexOf("reducesubdiv=")+13;return parseInt(n.slice(r,r+1))}}catch{}}var zh=oN();function nN(n,r,e){zh!==void 0&&(r?.geometry?.subdivisions??0)>zh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=zh);let t;return r.geometry.type==="TextGeometry"?new Yn(n,r,e):r.geometry.type==="InputGeometry"?new Fd(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Di(n,r,e):r.geometry.type==="PathGeometry"?t=new zs(n,r,e):r.geometry.type==="VectorGeometry"?t=new Gd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Cr(n,r,e):r.geometry.type==="UIGeometry"?t=new Li(n,r,e):t=new St(n,r,e),t)}function qd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?nN(n,r,e):r.type==="Empty"?new Zn(n,r):r.type==="Particle"?new Wd(n,r,e):r.type==="ParticleCollider"?new Id(n,r,e):r.type==="Splat"?new Zn(n,r):r.type==="Bone"?new kd(n,r):r.type==="Page"?new Xr(n,r,e):r.type==="PointLight"?new zd(n,r,e):r.type==="SpotLight"?new Bs(n,r,e):r.type==="DirectionalLight"?new _s(n,r,e):r.type==="Component"||r.type==="Instance"?new yn(n,r,e):eo.is(r.type)?new fn(n,r):(console.error(r),new Zn(n,r))}no.createEntity=qd;function iN(n,r,e){let t=qd(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,p=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),p&&n.changeSelectedState(p,e),n.resetBBoxNeedsUpdate()}no.changeEntityProptotype=iN;no.Cloner=As;function IS(n,r,e,t){n.updateByOp(r,e,t,!1)}var ks=require("three");function MS(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Ps(n),ws(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Pr&&n.needsAO&&n.layers.enable(5),e}function ES(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function NS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)MS(e,e.material[t])&&(r=!0);else MS(e,e.material)&&(r=!0)}),r}function DS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ES(e,e.material[t])&&(r=!0);else ES(e,e.material)&&(r=!0)}),r}var lN=new ks.Raycaster,cN=new ks.Matrix4,uN=new ks.Ray;function nc(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=cN.copy(i.matrixWorld).invert(),s=uN.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=lN;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far;let u=c.intersectObject(n,!1);u.length>0&&e.push({...u[0],object:t?i:n})}}var $d=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);){if(a=this._constraints.get(a),i.includes(a)){console.warn(`circular dependency detected: ${i.join(" -> ")}`);break}e.has(a)||i.push(a)}for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=r.find(i[s]);l?l.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var _S="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var jo=class{};go(jo,"DepthMapRange",1<<16),go(jo,"MemoryPageSize",65536),go(jo,"BytesPerFloat",4),go(jo,"BytesPerInt",4);function dN(n){let r,e,t,o,i,a,s,l,c,u,p,d,f,h,m,y;function b(M){let N=new Float64Array(u,a,16);for(let B=0;B<16;B++)N[B]=M[B];let _;if(t>1){r.exports.sortIndexes(o,i,c,a,s,l,d.DepthMapRange,t);let B=new Uint32Array(t);_=B.buffer,B.set(new Uint32Array(u,l,t))}else if(t===1){let B=new Uint32Array(t);B[0]=new Uint32Array(u,o,e)[0],_=B.buffer}else _=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:_},[_])}function S(M,N,_){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let k=0;k<_.length-1;k++){let L=N[k],W=M[k].elements,F=L.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?A(H):D(H)),j=L.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?A(H):D(H));for(let H=_[k];H<_[k+1];H++){let q=f[H*3],re=f[H*3+1],ee=f[H*3+2];if((F.length===0||C(q,re,ee,F))&&(j.length===0||!C(q,re,ee,j))){let X=1/(W[3]*q+W[7]*re+W[11]*ee+W[15]);B[t*3]=(W[0]*q+W[4]*re+W[8]*ee+W[12])*X,B[t*3+1]=(W[1]*q+W[5]*re+W[9]*ee+W[13])*X,B[t*3+2]=(W[2]*q+W[6]*re+W[10]*ee+W[14])*X,V[t]=H,t++}}}}function P(M,N){let _=[],B=N.filter(L=>L.enabled&&L.mode==="Include").map(L=>L.type==="Box"?A(L):D(L)),V=N.filter(L=>L.enabled&&L.mode==="Exclude").map(L=>L.type==="Box"?A(L):D(L)),k=M.length;for(let L=0;L<k;L+=3){let W=M[L],F=M[L+1],j=M[L+2];(B.length===0||C(W,F,j,B))&&(V.length===0||!C(W,F,j,V))||_.push(L/3)}return _}function C(M,N,_,B,V){return B[V==="Intersect"?"every":"some"](k=>{let L=v(M,N,_,k.invRotationMatrix,k.cropCenter);return Array.isArray(k)?g(L.x,L.y,L.z,k):E(L.x,L.y,L.z,k)})}function v(M,N,_,B,V){let k=M-V[0],L=N-V[1],W=_-V[2],F=1/(B[3]*k+B[7]*L+B[11]*W+B[15]);return{x:(B[0]*k+B[4]*L+B[8]*W+B[12])*F+V[0],y:(B[1]*k+B[5]*L+B[9]*W+B[13])*F+V[1],z:(B[2]*k+B[6]*L+B[10]*W+B[14])*F+V[2]}}function A(M){let N=M.cropSize[0]/2,_=M.cropSize[1]/2,B=M.cropSize[2]/2,V=[M.cropCenter[0]-N,M.cropCenter[1]-_,M.cropCenter[2]-B,M.cropCenter[0]+N,M.cropCenter[1]+_,M.cropCenter[2]+B],k=T(M.cropRotation);return Object.assign(V,{invRotationMatrix:k,cropCenter:M.cropCenter})}function T(M){let N=[],_=M[0]*Math.PI/180,B=M[1]*Math.PI/180,V=M[2]*Math.PI/180,k=Math.cos(_),L=Math.sin(_),W=Math.cos(B),F=Math.sin(B),j=Math.cos(V),H=Math.sin(V),q=k*j,re=k*H,ee=L*j,X=L*H;return N[0]=W*j,N[1]=-W*H,N[2]=F,N[4]=re+ee*F,N[5]=q-X*F,N[6]=-L*W,N[8]=X-q*F,N[9]=ee+re*F,N[10]=k*W,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(M,N,_,B){return M>=B[0]&&M<=B[3]&&N>=B[1]&&N<=B[4]&&_>=B[2]&&_<=B[5]}function D(M){let N=2/M.cropSize[0],_=2/M.cropSize[1],B=2/M.cropSize[2],V=T(M.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:B,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,N,_,B){let V=(M-B.cropCenter[0])*B.invRadiusX,k=(N-B.cropCenter[1])*B.invRadiusY,L=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+k*k+L*L<=1}n.onmessage=M=>{if(M.data.getCroppedIndexes){let N=new Uint32Array(P(new Float32Array(M.data.positions),M.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:N},[N])}else if(M.data.positions)p=M.data.positions,f=new Float32Array(p),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,h=M.data.meshIndexIntervals,S(m,y,h),n.postMessage({sortSetupComplete:!0});else if(M.data.sort||M.data.newMatrixWorlds||M.data.newCropsArray)(M.data.newMatrixWorlds||M.data.newCropsArray)&&(y=M.data.newCropsArray||y,m=M.data.newMatrixWorlds||m,S(m,y,h)),b(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){d=M.data.init.Constants,e=M.data.init.splatCount;let N=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(M.data.init.sorterWasmBytes),V=N+_,k=e*V,L=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,F=k+L+W,j=Math.floor(F/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:j*2,maximum:j*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*N,a=i+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function BS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",dN.toString(),")(self)"],{type:"application/javascript"}))),e=atob(_S),t=new Uint8Array(e.length);for(let o=0;o<e.length;o++)t[o]=e.charCodeAt(o);return r.postMessage({init:{sorterWasmBytes:t.buffer,splatCount:n,Constants:{BytesPerFloat:jo.BytesPerFloat,BytesPerInt:jo.BytesPerInt,DepthMapRange:jo.DepthMapRange,MemoryPageSize:jo.MemoryPageSize}}}),r}var mr=require("three");var Ce=require("three");var Yd=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),RS=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Xd=new Ce.Vector2;function Kd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var oi=class extends Ce.Mesh{constructor(e,t,o,i,a=!1,s=1,l,c){super(o,i);this.splatCount=t,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,t,o=!1,i=1,a,s){let l=oi.buildGeomtery(t),c=oi.buildMaterial(a);return new oi(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3807
3840
  precision highp float;
3808
3841
  #include <common>
3809
3842
 
@@ -3957,4 +3990,4 @@ void main() {
3957
3990
  A = exp(A) * vColor.a;
3958
3991
  gl_FragColor = vec4(color.rgb, A);
3959
3992
  gVelocity = vec4(0.0); // so it is ignored by TAA
3960
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Ce.Vector2},viewport:{type:"v2",value:new Ce.Vector2},basisViewport:{type:"v2",value:new Ce.Vector2},debugColor:{type:"v3",value:new Ce.Color},covariancesTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Ce.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Ce.NormalBlending,depthTest:!0,depthWrite:!1,side:Ce.DoubleSide})}static buildGeomtery(e){let t=new Ce.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Ce.BufferAttribute(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new Ce.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Ce.InstancedBufferAttribute(s,1,!1);return l.setUsage(Ce.DynamicDrawUsage),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Ce.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Ce.Vector2(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=Ce.DataUtils.toHalfFloat(this.covariances[h]);s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.FloatType);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);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]=LS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Xd(this.centers[y]),c[b+2]=Xd(this.centers[y+1]),c[b+3]=Xd(this.centers[y+2])}let u=new Ce.DataTexture(c,a.x,a.y,Ce.RGBAIntegerFormat,Ce.UnsignedIntType);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 Ce.DataTexture(d,p,1,Ce.RGBAFormat,Ce.FloatType);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(Kd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Kd),this.material.uniforms.basisViewport.value.set(2/Kd.x,2/Kd.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}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 zS,Fh=new Promise(n=>{zS=n}),VS=!1;var Zd;function jh(){if(VS)return;if(Zd)return Zd;async function n(){let e=await import("./gaussian-splat-compression.js");zS(e),VS=!0}return Zd=n(),Zd}var GS;Fh.then(n=>GS=n);var ac=class{constructor(r={}){go(this,"updateView",function(){let r=new mr.Matrix4,e=[],t=new mr.Vector3(0,0,-1),o=new mr.Vector3(0,0,-1),i=new mr.Vector3,a=new mr.Vector3;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(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 mr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new mr.Vector2;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new mr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new mr.Quaternion().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new GS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new mr.Vector3,o=new mr.Quaternion,i=!1,a=1,s,l){this.splatMesh=oi.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=RS(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var pN=new Qr.MeshBasicMaterial;pN.wireframe=!0;var FS=new Qr.Vector3,Jd=class extends Qr.Scene{constructor(e,t){super();this.data=e;this.sharedAssets=t;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Yd;this.invisibleObjects=new Zn("jflkdsafjasdifjaslk",{...gu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Xr("fdasfa",{...Xo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=_S(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=DS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Xr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>mc(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Mn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Li&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Xr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),Qn(i)&&Ql(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Ql(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Qn(o)&&(o.freeBooleanPointer(),i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof zs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Qn(o)&&(o.invalidateUpstreamBooleanData(),Ql(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Xr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{MS(a,t,o,{scene:this,shared:i}),a instanceof St&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof Li||l instanceof Xr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof fn&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){je.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{je.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Pn(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...hc(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=ct.zoom(d,t);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof yn&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Pn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Su.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof yn&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),kd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof yn&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)je.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(je.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(Qn(s)||Zl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),ic(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Qn(a)||Zl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),ic(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)je.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)je.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)je.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof St&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Ql(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ma.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)je.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=$d(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof St&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof St&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new Qr.Matrix4().fromArray(m)),h=new Qr.Skeleton(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new Qr.Box3;return o.setFromPoints(t),o.getCenter(FS),FS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ft)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof wr&&e(t.material[o]);else t.material instanceof wr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof fn&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new ac({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var jS=require("three/examples/jsm/loaders/DRACOLoader.js");var ni;function kS(){return ni||(ni=new jS.DRACOLoader,ni.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ni.decoderPending}async function fN(n){if(ni){let r={attributeIDs:ni.defaultAttributeIDs,attributeTypes:ni.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ni.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function US(n,r){let[e,t]=Op(nu.deserialize(new Uint8Array(n)));return Pu(e),r&&r(e),t.result().data}function HS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function WS(n){for(let r of n){let e=await fN(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}var hN=require("three"),mN=require("three/examples/jsm/utils/BufferGeometryUtils.js");function qS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var sc=require("three");function $S(n){let r=new Set;return n.traverse(e=>{if(e instanceof Pr)if(Ct(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(yN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new sc.Color,specularColor:new sc.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},sc.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=Tb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else gN(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function yN(n){return n.getLayersOfType("transmission").length>0}function gN(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function YS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function XS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var KS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function QS(n){let r=[];return n.traverse(e=>{e instanceof As&&r.push(e)}),r.forEach(e=>{let t=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&&qS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ft&&a.unshift(t.geometry),a.length){let s=(0,KS.mergeBufferGeometries)(a);t instanceof Ft&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Xb})}),n}function ZS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function JS(n){Object.values(n.shared.materials).forEach(r=>{kh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?kh(e.material):"materials"in e&&e.materials.forEach(t=>{kh(t)})})}function kh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var o1=qs(t1(),1);var r1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ep=class extends tp.Loader{load(r,e,t,o=console.error){let i=new tp.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(r1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(r1),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await US(r,JS),t=HS(e);e.version&&(0,o1.default)(e.version,"1.9.45")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&kS(),ev(e)&&eb(),uv(e)&&Gb(),Hv(e)&&jv(),Qd(e)&&jh()].filter(Boolean)),t.length&&await WS(t);let o=!1,i=new Ni(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Jd(e.scene,i);Qd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=QS(a),a=$S(a),a=YS(a),a=XS(a),a=ZS(a),a}};
3993
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Ce.Vector2},viewport:{type:"v2",value:new Ce.Vector2},basisViewport:{type:"v2",value:new Ce.Vector2},debugColor:{type:"v3",value:new Ce.Color},covariancesTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Ce.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Ce.NormalBlending,depthTest:!0,depthWrite:!1,side:Ce.DoubleSide})}static buildGeomtery(e){let t=new Ce.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Ce.BufferAttribute(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new Ce.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Ce.InstancedBufferAttribute(s,1,!1);return l.setUsage(Ce.DynamicDrawUsage),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Ce.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Ce.Vector2(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=Ce.DataUtils.toHalfFloat(this.covariances[h]);s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.FloatType);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);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]=RS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Yd(this.centers[y]),c[b+2]=Yd(this.centers[y+1]),c[b+3]=Yd(this.centers[y+2])}let u=new Ce.DataTexture(c,a.x,a.y,Ce.RGBAIntegerFormat,Ce.UnsignedIntType);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 Ce.DataTexture(d,p,1,Ce.RGBAFormat,Ce.FloatType);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(Xd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Xd),this.material.uniforms.basisViewport.value.set(2/Xd.x,2/Xd.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}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 VS,Gh=new Promise(n=>{VS=n}),LS=!1;var Qd;function Fh(){if(LS)return;if(Qd)return Qd;async function n(){let e=await import("./gaussian-splat-compression.js");VS(e),LS=!0}return Qd=n(),Qd}var zS;Gh.then(n=>zS=n);var ic=class{constructor(r={}){go(this,"updateView",function(){let r=new mr.Matrix4,e=[],t=new mr.Vector3(0,0,-1),o=new mr.Vector3(0,0,-1),i=new mr.Vector3,a=new mr.Vector3;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(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 mr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new mr.Vector2;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new mr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new mr.Quaternion().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new zS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new mr.Vector3,o=new mr.Quaternion,i=!1,a=1,s,l){this.splatMesh=oi.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=BS(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var pN=new Qr.MeshBasicMaterial;pN.wireframe=!0;var GS=new Qr.Vector3,Zd=class extends Qr.Scene{constructor(e,t){super();this.data=e;this.sharedAssets=t;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new $d;this.invisibleObjects=new Zn("jflkdsafjasdifjaslk",{...yu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Xr("fdasfa",{...Xo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=DS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=NS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Xr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>hc(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Mn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Li&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Xr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),Qn(i)&&Kl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Kl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Qn(o)&&(o.freeBooleanPointer(),i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof zs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Qn(o)&&(o.invalidateUpstreamBooleanData(),Kl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Xr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{IS(a,t,o,{scene:this,shared:i}),a instanceof St&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof Li||l instanceof Xr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof fn&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){je.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{je.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Pn(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...fc(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=ct.zoom(d,t);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof yn&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Pn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of vu.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof yn&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),jd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof yn&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)je.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(je.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(Qn(s)||Ql(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),nc(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Qn(a)||Ql(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),nc(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)je.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)je.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)je.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof St&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Kl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ma.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)je.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=qd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof St&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof St&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new Qr.Matrix4().fromArray(m)),h=new Qr.Skeleton(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new Qr.Box3;return o.setFromPoints(t),o.getCenter(GS),GS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ft)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof wr&&e(t.material[o]);else t.material instanceof wr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof fn&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new ic({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var FS=require("three/examples/jsm/loaders/DRACOLoader.js");var ni;function jS(){return ni||(ni=new FS.DRACOLoader,ni.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ni.decoderPending}async function fN(n){if(ni){let r={attributeIDs:ni.defaultAttributeIDs,attributeTypes:ni.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ni.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function kS(n,r){let[e,t]=Cp(ou.deserialize(new Uint8Array(n)));return wu(e),r&&r(e),t.result().data}function US(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function HS(n){for(let r of n){let e=await fN(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}var hN=require("three"),mN=require("three/examples/jsm/utils/BufferGeometryUtils.js");function WS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var ac=require("three");function qS(n){let r=new Set;return n.traverse(e=>{if(e instanceof Pr)if(Ct(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(yN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new ac.Color,specularColor:new ac.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},ac.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=Ab(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else gN(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function yN(n){return n.getLayersOfType("transmission").length>0}function gN(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function $S(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function YS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var XS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function KS(n){let r=[];return n.traverse(e=>{e instanceof As&&r.push(e)}),r.forEach(e=>{let t=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&&WS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ft&&a.unshift(t.geometry),a.length){let s=(0,XS.mergeBufferGeometries)(a);t instanceof Ft&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Yb})}),n}function QS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function ZS(n){Object.values(n.shared.materials).forEach(r=>{jh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?jh(e.material):"materials"in e&&e.materials.forEach(t=>{jh(t)})})}function jh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var r1=qs(e1(),1);var t1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Jd=class extends ep.Loader{load(r,e,t,o=console.error){let i=new ep.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(t1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(t1),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await kS(r,ZS),t=US(e);e.version&&(0,r1.default)(e.version,"1.9.47")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&jS(),Jb(e)&&J0(),cv(e)&&zb(),Uv(e)&&Fv(),Kd(e)&&Fh()].filter(Boolean)),t.length&&await HS(t);let o=!1,i=new Ni(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Zd(e.scene,i);Kd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=KS(a),a=qS(a),a=$S(a),a=YS(a),a=QS(a),a}};