diff --git a/package.json b/package.json index a1a6f8a6b4..1258397301 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "player:perf": "bun run --filter @hyperframes/player perf", "format:check": "oxfmt --check .", "knip": "knip", - "test:scripts": "node --import tsx --test scripts/animejs-v4-guidance.test.mjs scripts/check-tracked-artifacts.test.mjs scripts/check-no-main-deletions.test.mjs scripts/check-docs-snippet-motion.test.mjs scripts/registry-target-paths.test.mjs scripts/check-workspace-contracts.test.mjs scripts/check-package-cycles.test.mjs scripts/check-cli-process-ownership.test.mjs scripts/check-large-files.test.mjs scripts/package-subpaths.test.mjs scripts/validate-release-channel.test.mjs scripts/publish-workflow.test.mjs scripts/install-workspace-dependencies.test.mjs scripts/draft-changelog.test.ts scripts/set-version.test.ts scripts/release-prepare.test.ts scripts/cli-options.test.ts scripts/changelog-weekly.test.ts scripts/claude-plugin-compression.test.ts scripts/catalog-payload-assets.test.ts scripts/host-registry-assets.test.ts scripts/catalog-preview-temp.test.ts scripts/catalog-hosted-files.test.ts scripts/player-cdn-pin.test.ts scripts/studio-runtime-smoke.test.mjs scripts/verify-packed-manifests.test.mjs scripts/lint-skills.test.mjs scripts/creator-editing-recipes.test.mjs packages/gcp-cloud-run/check-dockerfile-workspaces.test.mjs packages/core/scripts/writeGeneratedFile.test.ts && vitest run scripts/catalog/", + "test:scripts": "node --import tsx --test scripts/animejs-v4-guidance.test.mjs scripts/check-tracked-artifacts.test.mjs scripts/check-no-main-deletions.test.mjs scripts/check-docs-snippet-motion.test.mjs scripts/registry-target-paths.test.mjs scripts/check-workspace-contracts.test.mjs scripts/check-package-cycles.test.mjs scripts/check-cli-process-ownership.test.mjs scripts/check-large-files.test.mjs scripts/package-subpaths.test.mjs scripts/validate-release-channel.test.mjs scripts/publish-workflow.test.mjs scripts/install-workspace-dependencies.test.mjs scripts/draft-changelog.test.ts scripts/set-version.test.ts scripts/release-prepare.test.ts scripts/cli-options.test.ts scripts/changelog-weekly.test.ts scripts/claude-plugin-compression.test.ts scripts/catalog-payload-assets.test.ts scripts/host-registry-assets.test.ts scripts/catalog-preview-temp.test.ts scripts/catalog-script-inlining.test.ts scripts/catalog-hosted-files.test.ts scripts/player-cdn-pin.test.ts scripts/studio-runtime-smoke.test.mjs scripts/verify-packed-manifests.test.mjs scripts/lint-skills.test.mjs scripts/creator-editing-recipes.test.mjs packages/gcp-cloud-run/check-dockerfile-workspaces.test.mjs packages/core/scripts/writeGeneratedFile.test.ts && vitest run scripts/catalog/", "typecheck:scripts": "tsc --noEmit -p scripts/tsconfig.json", "test:skills": "node --test 'skills/**/*.test.mjs'", "generate:previews": "tsx scripts/generate-template-previews.ts", diff --git a/registry/blocks/frost-sequence-camera-orbit/SKILL.md b/registry/blocks/frost-sequence-camera-orbit/SKILL.md index 5801f9a3de..b5aa54994f 100644 --- a/registry/blocks/frost-sequence-camera-orbit/SKILL.md +++ b/registry/blocks/frost-sequence-camera-orbit/SKILL.md @@ -22,8 +22,10 @@ Composition id: `frost-sequence-rig`. Duration 22.5 s at 30 fps, 1920×1080. - `assets/frost.js` (1.5 MB) - `assets/gsap-3.14.2.min.js` (71 KB) - `assets/logo.svg` (1 KB) +- `assets/shards-atlas.png` (1.4 MB) - `assets/test-mark.svg` (1 KB) - `assets/textures/bluenoise64.png` (12 KB) +- `assets/textures/ice-inclusions-generated.png` (4.8 MB) - `build.mjs` (2 KB) - `hyperframes.json` (1 KB) - `index.html` (119 KB) @@ -90,7 +92,6 @@ Composition id: `frost-sequence-rig`. Duration 22.5 s at 30 fps, 1920×1080. - `tests/shape-resolution.ts` (1 KB) - `tests/solid-union.ts` (2 KB) - `tools/compile-preflight.mjs` (1 KB) -- `tools/render-presets.mjs` (1 KB) - `tools/run-shard-compile.mjs` (1 KB) - `tools/shard-compile-probe.ts` (5 KB) - `tools/test-shape.mjs` (1 KB) diff --git a/registry/blocks/frost-sequence-camera-orbit/assets/frost.js b/registry/blocks/frost-sequence-camera-orbit/assets/frost.js index 0d45675c01..113390b495 100644 --- a/registry/blocks/frost-sequence-camera-orbit/assets/frost.js +++ b/registry/blocks/frost-sequence-camera-orbit/assets/frost.js @@ -1060,4 +1060,4 @@ var<${r}> ${e} : ${a};`}},is=new Wd,h_=new sm,vB=new Map([[Int8Array,["sint8","s }`,b=sne(l*l*l,"float"),v=ane(0,"uint"),S=t.boundingBox,T=k1(S.min.x,S.min.y,S.min.z),w=k1(S.max.x,S.max.y,S.max.z),N=8,C=l*l*N,R=ene(()=>{let re=tne.add(v),ce=re.mod(L1(l)),ge=re.div(L1(l)).mod(L1(l)),ye=re.div(L1(l*l)),oe=k1(ce,ge,ye).add(.5).div(l).sub(.5).mul(2*s).toVar(),Ae=j5(j5(T.sub(oe),oe.sub(w)),k1(0)),Ie=W5(-1).toVar();rne(ine(Ae,Ae).lessThanEqual(d*d),()=>{Ie.assign(y(oe,W5(d)))}),b.element(re).assign(Ie)})().compute(C,[64]);for(let re=0;re>>0;let ce=z%(l*l*l),ge=ce%l,ye=Math.floor(ce/l)%l,oe=Math.floor(ce/(l*l));H.set(((ge+.5)/l-.5)*2*s,((ye+.5)/l-.5)*2*s,((oe+.5)/l-.5)*2*s);let Ae=c.closestPointToPoint(H,{},0,d);if(Ae&&Ae.distance<=d&&E[ce]>=0){let Ie=Math.abs(Ae.distance-E[ce]);I=Math.max(I,Ie),O+=Ie*Ie,L++}else!!(Ae&&Ae.distance<=d)!=E[ce]>=0&&X++}let ue=new ld(new F,new F(0,0,1));for(let re=0;re({z:Xe.distance-s-1,delta:Xe.face.normal.z<0?1:-1})).sort((Xe,at)=>Xe.z-at.z),Ae=0,Ie=0;for(let Xe=0;Xe=0?E[W]:u;Ie!==0&&(j=-j),E[W]=Math.min(1,Math.max(0,(j+u)/(2*u)))}}let ne=performance.now();return th.sdf.push({n:l,triangles:t.index.count/3,packMs:g-a,gpuMs:P-g,signMs:ne-P,totalMs:ne-a,audit:{samples:2048,compared:L,maxDistanceError:I,rmsDistanceError:Math.sqrt(O/Math.max(1,L)),missing:X}}),m.dispose(),b.value.dispose(),R.dispose(),F1(E,l,r,o,s)}var{Fn:one,vec3:lne,vec4:H5,float:k0e,uint:D1,uniform:O1,instanceIndex:une,uvec3:hne,ivec3:D0e,texture3D:dne,textureStore:cne,dot:X5,abs:pne}=Jr,mne=class{constructor(e,t,r,i=128){this.renderer=e,this.bound=t,this.seed=r,this.res=i;for(let s=0;s<2;s++){let a=new d_(i,i,i);a.type=Er,a.format=pi,a.minFilter=a.magFilter=or;let n=O1(new F),o=O1(1),l=O1(.5),u=O1(r+s*7),h=one(()=>{let d=une,c=hne(d.mod(D1(i)),d.div(D1(i)).mod(D1(i)),d.div(D1(i*i))),m=lne(c).add(.5).div(i).sub(.5).mul(o.mul(2)).add(n).toVar(),g=bm(m,u,l).toVar();cne(a,c,H5(g.xyz,X5(g.xyz,m).add(g.w))).toWriteOnly()})().compute(i**3,[64]);this.entries.push({tex:a,center:n,extent:o,coverage:l,s:u,kernel:h})}this.update()}signature="";entries=[];update(){let e=le.ice.cracks,t=JSON.stringify([e.largeScale,e.fineScale,e.warp,e.coverage,e.fineCoverage,this.seed]);if(t===this.signature)return;this.signature=t;let r=new F(this.seed*.731,this.seed*.137,this.seed*.529),i=e.fineScale/e.largeScale,s=this.entries[0],a=this.entries[1];s.center.value.copy(r).multiplyScalar(.37),s.extent.value=this.bound*e.largeScale+Math.abs(e.warp)*2+.1,s.coverage.value=e.coverage,a.center.value.copy(s.center.value).multiplyScalar(i).add(r),a.extent.value=s.extent.value*i,a.coverage.value=e.fineCoverage;for(let n of this.entries)this.renderer.compute(n.kernel);th.materialPlanes={res:this.res,bytes:2*this.res**3*16,builds:(th.materialPlanes?.builds||0)+1}}sample(e,t=!1){let r=this.entries[+t],i=e.sub(r.center).div(r.extent.mul(2)).add(.5),s=dne(r.tex).sample(i).level(0).toVar();return H5(s.xyz,pne(s.w.sub(X5(s.xyz,e))))}dispose(){for(let e of this.entries)e.tex.dispose(),e.kernel.dispose()}},{pass:fne,mrt:gne,vec4:$5,positionLocal:yne,normalLocal:xne}=Jr;function vne(e,t){let r=new bg,i=new Pd;i.side=Cs,i.toneMapped=!1;let s=new Mi(e,i);s.frustumCulled=!1,s.matrixAutoUpdate=!1,r.add(s);let a=fne(r,t,{type:Er,samples:0});a.setMRT(gne({output:$5(yne,1),normal:$5(xne,0)}));let n=a.getTextureNode("output"),o=a.getTextureNode("normal"),l=a.getTextureNode("depth");for(let u of["output","normal"]){let h=a.getTexture(u);h.minFilter=h.magFilter=or,h.generateMipmaps=!1}return{surfacePass:a,position:n,normal:o,depth:l,mesh:s,material:i,update(u,h){s.geometry=u.geometry,s.matrix.copy(u.matrixWorld),s.matrixWorld.copy(u.matrixWorld),s.visible=u.visible,a.setResolutionScale(h)},dispose(){a.dispose(),i.dispose()}}}function bne(e,t=1024){let r=new Float32Array(t*t*4),i=e.image.data,s=e.image.width,a=e.image.height,n=le.ice,o=n.ior,l=((o-1)/(o+1))**2,u=new gt(n.attenuationColor),h=[u.r,u.g,u.b],d=(m,g,y,b)=>{let v=((Math.atan2(y,m)/(2*Math.PI)+.5)%1+1)%1,S=Math.asin(Math.max(-1,Math.min(1,g)))/Math.PI+.5,T=v*s-.5,w=S*a-.5,N=Math.floor(T),C=Math.floor(w),R=T-N,E=w-C,P=(I,O)=>i[(Math.max(0,Math.min(a-1,O))*s+(I+s)%s)*4+b];return(P(N,C)*(1-R)+P(N+1,C)*R)*(1-E)+(P(N,C+1)*(1-R)+P(N+1,C+1)*R)*E};for(let m=0;m=1){let ce=.99999/Math.sqrt(v);y*=ce,b*=ce}let S=Math.sqrt(Math.max(1e-8,1-y*y-b*b)),T=1/o,w=T*S-Math.sqrt(1-T*T*(1-S*S)),N=w*y,C=w*b,R=-T+w*S,E=-2*(y*N+b*C+S*R),P=y+N*E,I=b+C*E,O=S+R*E,L=N*P+C*I+R*O,X=1-o*o*(1-L*L),z=l+(1-l)*(1-S)**5,H=o*L-Math.sqrt(Math.max(0,X)),ue=o*N-H*P,ne=o*C-H*I,re=o*R-H*O;for(let ce=0;ce<3;ce++){let ge=Math.pow(h[ce],E*n.thicknessScale/Math.max(n.attenuationDistance,.01));r[(g+m*t)*4+ce]=d(2*S*y,2*S*b,2*S*S-1,ce)*z+d(ue,ne,re,ce)*(1-z)*(n.backlight??.4)*ge}r[(g+m*t)*4+3]=1}let c=new kg(r,t,t,pi,Er);return c.colorSpace=Xh,c.minFilter=c.magFilter=lr,c.needsUpdate=!0,c}var ta={t:0,dt:.016666666666666666,frame:0,paused:!1,stepRequested:!1,_last:performance.now()/1e3,tick(e=performance.now()/1e3){let t=Math.min(.05,Math.max(0,e-this._last));if(this._last=e,this.paused&&!this.stepRequested){this.dt=0;return}this.stepRequested=!1,this.dt=this.paused?.016666666666666666:t,this.t+=this.dt,this.frame++}},Oo=(e,t,r,i)=>r<=0?t:e+(t-e)*(1-Math.exp(-i/r));function Lm(e){let t=e*1664525+1013904223>>>0;return()=>{t=t+1831565813>>>0;let r=t;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}var{Fn:Tne,vec2:U1,vec3:q5,vec4:Sne,float:O0e,uniform:ql,screenUV:Y5,screenSize:Z5,mix:J5,pow:_ne,smoothstep:dw,fract:U0e,sin:wne,dot:Mne,length:Q5,max:Nne}=Jr;function z1(e,t){let r=Z5.x.div(Z5.y),i=U1(t.x.sub(e.uCenter.x).mul(r),t.y.sub(e.uCenter.y)),s=Q5(i).div(e.uRadius),a=_ne(dw(0,1,s),e.uFalloff),n=dw(0,1,t.y.oneMinus().mul(1.15)),o=dw(.35,1.3,Q5(U1(t.x.sub(.5).mul(r),t.y.sub(.5)))),l=J5(e.uTop,e.uMid,a);return J5(l,e.uBottom,n.mul(o).mul(.85))}function Ane(){let e=ql(new gt("#2a2a2a")),t=ql(new gt("#050505")),r=ql(new gt("#030303")),i=ql(new fe(.5,1.02)),s=ql(.55),a=ql(1.6),n=ql(1),o=ql(0),l={uTop:e,uMid:t,uBottom:r,uCenter:i,uRadius:s,uFalloff:a,uNoise:n,uTime:o};return{node:Tne(()=>{let u=z1(l,Y5).toVar(),h=Y5,d=Po(q5(h.mul(U1(37,21)),o.mul(.37))),c=wne(Mne(h,U1(5.3,7.1)).add(o.mul(.05))).mul(.5).add(.5).sub(.5).mul(1/255).mul(n).add(d.sub(.5).mul(1/255).mul(n));return Sne(Nne(u.add(q5(c)),0),1)})(),uniforms:l}}function Cne(e=1024,t=512){let r=new Float32Array(e*t*4),i=new kg(r,e,t,pi,Er);i.mapping=kf,i.colorSpace=Xh,i.wrapS=to,i.wrapT=Ti,i.minFilter=i.magFilter=lr;let s=(o,l,u)=>{let h=Math.max(0,Math.min(1,(u-o)/(l-o)));return h*h*(3-2*h)},a=Array.from({length:e*t},(o,l)=>{let u=(l%e+.5)/e,h=(Math.floor(l/e)+.5)/t,d=(u-.5)*Math.PI*2,c=(h-.5)*Math.PI;return new F(Math.cos(c)*Math.cos(d),Math.sin(c),Math.cos(c)*Math.sin(d))});function n(o){let l=(c,m,g,y,b,v)=>{let S=Bt.degToRad(g),T=Bt.degToRad(y),w=new F(Math.cos(S)*Math.sin(T),Math.sin(S),Math.cos(S)*Math.cos(T)),N=new F().crossVectors(new F(0,1,0),w).normalize(),C=new F().crossVectors(w,N);return{color:new gt(c),power:m,normal:w,right:N,up:C,w:b,h:v}},u=[l(o.key.color,o.envSoftbox*5,o.key.elevation,o.key.azimuth,.42*o.key.size,.65*o.key.size),l(o.rimColor,o.envRim*6,o.rimElevation,o.rimAzimuth,.1*o.rimSize,.9*o.rimSize),l(o.accentCool.color,o.accentCool.reflection*4,o.accentCool.elevation,o.accentCool.azimuth,.13*o.accentCool.size,.75*o.accentCool.size),l(o.accentWarm.color,o.accentWarm.reflection*4,o.accentWarm.elevation,o.accentWarm.azimuth,.2*o.accentWarm.size,.7*o.accentWarm.size)],h=new gt(o.fillColor),d=new gt(o.fillGroundColor);a.forEach((c,m)=>{let g=s(-.3,.8,c.y),y=o.envFill*.055,b=(d.r*(1-g)+h.r*g)*y,v=(d.g*(1-g)+h.g*g)*y,S=(d.b*(1-g)+h.b*g)*y;for(let T of u){let w=c.dot(T.normal);if(w<=0)continue;let N=Math.abs(c.dot(T.right)/w),C=Math.abs(c.dot(T.up)/w),R=(1-s(T.w*.45,T.w,N))*(1-s(T.h*.45,T.h,C)),E=T.power*R;b+=T.color.r*E,v+=T.color.g*E,S+=T.color.b*E}r.set([b,v,S,1],m*4)}),i.needsUpdate=!0,i.needsPMREMUpdate=!0}return{texture:i,update:n}}var Rne=class{key=new $g(16777215,3);fill=new EN(16777215,0,.2);rim=new Xg(16777215,1,0,Math.PI/3,1,0);accentCool=new $g(13098495,.35);accentWarm=new $g(16768964,.22);group=new pn;mapSize=0;settingsVersion=-1;constructor(){this.key.castShadow=!0,this.key.shadow.camera.left=-5.5,this.key.shadow.camera.right=5.5,this.key.shadow.camera.top=5.5,this.key.shadow.camera.bottom=-5.5,this.key.shadow.camera.near=2,this.key.shadow.camera.far=30,this.key.target.position.set(0,0,0),this.rim.target.position.set(0,0,0),this.group.add(this.key,this.key.target,this.fill,this.rim,this.rim.target,this.accentCool,this.accentCool.target,this.accentWarm,this.accentWarm.target)}update(e,t){let r=le.lighting,i=Math.sin(e*2*Math.PI/Math.max(1,r.sway.period))*r.sway.amplitude,s=Math.sin(e*2*Math.PI/Math.max(1,r.sway.period)*.61+.8)*r.sway.amplitude,a=Bt.degToRad(r.key.elevation+s*40),n=Bt.degToRad(r.key.azimuth+i*60),o=12;this.key.position.set(Math.cos(a)*Math.sin(n)*o,Math.sin(a)*o,Math.cos(a)*Math.cos(n)*o),this.key.intensity=r.key.intensity*(1+r.key.hoverBoost*t);let l=Bt.degToRad(r.rimElevation),u=Bt.degToRad(r.rimAzimuth??180);this.rim.position.set(Math.cos(l)*Math.sin(u)*10,Math.sin(l)*10,Math.cos(l)*Math.cos(u)*10);for(let[h,d]of[[this.accentCool,r.accentCool],[this.accentWarm,r.accentWarm]]){if(!d)continue;let c=Bt.degToRad(d.elevation),m=Bt.degToRad(d.azimuth);h.position.set(Math.cos(c)*Math.sin(m)*12,Math.sin(c)*12,Math.cos(c)*Math.cos(m)*12),h.color.set(d.color),h.intensity=d.intensity}if(le.version!==this.settingsVersion){this.settingsVersion=le.version,this.key.color.set(r.key.color),this.fill.intensity=r.fill,this.fill.color.set(r.fillColor),this.fill.groundColor.set(r.fillGroundColor),this.rim.color.set(r.rimColor),this.rim.intensity=r.rim*40,this.rim.angle=Bt.degToRad(r.rimAngle??65),this.rim.penumbra=1,this.rim.decay=1.2,this.rim.distance=60;let h=this.key.shadow;h.radius=r.shadow.softness,h.blurSamples=Math.round(r.shadow.samples),h.bias=r.shadow.bias,h.intensity=r.shadow.intensity;let d=parseInt(r.shadow.mapSize,10);d!==this.mapSize&&(this.mapSize=d,h.mapSize.set(d,d),h.map&&(h.map.dispose(),h.map=null),h.needsUpdate=!0)}}},K5=class{yaw=0;pitch=0;parYaw=0;parPitch=0;idleBlend=0;lookAt=new F;base=new F;spherical=new gU;update(e,t,r,i){let s=Ht.enabled&&Ht.framing,a=le.camera,n=s?Ht:a,o=r-Ui.lastMoveT>a.idleDelay;this.idleBlend=Oo(this.idleBlend,o?1:0,o?1.5:.6,i);let l=Ui.inside?Ui.x:0,u=Ui.inside?Ui.y:0,h=2*Math.PI/Math.max(1,a.idlePeriod),d=Math.sin(r*h)*a.idleAmplitude,c=Math.sin(r*h*1.37+1.1)*a.idleAmplitude*.5,m=Bt.degToRad(n.baseYaw+Bt.lerp(l*n.rotateYaw,d,this.idleBlend)),g=Bt.degToRad(n.basePitch+Bt.lerp(-u*n.rotatePitch,c,this.idleBlend));this.yaw=Oo(this.yaw,m,a.rotationLag*.35,i),this.pitch=Oo(this.pitch,g,a.rotationLag*.35,i),t.rotation.set(this.pitch,this.yaw,0,"YXZ");let y=Bt.degToRad(n.parallaxRange);if(this.parYaw=Oo(this.parYaw,-l*y,a.parallaxSmoothing*.35,i),this.parPitch=Oo(this.parPitch,u*y*.6,a.parallaxSmoothing*.35,i),this.lookAt.set(s?Ht.lookAtX:0,n.lookAtY,0),Ht.cameraOverride){Ht.cameraOverride(e);return}let b=this.base.set(0,n.height,n.distance).sub(this.lookAt),v=this.spherical.setFromVector3(b);v.theta+=this.parYaw,v.phi=Bt.clamp(v.phi+this.parPitch,.1,Math.PI-.1),e.position.setFromSpherical(v).add(this.lookAt),e.lookAt(this.lookAt),e.fov!==n.fov&&(e.fov=n.fov,e.updateProjectionMatrix())}},{Fn:z0e,vec2:Ene,vec3:lh,float:Pne,length:hc,max:Za,min:Bne,abs:V1,dot:Ine,sqrt:V0e,clamp:G0e,sign:W0e,select:Fne,texture3D:Lne}=Jr,eI=(()=>{let e=(1+Math.sqrt(5))/2,t=[],r=(i,s,a)=>{let n=Math.hypot(i,s,a);t.push([i/n,s/n,a/n])};for(let i of[-1,1])for(let s of[-1,1])for(let a of[-1,1])r(i,s,a);for(let i of[-1,1])for(let s of[-1,1])r(0,i/e,s*e),r(i/e,s*e,0),r(i*e,0,s/e);return t})();function cw(e,t,r,i){let s=t,a=t*r;switch(e){case"torus":return{name:e,size:t,tubeRatio:r,bound:(s+a)*1.12,thickness:a,sdf:(n,o,l)=>{let u=Math.hypot(n,o)-s;return Math.hypot(u,l)-a},sdfNode:n=>hc(Ene(hc(n.xy).sub(s),n.z)).sub(a)};case"sphere":{let n=t*1.15;return{name:e,size:t,tubeRatio:r,bound:n*1.15,thickness:n,sdf:(o,l,u)=>Math.hypot(o,l,u)-n,sdfNode:o=>hc(o).sub(n)}}case"roundedBox":{let n=t*.92,o=t*.22;return{name:e,size:t,tubeRatio:r,bound:(n+o)*1.12,thickness:n,sdf:(l,u,h)=>{let d=Math.abs(l)-n+o,c=Math.abs(u)-n+o,m=Math.abs(h)-n*.55+o,g=Math.max(d,0),y=Math.max(c,0),b=Math.max(m,0);return Math.hypot(g,y,b)+Math.min(Math.max(d,c,m),0)-o},sdfNode:l=>{let u=V1(l).sub(lh(n-o,n-o,n*.55-o));return hc(Za(u,0)).add(Bne(Za(u.x,Za(u.y,u.z)),0)).sub(o)}}}case"pyramid":{let n=t*1.05,o=t*1.5,l=t*.06,u=n/Math.hypot(n,o),h=o/Math.hypot(n,o),d=-o*.4;return{name:e,size:t,tubeRatio:r,bound:Math.max(n,o)*1.25,thickness:n*.6,sdf:(c,m,g)=>{m-=d;let y=Math.abs(c),b=Math.abs(g),v=Math.max(y*h+m*u-o*u,b*h+m*u-o*u),S=-m;return Math.max(v,S)-l},sdfNode:c=>{let m=lh(c.x,c.y.sub(d),c.z),g=V1(m.x),y=V1(m.z),b=Za(g.mul(h).add(m.y.mul(u)).sub(o*u),y.mul(h).add(m.y.mul(u)).sub(o*u));return Za(b,m.y.negate()).sub(l)}}}case"icosahedron":{let n=t*1.05,o=t*.05;return{name:e,size:t,tubeRatio:r,bound:n*1.3,thickness:n*.8,sdf:(l,u,h)=>{let d=-1/0;for(let c of eI)d=Math.max(d,l*c[0]+u*c[1]+h*c[2]);return d-n-o},sdfNode:l=>{let u=Pne(-100);for(let h of eI)u=Za(u,Ine(l,lh(h[0],h[1],h[2])));return u.sub(n+o)}}}case"logo":{let n=i,o=t,l=n.sampleBoundNode??=Jr.uniform(n.sampleDomain.value);return{name:e,size:t,tubeRatio:r,bound:n.bound*o,thickness:n.thickness*o,voxelSize:l.mul(2*o/n.res),sdf:(u,h,d)=>n.sample(u/o,h/o,d/o)*o,sdfNode:u=>{let h=l.mul(o),d=u.div(h.mul(2)).add(.5),c=Lne(n.texture,d).r.mul(n.range*2).sub(n.range).mul(o),m=Za(V1(u).sub(h),0);return Fne(Za(m.x,Za(m.y,m.z)).greaterThan(0),Za(c,hc(m)),c)}}}}}function tI(e,t,r,i,s=.001){let a=e.sdf(t+s,r,i)-e.sdf(t-s,r,i),n=e.sdf(t,r+s,i)-e.sdf(t,r-s,i),o=e.sdf(t,r,i+s)-e.sdf(t,r,i-s),l=Math.hypot(a,n,o)||1;return[a/l,n/l,o/l]}var G1=(e,t,r=.002)=>{let i=lh(r,0,0),s=lh(0,r,0),a=lh(0,0,r),n=lh(e.sdfNode(t.add(i)).sub(e.sdfNode(t.sub(i))),e.sdfNode(t.add(s)).sub(e.sdfNode(t.sub(s))),e.sdfNode(t.add(a)).sub(e.sdfNode(t.sub(a))));return n.div(Za(hc(n),1e-6))};function kne(e,t,r,i=60,s){let a=0,n=t.x,o=t.y,l=t.z,u=!1;for(let m=0;m<160;m++){n=r.x*a+t.x,o=r.y*a+t.y,l=r.z*a+t.z;let g=e.sdf(n,o,l);if(g<.0015){u=!0;break}if(a+=Math.max(g,.002),a>i)break}if(!u)return null;let h=a,d=s??{entry:new F,exit:new F,tEntry:0,tExit:0};d.entry.set(n,o,l);let c=a+.004;for(let m=0;m<200;m++){n=r.x*c+t.x,o=r.y*c+t.y,l=r.z*c+t.z;let g=e.sdf(n,o,l);if(g>.0015||(c+=Math.max(-g,.004),c-a>e.bound*4))break}return d.exit.set(r.x*c+t.x,r.y*c+t.y,r.z*c+t.z),d.tEntry=h,d.tExit=c,d}function rI(e,t,r,i,s,a){let n=new Float32Array(t*3),o=new Float32Array(t),l=a?a[0]:e.bound,u=a?a[1]:e.bound,h=a?a[2]:e.bound,d=e.bound,c=e.thickness*i,m=Math.round(t*r),g=0,y=0;for(;g=0)continue;let w=-T,N=gc||!N&&w<=c)||(n[g*3]=b,n[g*3+1]=v,n[g*3+2]=S,o[g]=Math.min(1,w/e.thickness),g++)}if(g!==t)throw new Error(`Frost: sampled only ${g}/${t} interior homes; check shape bounds and SDF`);return{positions:n,depths:o,count:g}}function W1(e,t,r=4){let i=e.attributes.position,s=new Float32Array(i.count*3);for(let a=0;a{let c=e.renderer.getDrawingBufferSize(iI);this.setViewOffset(c.width,c.height)},t.context.onAfterRenderPipeline=()=>{this.clearViewOffset()}),e.renderer.reversedDepthBuffer===!0&&(this._historyRenderTarget.depthTexture.type=Er),e.context.velocity!==void 0?this._velocityNode=e.context.velocity:this._velocityNode=Xy;let r=c=>{let{x:m,y:g}=this._cameraNearFar,y=MB(c,m,g);return $y(y,m,g)},i=v_({closestDepth:"float",closestPositionTexel:"vec2",farthestDepth:"float"}),s=Ir(([c])=>{let m=yt(2).toVar(),g=nr(0).toVar(),y=yt(-1).toVar();for(let b=-1;b<=1;++b)for(let v=-1;v<=1;++v){let S=c.add(nr(b,v)).toVar(),T=this.depthNode.load(S).r;e.renderer.reversedDepthBuffer&&(T=T.oneMinus()),e.renderer.logarithmicDepthBuffer&&(T=r(T)),T=T.toVar(),pm(T.lessThan(m),()=>{m.assign(T),g.assign(S)}),pm(T.greaterThan(y),()=>{y.assign(T)})}return i(m,g,y)}),a=c=>{let m=this._previousDepthNode.sample(c).r;e.renderer.logarithmicDepthBuffer&&(m=r(m));let g=p_(c,m,this._previousCameraProjectionMatrixInverse),y=this._previousCameraWorldMatrix.mul(hr(g,1)).xyz,b=this._cameraWorldMatrixInverse.mul(hr(y,1)).z;return this.camera.isOrthographicCamera?PB(b,this._cameraNearFar.x,this._cameraNearFar.y):$y(b,this._cameraNearFar.x,this._cameraNearFar.y)},n=Ir(([c,m,g,y])=>{let b=y.rgb.add(g.rgb).mul(.5),v=y.rgb.sub(g.rgb).mul(.5).add(1e-7),S=m.sub(hr(b,c.a)),T=S.xyz.div(v).abs(),w=_t(T.x,T.y,T.z);return w.greaterThan(1).select(hr(b,c.a).add(S.div(w)),m)}).setLayout({name:"clipAABB",type:"vec4",inputs:[{name:"currentColor",type:"vec4"},{name:"historyColor",type:"vec4"},{name:"minColor",type:"vec4"},{name:"maxColor",type:"vec4"}]}),o=Ir(([c,m,g,y])=>{let b=[[-1,-1],[-1,1],[1,-1],[1,1],[1,0],[0,-1],[0,1],[-1,0]],v=m.toVar(),S=m.pow2().toVar();for(let[E,P]of b){let I=this.beautyNode.offset(ss(E,P)).load(c).max(0);v.addAssign(I),S.addAssign(I.pow2())}let T=yt(b.length+1),w=v.div(T),N=S.div(T).sub(w.pow2()).max(0).sqrt().mul(y),C=w.sub(N),R=w.add(N);return n(w.clamp(C,R),g,C,R)}),l=Ir(([c,m])=>{let g=c.mul(m).fract().abs(),y=_t(g,g.oneMinus());return y.x.mul(y.y).oneMinus().div(.75)}).setLayout({name:"subpixelCorrection",type:"float",inputs:[{name:"velocityUV",type:"vec2"},{name:"textureSize",type:"ivec2"}]}),u=Ir(([c,m,g])=>{let y=g.oneMinus(),b=c.mul(yt(1).div(_t(c.r,c.g,c.b).add(1))),v=m.mul(yt(1).div(_t(m.r,m.g,m.b).add(1))),S=kl(b.rgb),T=kl(v.rgb);return g.mulAssign(yt(1).div(S.add(1))),y.mulAssign(yt(1).div(T.add(1))),Wy(c.mul(g),m.mul(y)).div(_t(g.add(y),1e-5)).toVar()}),h=Ri(this._historyRenderTarget.texture),d=Ir(()=>{let c=_a(),m=this.beautyNode.size(),g=c.mul(m),y=s(g),b=y.get("closestDepth"),v=y.get("closestPositionTexel"),S=y.get("farthestDepth"),T=this.velocityNode.load(v).xy.mul(nr(.5,-.5)),w=c.sub(T),N=a(w),C=w.greaterThanEqual(0).all().and(w.lessThanEqual(1).all()),R=S.sub(b).greaterThan(this.edgeDepthDiff),E=b.sub(N).greaterThan(this.depthThreshold),P=C.and(R.or(E.not())),I=this.beautyNode.sample(c),O=h.sample(c.sub(T)),L=c.sub(w).mul(m).length().div(this.maxVelocityLength).saturate(),X=yt(.05).toVar();this.useSubpixelCorrection&&X.addAssign(l(T,m).mul(.25)),X.assign(P.select(X.add(L).saturate(),1));let z=Dl(.5,1,L.oneMinus().pow2()),H=o(g,I,O,z);return u(I,H,X)});return this._resolveMaterial.colorNode=d(),this._textureNode}dispose(){this._historyRenderTarget.dispose(),this._resolveRenderTarget.dispose(),this._resolveMaterial.dispose()}};function sI(e,t){let r=1,i=0;for(;e>0;)r/=t,i+=r*(e%t),e=Math.floor(e/t);return i}var aI=Array.from({length:32},(e,t)=>[sI(t+1,2),sI(t+1,3)]),Vne=(e,t,r,i)=>new zne(Ju(e),t,r,i),dc=new Wa,Gne=new fe,fw,Wne=class extends rr{static get type(){return"TAAUNode"}constructor(e,t,r,i){super("vec4"),this.isTAAUNode=!0,this.updateBeforeType=ut.FRAME,this.beautyNode=e,this.depthNode=t,this.velocityNode=r,this.camera=i,this.depthThreshold=5e-4,this.edgeDepthDiff=.001,this.maxVelocityLength=128,this.currentFrameWeight=.025,this._jitterIndex=0,this._jitterOffset=Fr(new fe),this._historyRenderTarget=new er(1,1,{depthBuffer:!1,type:Dt,count:2}),this._historyRenderTarget.textures[0].name="TAAUNode.history.color",this._historyRenderTarget.textures[1].name="TAAUNode.history.lock",this._resolveRenderTarget=new er(1,1,{depthBuffer:!1,type:Dt}),this._resolveRenderTarget.texture.name="TAAUNode.resolve",this._previousDepthRenderTarget=new er(1,1,{depthBuffer:!1,depthTexture:new fs}),this._previousDepthRenderTarget.depthTexture.name="TAAUNode.previousDepth",this._resolveMaterial=new Pt,this._resolveMaterial.name="TAAU.resolve",this._seedMaterial=new Pt,this._seedMaterial.name="TAAU.seed",this._textureNode=Qu(this,this._resolveRenderTarget.texture),this._originalProjectionMatrix=new We,this._cameraNearFar=Fr(new fe),this._cameraWorldMatrix=Fr(new We),this._cameraWorldMatrixInverse=Fr(new We),this._cameraProjectionMatrixInverse=Fr(new We),this._previousCameraWorldMatrix=Fr(new We),this._previousCameraProjectionMatrixInverse=Fr(new We),this._previousDepthNode=Ri(this._previousDepthRenderTarget.depthTexture),this._needsPostProcessingSync=!1}getTextureNode(){return this._textureNode}setSize(e,t){this._historyRenderTarget.setSize(e,t),this._resolveRenderTarget.setSize(e,t)}setViewOffset(e,t){this.camera.updateProjectionMatrix(),this._originalProjectionMatrix.copy(this.camera.projectionMatrix),Xy.setProjectionMatrix(this._originalProjectionMatrix);let r=oI[this._jitterIndex],i=r[0]-.5,s=r[1]-.5;this._jitterOffset.value.set(i,s),this.camera.setViewOffset(e,t,i,s,e,t)}clearViewOffset(){this.camera.clearViewOffset(),Xy.setProjectionMatrix(null),this._jitterIndex++,this._jitterIndex=this._jitterIndex%(oI.length-1)}updateBefore(e){let{renderer:t}=e;this._previousCameraWorldMatrix.value.copy(this._cameraWorldMatrix.value),this._previousCameraProjectionMatrixInverse.value.copy(this._cameraProjectionMatrixInverse.value),this._cameraNearFar.value.set(this.camera.near,this.camera.far),this._cameraWorldMatrix.value.copy(this.camera.matrixWorld),this._cameraWorldMatrixInverse.value.copy(this.camera.matrixWorldInverse),this._cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse);let r=this.beautyNode.isRTTNode?this.beautyNode.renderTarget:this.beautyNode.passNode.renderTarget,i=r.texture.width,s=r.texture.height,a=t.getDrawingBufferSize(Gne),n=a.width,o=a.height;fw=Es.resetRendererState(t,fw);let l=this._historyRenderTarget.width!==n||this._historyRenderTarget.height!==o;this.setSize(n,o),l===!0&&(t.initRenderTarget(this._historyRenderTarget),t.initRenderTarget(this._resolveRenderTarget),t.setRenderTarget(this._historyRenderTarget),dc.material=this._seedMaterial,dc.name="TAAU.seed",dc.render(t),t.setRenderTarget(null)),this._needsPostProcessingSync===!0&&(this.setViewOffset(i,s),this._needsPostProcessingSync=!1),t.setRenderTarget(this._resolveRenderTarget),dc.material=this._resolveMaterial,dc.name="TAAU",dc.render(t),t.setRenderTarget(null),t.copyTextureToTexture(this._resolveRenderTarget.texture,this._historyRenderTarget.texture);let u=this.depthNode.value,h=u.image!==null&&u.image!==void 0?u.image.width:0,d=u.image!==null&&u.image!==void 0?u.image.height:0;if(h>0&&d>0){(this._previousDepthRenderTarget.width!==h||this._previousDepthRenderTarget.height!==d)&&(this._previousDepthRenderTarget.setSize(h,d),t.initRenderTarget(this._previousDepthRenderTarget));let c=this._previousDepthRenderTarget.depthTexture;t.copyTextureToTexture(u,c),this._previousDepthNode.value=c}Es.restoreRendererState(t,fw)}setup(e){let t=e.context.renderPipeline;t&&(this._needsPostProcessingSync=!0,t.context.onBeforeRenderPipeline=()=>{let m=this.beautyNode.isRTTNode?this.beautyNode.renderTarget:this.beautyNode.passNode.renderTarget,g=m.texture.width,y=m.texture.height;this.setViewOffset(g,y)},t.context.onAfterRenderPipeline=()=>{this.clearViewOffset()});let r=v_({closestDepth:"float",closestPositionTexel:"vec2",farthestDepth:"float"}),i=Ir(([m])=>{let g=yt(2).toVar(),y=nr(0).toVar(),b=yt(-1).toVar();for(let v=-1;v<=1;++v)for(let S=-1;S<=1;++S){let T=m.add(nr(v,S)).toVar(),w=this.depthNode.load(T).r.toVar();pm(w.lessThan(g),()=>{g.assign(w),y.assign(T)}),pm(w.greaterThan(b),()=>{b.assign(w)})}return r(g,y,b)}),s=m=>{let g=this._previousDepthNode.sample(m).r,y=p_(m,g,this._previousCameraProjectionMatrixInverse),b=this._previousCameraWorldMatrix.mul(hr(y,1)).xyz,v=this._cameraWorldMatrixInverse.mul(hr(b,1)).z;return $y(v,this._cameraNearFar.x,this._cameraNearFar.y)},a=Ir(([m,g,y,b])=>{let v=b.rgb.add(y.rgb).mul(.5),S=b.rgb.sub(y.rgb).mul(.5).add(1e-7),T=g.sub(hr(v,m.a)),w=T.xyz.div(S).abs(),N=_t(w.x,w.y,w.z);return N.greaterThan(1).select(hr(v,m.a).add(T.div(N)),g)}).setLayout({name:"clipAABB",type:"vec4",inputs:[{name:"currentColor",type:"vec4"},{name:"historyColor",type:"vec4"},{name:"minColor",type:"vec4"},{name:"maxColor",type:"vec4"}]}),n=Ir(([m,g,y])=>{let b=y.oneMinus(),v=m.mul(yt(1).div(_t(m.r,m.g,m.b).add(1))),S=g.mul(yt(1).div(_t(g.r,g.g,g.b).add(1))),T=kl(v.rgb),w=kl(S.rgb);return y.mulAssign(yt(1).div(T.add(1))),b.mulAssign(yt(1).div(w.add(1))),Wy(m.mul(y),g.mul(b)).div(_t(y.add(b),1e-5)).toVar()}),o=Ri(this._historyRenderTarget.textures[0]),l=Ri(this._historyRenderTarget.textures[1]),u=mm("vec4"),h=mm("vec4"),d=m_(u,h),c=Ir(()=>{let m=_a(),g=this.beautyNode.size(),y=nr(g),b=m.mul(y),v=b.sub(nr(.5).add(this._jitterOffset)).round(),S=ss(v),T=i(v),w=T.get("closestDepth"),N=T.get("closestPositionTexel"),C=T.get("farthestDepth"),R=this.velocityNode.load(N).xy.mul(nr(.5,-.5)),E=m.sub(R),P=s(E),I=E.greaterThanEqual(0).all().and(E.lessThanEqual(1).all()),O=C.sub(w).greaterThan(this.edgeDepthDiff),L=w.sub(P).greaterThan(this.depthThreshold),X=I.and(O.or(L.not())),z=hr(0).toVar(),H=yt(0).toVar(),ue=hr(0).toVar(),ne=hr(0).toVar(),re=[[-1,-1],[0,-1],[1,-1],[-1,0],[0,0],[1,0],[-1,1],[0,1],[1,1]];for(let[Te,we]of re){let ie=S.add(ss(Te,we)),V=nr(ie).add(nr(.5).add(this._jitterOffset)),Oe=b.sub(V),tt=Oe.dot(Oe),Je=_B(tt.mul(-2.29)),ct=this.beautyNode.load(ie).max(0);z.addAssign(ct.mul(Je)),H.addAssign(Je),ue.addAssign(ct),ne.addAssign(ct.pow2())}let ce=z.div(H.max(1e-5)),ge=yt(re.length),ye=ue.div(ge),oe=m.sub(E).mul(y).length().div(this.maxVelocityLength).saturate(),Ae=Dl(.5,1,oe.oneMinus().pow2()),Ie=ne.div(ge).sub(ye.pow2()).max(0).sqrt().mul(Ae),Xe=ye.sub(Ie),at=ye.add(Ie),W=o.sample(E),j=a(ye.clamp(Xe,at),W,Xe,at),G=kl(ce.rgb),ae=kl(ye.rgb).toConst(),be=G.sub(ae).abs().div(ae).smoothstep(0,.2),Be=w.sub(P).abs().greaterThan(this.depthThreshold),$=I.and(Be.not()).select(be,yt(0)),U=L.select(0,.5),J=_t($,l.r.mul(U)).saturate(),q=Dl(j,W,J),se=yt(this.currentFrameWeight).toVar();se.assign(X.select(se.add(oe).saturate(),1));let pe=n(ce,q,se);return u.assign(pe),h.assign(J),hr(0)});return this._resolveMaterial.colorNode=c(),this._resolveMaterial.outputNode=d,this._seedMaterial.colorNode=Ir(()=>(u.assign(this.beautyNode.sample(_a())),h.assign(0),hr(0)))(),this._seedMaterial.outputNode=d,this._textureNode}dispose(){this._historyRenderTarget.dispose(),this._resolveRenderTarget.dispose(),this._previousDepthRenderTarget.dispose(),this._resolveMaterial.dispose(),this._seedMaterial.dispose()}};function nI(e,t){let r=1,i=0;for(;e>0;)r/=t,i+=r*(e%t),e=Math.floor(e/t);return i}var oI=Array.from({length:32},(e,t)=>[nI(t+1,2),nI(t+1,3)]),jne=(e,t,r,i)=>new Wne(Ju(e),t,r,i),cc=new Wa,gw=new fe,yw,Hne=class extends rr{static get type(){return"FSR1Node"}constructor(e,t=.2,r=!1){super("vec4"),this.textureNode=e,this.sharpness=Un(t),this.denoise=Un(r),this._easuRT=new er(1,1,{depthBuffer:!1,type:Dt}),this._easuRT.texture.name="FSR1Node.easu",this._rcasRT=new er(1,1,{depthBuffer:!1,type:Dt}),this._rcasRT.texture.name="FSR1Node.rcas",this._textureNode=Qu(this,this._rcasRT.texture),this._easuMaterial=null,this._rcasMaterial=null,this.updateBeforeType=ut.FRAME}setSize(e,t){this._easuRT.setSize(e,t),this._rcasRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e;yw=Es.resetRendererState(t,yw),t.getDrawingBufferSize(gw),this.setSize(gw.x,gw.y),t.setRenderTarget(this._easuRT),cc.material=this._easuMaterial,cc.name="FSR1 [ EASU Pass ]",cc.render(t),t.setRenderTarget(this._rcasRT),cc.material=this._rcasMaterial,cc.name="FSR1 [ RCAS Pass ]",cc.render(t),Es.restoreRendererState(t,yw)}getTextureNode(){return this._textureNode}setup(e){let t=this.textureNode,r=t.value,i=(c,m,g,y,b,v,S,T)=>{let w=S.sub(v).toConst(),N=v.sub(b).toConst(),C=S.sub(b).toConst(),R=_t($a(w),$a(N)).toConst(),E=f_($a(C).div(_t(R,yt(1/65536)))).toConst();c.x.addAssign(C.mul(g)),m.addAssign(E.mul(E).mul(g));let P=T.sub(v).toConst(),I=v.sub(y).toConst(),O=T.sub(y).toConst(),L=_t($a(P),$a(I)).toConst(),X=f_($a(O).div(_t(L,yt(1/65536)))).toConst();c.y.addAssign(O.mul(g)),m.addAssign(X.mul(X).mul(g))},s=(c,m,g,y,b,v,S,T)=>{let w=g.x.mul(y.x).add(g.y.mul(y.y)).toConst(),N=g.x.mul(y.y).negate().add(g.y.mul(y.x)).toConst(),C=w.mul(b.x).toConst(),R=N.mul(b.y).toConst(),E=Ar(C.mul(C).add(R.mul(R)),S).toConst(),P=E.mul(2/5).sub(1).toConst(),I=E.mul(v).sub(1).toConst(),O=P.mul(P).mul(25/16).sub(25/16-1).mul(I.mul(I)).toConst();c.addAssign(T.mul(O)),m.addAssign(O)},a=Ir(()=>{let c=_a(),m=nr(jy(t)),g=c.mul(m).sub(.5).toConst(),y=Zd(g).toConst(),b=wB(g).toConst(),v=ss(Eo(y.x),Eo(y.y)).toConst(),S=(Je,ct)=>Ps(r,v.add(ss(Je,ct))),T=S(0,-1),w=S(1,-1),N=S(-1,0),C=S(0,0),R=S(1,0),E=S(2,0),P=S(-1,1),I=S(0,1),O=S(1,1),L=S(2,1),X=S(0,2),z=S(1,2),H=Je=>Je.r.mul(.5).add(Je.g).add(Je.b.mul(.5)),ue=H(T),ne=H(w),re=H(N),ce=H(C),ge=H(R),ye=H(E),oe=H(P),Ae=H(I),Ie=H(O),Xe=H(L),at=H(X),W=H(z),j=nr(0).toVar(),G=yt(0).toVar(),ae=yt(1).sub(b.x).mul(yt(1).sub(b.y)).toConst(),be=b.x.mul(yt(1).sub(b.y)).toConst(),Be=yt(1).sub(b.x).mul(b.y).toConst(),$=b.x.mul(b.y).toConst();i(j,G,ae,ue,re,ce,ge,Ae),i(j,G,be,ne,ce,ge,ye,Ie),i(j,G,Be,ce,oe,Ae,Ie,at),i(j,G,$,ge,Ae,Ie,Xe,W);let U=j.x.mul(j.x).add(j.y.mul(j.y)).toConst(),J=U.lessThan(1/32768).toConst(),q=yt(1).div(CB(_t(U,yt(1/32768)))).toConst();j.x.assign(g_(J,yt(1),j.x)),j.mulAssign(g_(J,yt(1),q)),G.assign(G.mul(.5)),G.mulAssign(G);let se=j.x.mul(j.x).add(j.y.mul(j.y)).div(_t($a(j.x),$a(j.y))).toConst(),pe=nr(yt(1).add(se.sub(1).mul(G)),yt(1).sub(G.mul(.5))).toConst(),Te=yt(.5).add(yt(1/4-.04-.5).mul(G)).toConst(),we=yt(1).div(Te).toConst(),ie=hr(0).toVar(),V=yt(0).toVar();s(ie,V,nr(0,-1).sub(b),j,pe,Te,we,T),s(ie,V,nr(1,-1).sub(b),j,pe,Te,we,w),s(ie,V,nr(-1,0).sub(b),j,pe,Te,we,N),s(ie,V,nr(0,0).sub(b),j,pe,Te,we,C),s(ie,V,nr(1,0).sub(b),j,pe,Te,we,R),s(ie,V,nr(2,0).sub(b),j,pe,Te,we,E),s(ie,V,nr(-1,1).sub(b),j,pe,Te,we,P),s(ie,V,nr(0,1).sub(b),j,pe,Te,we,I),s(ie,V,nr(1,1).sub(b),j,pe,Te,we,O),s(ie,V,nr(2,1).sub(b),j,pe,Te,we,L),s(ie,V,nr(0,2).sub(b),j,pe,Te,we,X),s(ie,V,nr(1,2).sub(b),j,pe,Te,we,z),ie.divAssign(V);let Oe=Ar(Ar(C,R),Ar(I,O)).toConst(),tt=_t(_t(C,R),_t(I,O)).toConst();return SB(ie,Oe,tt)}),n=this._easuRT.texture,o=Ir(()=>{let c=_a(),m=nr(jy(Ps(n))),g=ss(Eo(Zd(c.x.mul(m.x))),Eo(Zd(c.y.mul(m.y)))).toConst(),y=Ps(n,g),b=Ps(n,g.add(ss(0,-1))),v=Ps(n,g.add(ss(-1,0))),S=Ps(n,g.add(ss(1,0))),T=Ps(n,g.add(ss(0,1))),w=Ae=>Ae.g.add(Ae.b.add(Ae.r).mul(.5)),N=w(b),C=w(v),R=w(y),E=w(S),P=w(T),I=c_(this.sharpness.negate()).toConst(),O=Ar(Ar(b.rgb,v.rgb),Ar(S.rgb,T.rgb)).toConst(),L=_t(_t(b.rgb,v.rgb),_t(S.rgb,T.rgb)).toConst(),X=yt(.25-1/16).toConst(),z=Ar(O,y.rgb).div(L.mul(4)).toConst(),H=Hy(1).sub(_t(L,y.rgb)).div(O.mul(4).sub(4)).toConst(),ue=_t(z.negate(),H).toConst(),ne=_t(X.negate(),Ar(_t(ue.r,_t(ue.g,ue.b)),yt(0))).mul(I).toConst(),re=N.add(C).add(E).add(P).mul(.25).sub(R).toConst(),ce=_t(_t(N,C),_t(R,_t(E,P))).sub(Ar(Ar(N,C),Ar(R,Ar(E,P)))).toConst(),ge=yt(1).sub($a(re).div(_t(ce,yt(1/65536))).saturate().mul(.5)).toConst(),ye=this.denoise.equal(!0).select(ne.mul(ge),ne).toConst(),oe=b.rgb.add(v.rgb).add(S.rgb).add(T.rgb).mul(ye).add(y.rgb).div(ye.mul(4).add(1)).toConst();return hr(oe,y.a)}),l=e.getSharedContext(),u=this._easuMaterial||(this._easuMaterial=new Pt);u.fragmentNode=a().context(l),u.name="FSR1_EASU",u.needsUpdate=!0;let h=this._rcasMaterial||(this._rcasMaterial=new Pt);h.fragmentNode=o().context(l),h.name="FSR1_RCAS",h.needsUpdate=!0;let d=e.getNodeProperties(this);return d.textureNode=t,this._textureNode}dispose(){this._easuRT.dispose(),this._rcasRT.dispose(),this._easuMaterial!==null&&this._easuMaterial.dispose(),this._rcasMaterial!==null&&this._rcasMaterial.dispose()}},Xne=(e,t,r)=>new Hne(Ju(e),t,r),xw=new Wa,vw=new fe,bw,$ne=class extends rr{static get type(){return"SharpenNode"}constructor(e,t=.2,r=!1){super("vec4"),this.isSharpenNode=!0,this.textureNode=e,this.sharpness=Un(t),this.denoise=Un(r),this._renderTarget=new er(1,1,{depthBuffer:!1,type:Dt}),this._renderTarget.texture.name="SharpenNode.output",this._textureNode=Qu(this,this._renderTarget.texture),this._material=null,this.updateBeforeType=ut.FRAME}setSize(e,t){this._renderTarget.setSize(e,t)}updateBefore(e){let{renderer:t}=e;bw=Es.resetRendererState(t,bw),t.getDrawingBufferSize(vw),this.setSize(vw.x,vw.y),t.setRenderTarget(this._renderTarget),xw.material=this._material,xw.name="Sharpen [ RCAS ]",xw.render(t),Es.restoreRendererState(t,bw)}getTextureNode(){return this._textureNode}setup(e){let t=this.textureNode,r=t.value,i=Ir(()=>{let o=_a(),l=jy(Ps(r)),u=ss(Eo(Zd(o.x.mul(l.x))),Eo(Zd(o.y.mul(l.y)))).toConst(),h=Ps(r,u),d=Ps(r,u.add(ss(0,-1))),c=Ps(r,u.add(ss(-1,0))),m=Ps(r,u.add(ss(1,0))),g=Ps(r,u.add(ss(0,1))),y=re=>re.g.add(re.b.add(re.r).mul(.5)),b=y(d),v=y(c),S=y(h),T=y(m),w=y(g),N=c_(this.sharpness.negate()).toConst(),C=Ar(Ar(d.rgb,c.rgb),Ar(m.rgb,g.rgb)).toConst(),R=_t(_t(d.rgb,c.rgb),_t(m.rgb,g.rgb)).toConst(),E=yt(.25-1/16).toConst(),P=Ar(C,h.rgb).div(R.mul(4)).toConst(),I=Hy(1).sub(_t(R,h.rgb)).div(C.mul(4).sub(4)).toConst(),O=_t(P.negate(),I).toConst(),L=_t(E.negate(),Ar(_t(O.r,_t(O.g,O.b)),yt(0))).mul(N).toConst(),X=b.add(v).add(T).add(w).mul(.25).sub(S).toConst(),z=_t(_t(b,v),_t(S,_t(T,w))).sub(Ar(Ar(b,v),Ar(S,Ar(T,w)))).toConst(),H=yt(1).sub($a(X).div(_t(z,yt(1/65536))).saturate().mul(.5)).toConst(),ue=this.denoise.equal(!0).select(L.mul(H),L).toConst(),ne=d.rgb.add(c.rgb).add(m.rgb).add(g.rgb).mul(ue).add(h.rgb).div(ue.mul(4).add(1)).toConst();return hr(ne,h.a)}),s=e.getSharedContext(),a=this._material||(this._material=new Pt);a.fragmentNode=i().context(s),a.name="Sharpen_RCAS",a.needsUpdate=!0;let n=e.getNodeProperties(this);return n.textureNode=t,this._textureNode}dispose(){this._renderTarget.dispose(),this._material!==null&&this._material.dispose()}},qne=(e,t,r)=>new $ne(Ju(e),t,r),km=new Wa,Tw,Yne=class extends rr{static get type(){return"GaussianBlurNode"}constructor(e,t=null,r=4,i={}){super("vec4"),this.textureNode=e,this.directionNode=t,this.sigma=r,this._invSize=Fr(new fe),this._passDirection=Fr(new fe),this._horizontalRT=new er(1,1,{depthBuffer:!1}),this._horizontalRT.texture.name="GaussianBlurNode.horizontal",this._verticalRT=new er(1,1,{depthBuffer:!1}),this._verticalRT.texture.name="GaussianBlurNode.vertical",this._textureNode=Qu(this,this._verticalRT.texture),this._textureNode.uvNode=e.uvNode,this._material=null,this.updateBeforeType=ut.FRAME,this.resolutionScale=i.resolutionScale||1,this.premultipliedAlpha=i.premultipliedAlpha||!1,this.isGaussianBlurNode=!0}setSize(e,t){e=Math.max(Math.round(e*this.resolutionScale),1),t=Math.max(Math.round(t*this.resolutionScale),1),this._invSize.value.set(1/e,1/t),this._horizontalRT.setSize(e,t),this._verticalRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e;Tw=Es.resetRendererState(t,Tw);let r=this.textureNode,i=r.value,s=r.value;km.material=this._material,this.setSize(i.image.width,i.image.height);let a=i.type;this._horizontalRT.texture.type=a,this._verticalRT.texture.type=a,t.setRenderTarget(this._horizontalRT),this._passDirection.value.set(1,0),km.name="Gaussian Blur [ Horizontal Pass ]",km.render(t),r.value=this._horizontalRT.texture,t.setRenderTarget(this._verticalRT),this._passDirection.value.set(0,1),km.name="Gaussian Blur [ Vertical Pass ]",km.render(t),r.value=s,Es.restoreRendererState(t,Tw)}getTextureNode(){return this._textureNode}setup(e){let t=this.textureNode,r=_a(),i=nr(this.directionNode||1),s,a;this.premultipliedAlpha?(s=u=>AB(t.sample(u)),a=u=>EB(u)):(s=u=>t.sample(u),a=u=>u);let n=Ir(()=>{let u=3+2*this.sigma,h=this._getCoefficients(u),d=this._invSize,c=i.mul(this._passDirection),m=hr(s(r).mul(h[0])).toVar();for(let g=1;gnew Yne(Ju(e),t,r,i),Qr=new Wa,Sw,Jne=class extends rr{static get type(){return"DepthOfFieldNode"}constructor(e,t,r,i,s){super("vec4"),this.textureNode=e,this.viewZNode=t,this.focusDistanceNode=r,this.focalLengthNode=i,this.bokehScaleNode=s,this._invSize=Fr(new fe),this._CoCRT=new er(1,1,{depthBuffer:!1,type:Dt,format:io,count:2}),this._CoCRT.textures[0].name="DepthOfField.NearField",this._CoCRT.textures[1].name="DepthOfField.FarField",this._CoCBlurredRT=new er(1,1,{depthBuffer:!1,type:Dt,format:io}),this._CoCBlurredRT.texture.name="DepthOfField.NearFieldBlurred",this._blur64RT=new er(1,1,{depthBuffer:!1,type:Dt}),this._blur64RT.texture.name="DepthOfField.Blur64",this._blur16NearRT=new er(1,1,{depthBuffer:!1,type:Dt}),this._blur16NearRT.texture.name="DepthOfField.Blur16Near",this._blur16FarRT=new er(1,1,{depthBuffer:!1,type:Dt}),this._blur16FarRT.texture.name="DepthOfField.Blur16Far",this._compositeRT=new er(1,1,{depthBuffer:!1,type:Dt}),this._compositeRT.texture.name="DepthOfField.Composite",this._CoCMaterial=new Pt,this._CoCBlurredMaterial=new Pt,this._blur64Material=new Pt,this._blur16Material=new Pt,this._compositeMaterial=new Pt,this._textureNode=Ri(this._compositeRT.texture),this._CoCTextureNode=Ri(this._CoCRT.texture),this._blur64TextureNode=Ri(this._blur64RT.texture),this._blur16NearTextureNode=Ri(this._blur16NearRT.texture),this._blur16FarTextureNode=Ri(this._blur16FarRT.texture),this.updateBeforeType=ut.FRAME}setSize(e,t){this._invSize.value.set(1/e,1/t),this._CoCRT.setSize(e,t),this._compositeRT.setSize(e,t);let r=Math.round(e/2),i=Math.round(t/2);this._CoCBlurredRT.setSize(r,i),this._blur64RT.setSize(r,i),this._blur16NearRT.setSize(r,i),this._blur16FarRT.setSize(r,i)}getTextureNode(){return this._textureNode}updateBefore(e){let{renderer:t}=e,r=this.textureNode.value;this.setSize(r.image.width,r.image.height),Sw=Es.resetRendererState(t,Sw),t.setClearColor(0,0),Qr.material=this._CoCMaterial,t.setRenderTarget(this._CoCRT),Qr.name="DoF [ CoC ]",Qr.render(t),this._CoCTextureNode.value=this._CoCRT.textures[0],Qr.material=this._CoCBlurredMaterial,t.setRenderTarget(this._CoCBlurredRT),Qr.name="DoF [ CoC Blur ]",Qr.render(t),this._CoCTextureNode.value=this._CoCBlurredRT.texture,Qr.material=this._blur64Material,t.setRenderTarget(this._blur64RT),Qr.name="DoF [ Blur64 Near ]",Qr.render(t),Qr.material=this._blur16Material,t.setRenderTarget(this._blur16NearRT),Qr.name="DoF [ Blur16 Near ]",Qr.render(t),this._CoCTextureNode.value=this._CoCRT.textures[1],Qr.material=this._blur64Material,t.setRenderTarget(this._blur64RT),Qr.name="DoF [ Blur64 Far ]",Qr.render(t),Qr.material=this._blur16Material,t.setRenderTarget(this._blur16FarRT),Qr.name="DoF [ Blur16 Far ]",Qr.render(t),Qr.material=this._compositeMaterial,t.setRenderTarget(this._compositeRT),Qr.name="DoF [ Composite ]",Qr.render(t),Es.restoreRendererState(t,Sw)}setup(e){let t=this._generateKernels(),r=mm("float"),i=mm("float"),s=m_(r,i),a=Ir(()=>{let d=this.viewZNode.negate().sub(this.focusDistanceNode),c=y_(0,this.focalLengthNode,d.abs());return r.assign(x_(d,0).mul(c)),i.assign(x_(0,d).mul(c)),yt(0)});this._CoCMaterial.colorNode=a().context(e.getSharedContext()),this._CoCMaterial.outputNode=s,this._CoCMaterial.needsUpdate=!0,this._CoCBlurredMaterial.colorNode=Zne(this._CoCTextureNode,1,2),this._CoCBlurredMaterial.needsUpdate=!0;let n=Jd(t.points64),o=Ir(()=>{let d=Hy(),c=_a(),m=this._CoCTextureNode.sample(c).r,g=this._invSize.mul(this.bokehScaleNode).mul(m);return Gy(64,({i:y})=>{let b=c.add(g.mul(n.element(y))),v=this.textureNode.sample(b);d.addAssign(v.rgb)}),d.divAssign(64),hr(d,m)});this._blur64Material.fragmentNode=o().context(e.getSharedContext()),this._blur64Material.needsUpdate=!0;let l=Jd(t.points16),u=Ir(()=>{let d=_a(),c=this._blur64TextureNode.sample(d).toVar(),m=c.rgb,g=c.a,y=this._invSize.mul(this.bokehScaleNode).mul(g);return Gy(16,({i:b})=>{let v=d.add(y.mul(l.element(b))),S=this._blur64TextureNode.sample(v);m.assign(_t(S.rgb,m))}),hr(m,g)});this._blur16Material.fragmentNode=u().context(e.getSharedContext()),this._blur16Material.needsUpdate=!0;let h=Ir(()=>{let d=_a(),c=this._blur16NearTextureNode.sample(d),m=this._blur16FarTextureNode.sample(d),g=this.textureNode.sample(d),y=Ar(c.a,.5).mul(2),b=Ar(m.a,.5).mul(2),v=hr(0,0,0,1).toVar();return v.rgb=Dl(g.rgb,m.rgb,b),v.rgb=Dl(v.rgb,c.rgb,y),v});return this._compositeMaterial.fragmentNode=h().context(e.getSharedContext()),this._compositeMaterial.needsUpdate=!0,this._textureNode}_generateKernels(){let e=2.39996323,t=80,r=[],i=[],s=0,a=0;for(let n=0;nnew Jne(Ju(e),Un(t),Un(r),Un(i),Un(s)),Ja=new Wa,Kne=new fe,eoe=new fe(1,0),toe=new fe(0,1),_w,roe=Ir(({input:e,threshold:t,smoothWidth:r})=>{let i=kl(e.rgb),s=y_(t,t.add(r),i);return Dl(hr(0),e,s)}),ioe=class extends rr{static get type(){return"BloomNode"}constructor(e,t=1,r=0,i=0){super("vec4"),this.inputNode=e,this.strength=t.isNode?t:Fr(t),this.radius=r.isNode?r:Fr(r),this.threshold=i.isNode?i:Fr(i),this.smoothWidth=Fr(.01),this._resolutionScale=.5,this.highPassFn=roe,this._renderTargetsHorizontal=[],this._renderTargetsVertical=[],this._nMips=5,this._renderTargetBright=new er(1,1,{depthBuffer:!1,type:Dt}),this._renderTargetBright.texture.name="UnrealBloomPass.bright",this._renderTargetBright.texture.generateMipmaps=!1;for(let s=0;s{let l=yt(1.2).sub(n);return Dl(n,l,o)}).setLayout({name:"lerpBloomFactor",type:"float",inputs:[{name:"factor",type:"float"},{name:"radius",type:"float"}]}),a=Ir(()=>{let n=s(r.element(0),this.radius).mul(hr(i.element(0),1)).mul(this._textureNodeBlur0),o=s(r.element(1),this.radius).mul(hr(i.element(1),1)).mul(this._textureNodeBlur1),l=s(r.element(2),this.radius).mul(hr(i.element(2),1)).mul(this._textureNodeBlur2),u=s(r.element(3),this.radius).mul(hr(i.element(3),1)).mul(this._textureNodeBlur3),h=s(r.element(4),this.radius).mul(hr(i.element(4),1)).mul(this._textureNodeBlur4);return n.add(o).add(l).add(u).add(h).mul(this.strength)});return this._compositeMaterial=this._compositeMaterial||new Pt,this._compositeMaterial.fragmentNode=a().context(e.getSharedContext()),this._compositeMaterial.name="Bloom_comp",this._compositeMaterial.needsUpdate=!0,this._textureOutput}dispose(){for(let e=0;es.sample(c),h=Ir(()=>{let c=u(l).rgb.mul(a.element(0)).toVar();return Gy({start:Eo(1),end:Eo(t),type:"int",condition:"<"},({i:m})=>{let g=yt(m),y=a.element(m),b=o.mul(n).mul(g),v=u(l.add(b)).rgb,S=u(l.sub(b)).rgb;c.addAssign(Wy(v,S).mul(y))}),hr(c,1)}),d=new Pt;return d.fragmentNode=h().context(e.getSharedContext()),d.name="Bloom_separable",d.needsUpdate=!0,d.colorTexture=s,d.direction=o,d.invSize=n,d}},soe=(e,t,r,i)=>new ioe(Un(e),t,r,i),pc={NONE:"none",FRAME:"frame",RENDER:"render",OBJECT:"object"},aoe=["fragment","vertex"],j0e=[...aoe,"compute"],j1=["x","y","z","w"],lI=0,uI=1,hI=2,dI=3,cI=4,pI=5,mI=6,fI=7,noe="",Qa="srgb",gI="srgb-linear",yI="linear",ww="srgb",uh=2e3,Mw=2001,xI={},H1=null;function vI(e){let t=e[0];if(typeof t=="string"&&t.startsWith("TSL:")){let r=e[1];r&&r.isStackTrace?e[0]+=" "+r.getLocation():e[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return e}function ns(...e){e=vI(e);let t="THREE."+e.shift();if(H1)H1("warn",t,...e);else{let r=e[0];r&&r.isStackTrace?console.warn(r.getError(t)):console.warn(t,...e)}}function Uo(...e){e=vI(e);let t="THREE."+e.shift();if(H1)H1("error",t,...e);else{let r=e[0];r&&r.isStackTrace?console.error(r.getError(t)):console.error(t,...e)}}function Dm(...e){let t=e.join(" ");t in xI||(xI[t]=!0,ns(...e))}var H0e={[lI]:uI,[hI]:mI,[cI]:fI,[dI]:pI,[uI]:lI,[mI]:hI,[fI]:cI,[pI]:dI},os=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],bI=1234567,TI=Math.PI/180,SI=180/Math.PI;function ooe(){let e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,r=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(os[e&255]+os[e>>8&255]+os[e>>16&255]+os[e>>24&255]+"-"+os[t&255]+os[t>>8&255]+"-"+os[t>>16&15|64]+os[t>>24&255]+"-"+os[r&63|128]+os[r>>8&255]+"-"+os[r>>16&255]+os[r>>24&255]+os[i&255]+os[i>>8&255]+os[i>>16&255]+os[i>>24&255]).toLowerCase()}function sr(e,t,r){return Math.max(t,Math.min(r,e))}function Nw(e,t){return(e%t+t)%t}function loe(e,t,r,i,s){return i+(e-t)*(s-i)/(r-t)}function uoe(e,t,r){return e!==t?(r-e)/(t-e):0}function Om(e,t,r){return(1-r)*e+r*t}function hoe(e,t,r,i){return Om(e,t,1-Math.exp(-r*i))}function doe(e,t=1){return t-Math.abs(Nw(e,t*2)-t)}function coe(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t),e*e*(3-2*e))}function poe(e,t,r){return e<=t?0:e>=r?1:(e=(e-t)/(r-t),e*e*e*(e*(e*6-15)+10))}function moe(e,t){return e+Math.floor(Math.random()*(t-e+1))}function foe(e,t){return e+Math.random()*(t-e)}function goe(e){return e*(.5-Math.random())}function yoe(e){e!==void 0&&(bI=e);let t=bI+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function xoe(e){return e*TI}function voe(e){return e*SI}function boe(e){return(e&e-1)===0&&e!==0}function Toe(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function Soe(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function _oe(e,t,r,i,s){let a=Math.cos,n=Math.sin,o=a(r/2),l=n(r/2),u=a((t+i)/2),h=n((t+i)/2),d=a((t-i)/2),c=n((t-i)/2),m=a((i-t)/2),g=n((i-t)/2);switch(s){case"XYX":e.set(o*h,l*d,l*c,o*u);break;case"YZY":e.set(l*c,o*h,l*d,o*u);break;case"ZXZ":e.set(l*d,l*c,o*h,o*u);break;case"XZX":e.set(o*h,l*g,l*m,o*u);break;case"YXY":e.set(l*m,o*h,l*g,o*u);break;case"ZYZ":e.set(l*g,l*m,o*h,o*u);break;default:ns("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function woe(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("THREE.MathUtils: Invalid component type.")}}function Moe(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(e*4294967295);case Uint16Array:return Math.round(e*65535);case Uint8Array:return Math.round(e*255);case Int32Array:return Math.round(e*2147483647);case Int16Array:return Math.round(e*32767);case Int8Array:return Math.round(e*127);default:throw new Error("THREE.MathUtils: Invalid component type.")}}var Noe={DEG2RAD:TI,RAD2DEG:SI,generateUUID:ooe,clamp:sr,euclideanModulo:Nw,mapLinear:loe,inverseLerp:uoe,lerp:Om,damp:hoe,pingpong:doe,smoothstep:coe,smootherstep:poe,randInt:moe,randFloat:foe,randFloatSpread:goe,seededRandom:yoe,degToRad:xoe,radToDeg:voe,isPowerOfTwo:boe,ceilPowerOfTwo:Toe,floorPowerOfTwo:Soe,setQuaternionFromProperEuler:_oe,normalize:Moe,denormalize:woe},X1=class nD{static{nD.prototype.isMatrix3=!0}constructor(t,r,i,s,a,n,o,l,u){this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,r,i,s,a,n,o,l,u)}set(t,r,i,s,a,n,o,l,u){let h=this.elements;return h[0]=t,h[1]=s,h[2]=o,h[3]=r,h[4]=a,h[5]=l,h[6]=i,h[7]=n,h[8]=u,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let r=this.elements,i=t.elements;return r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7],r[8]=i[8],this}extractBasis(t,r,i){return t.setFromMatrix3Column(this,0),r.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let r=t.elements;return this.set(r[0],r[4],r[8],r[1],r[5],r[9],r[2],r[6],r[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,r){let i=t.elements,s=r.elements,a=this.elements,n=i[0],o=i[3],l=i[6],u=i[1],h=i[4],d=i[7],c=i[2],m=i[5],g=i[8],y=s[0],b=s[3],v=s[6],S=s[1],T=s[4],w=s[7],N=s[2],C=s[5],R=s[8];return a[0]=n*y+o*S+l*N,a[3]=n*b+o*T+l*C,a[6]=n*v+o*w+l*R,a[1]=u*y+h*S+d*N,a[4]=u*b+h*T+d*C,a[7]=u*v+h*w+d*R,a[2]=c*y+m*S+g*N,a[5]=c*b+m*T+g*C,a[8]=c*v+m*w+g*R,this}multiplyScalar(t){let r=this.elements;return r[0]*=t,r[3]*=t,r[6]*=t,r[1]*=t,r[4]*=t,r[7]*=t,r[2]*=t,r[5]*=t,r[8]*=t,this}determinant(){let t=this.elements,r=t[0],i=t[1],s=t[2],a=t[3],n=t[4],o=t[5],l=t[6],u=t[7],h=t[8];return r*n*h-r*o*u-i*a*h+i*o*l+s*a*u-s*n*l}invert(){let t=this.elements,r=t[0],i=t[1],s=t[2],a=t[3],n=t[4],o=t[5],l=t[6],u=t[7],h=t[8],d=h*n-o*u,c=o*l-h*a,m=u*a-n*l,g=r*d+i*c+s*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);let y=1/g;return t[0]=d*y,t[1]=(s*u-h*i)*y,t[2]=(o*i-s*n)*y,t[3]=c*y,t[4]=(h*r-s*l)*y,t[5]=(s*a-o*r)*y,t[6]=m*y,t[7]=(i*l-u*r)*y,t[8]=(n*r-i*a)*y,this}transpose(){let t,r=this.elements;return t=r[1],r[1]=r[3],r[3]=t,t=r[2],r[2]=r[6],r[6]=t,t=r[5],r[5]=r[7],r[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let r=this.elements;return t[0]=r[0],t[1]=r[3],t[2]=r[6],t[3]=r[1],t[4]=r[4],t[5]=r[7],t[6]=r[2],t[7]=r[5],t[8]=r[8],this}setUvTransform(t,r,i,s,a,n,o){let l=Math.cos(a),u=Math.sin(a);return this.set(i*l,i*u,-i*(l*n+u*o)+n+t,-s*u,s*l,-s*(-u*n+l*o)+o+r,0,0,1),this}scale(t,r){return Dm("Matrix3: .scale() is deprecated. Use .makeScale() instead."),this.premultiply(Aw.makeScale(t,r)),this}rotate(t){return Dm("Matrix3: .rotate() is deprecated. Use .makeRotation() instead."),this.premultiply(Aw.makeRotation(-t)),this}translate(t,r){return Dm("Matrix3: .translate() is deprecated. Use .makeTranslation() instead."),this.premultiply(Aw.makeTranslation(t,r)),this}makeTranslation(t,r){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,r,0,0,1),this}makeRotation(t){let r=Math.cos(t),i=Math.sin(t);return this.set(r,-i,0,i,r,0,0,0,1),this}makeScale(t,r){return this.set(t,0,0,0,r,0,0,0,1),this}equals(t){let r=this.elements,i=t.elements;for(let s=0;s<9;s++)if(r[s]!==i[s])return!1;return!0}fromArray(t,r=0){for(let i=0;i<9;i++)this.elements[i]=t[i+r];return this}toArray(t=[],r=0){let i=this.elements;return t[r]=i[0],t[r+1]=i[1],t[r+2]=i[2],t[r+3]=i[3],t[r+4]=i[4],t[r+5]=i[5],t[r+6]=i[6],t[r+7]=i[7],t[r+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}},Aw=new X1,_I=new X1().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),wI=new X1().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Aoe(){let e={enabled:!0,workingColorSpace:gI,spaces:{},convert:function(s,a,n){return this.enabled===!1||a===n||!a||!n||(this.spaces[a].transfer===ww&&(s.r=mc(s.r),s.g=mc(s.g),s.b=mc(s.b)),this.spaces[a].primaries!==this.spaces[n].primaries&&(s.applyMatrix3(this.spaces[a].toXYZ),s.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===ww&&(s.r=fc(s.r),s.g=fc(s.g),s.b=fc(s.b))),s},workingToColorSpace:function(s,a){return this.convert(s,this.workingColorSpace,a)},colorSpaceToWorking:function(s,a){return this.convert(s,a,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===noe?yI:this.spaces[s].transfer},getToneMappingMode:function(s){return this.spaces[s].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(s,a=this.workingColorSpace){return s.fromArray(this.spaces[a].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,a,n){return s.copy(this.spaces[a].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(s,a){return Dm("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),e.workingToColorSpace(s,a)},toWorkingColorSpace:function(s,a){return Dm("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),e.colorSpaceToWorking(s,a)}},t=[.64,.33,.3,.6,.15,.06],r=[.2126,.7152,.0722],i=[.3127,.329];return e.define({[gI]:{primaries:t,whitePoint:i,transfer:yI,toXYZ:_I,fromXYZ:wI,luminanceCoefficients:r,workingColorSpaceConfig:{unpackColorSpace:Qa},outputColorSpaceConfig:{drawingBufferColorSpace:Qa}},[Qa]:{primaries:t,whitePoint:i,transfer:ww,toXYZ:_I,fromXYZ:wI,luminanceCoefficients:r,outputColorSpaceConfig:{drawingBufferColorSpace:Qa}}}),e}var Ka=Aoe();function mc(e){return e<.04045?e*.0773993808:Math.pow(e*.9478672986+.0521327014,2.4)}function fc(e){return e<.0031308?e*12.92:1.055*Math.pow(e,.41666)-.055}var MI={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Yl={h:0,s:0,l:0},$1={h:0,s:0,l:0};function Cw(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?e+(t-e)*6*r:r<.5?t:r<.6666666666666666?e+(t-e)*6*(.6666666666666666-r):e}var Rw=class{constructor(e,t,r){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,r)}set(e,t,r){if(t===void 0&&r===void 0){let i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,t,r);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Qa){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ka.colorSpaceToWorking(this,t),this}setRGB(e,t,r,i=Ka.workingColorSpace){return this.r=e,this.g=t,this.b=r,Ka.colorSpaceToWorking(this,i),this}setHSL(e,t,r,i=Ka.workingColorSpace){if(e=Nw(e,1),t=sr(t,0,1),r=sr(r,0,1),t===0)this.r=this.g=this.b=r;else{let s=r<=.5?r*(1+t):r+t-r*t,a=2*r-s;this.r=Cw(a,s,e+1/3),this.g=Cw(a,s,e),this.b=Cw(a,s,e-1/3)}return Ka.colorSpaceToWorking(this,i),this}setStyle(e,t=Qa){function r(s){s!==void 0&&parseFloat(s)<1&&ns("Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,a=i[1],n=i[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return r(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return r(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return r(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:ns("Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=i[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);ns("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Qa){let r=MI[e.toLowerCase()];return r!==void 0?this.setHex(r,t):ns("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=mc(e.r),this.g=mc(e.g),this.b=mc(e.b),this}copyLinearToSRGB(e){return this.r=fc(e.r),this.g=fc(e.g),this.b=fc(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Qa){return Ka.workingToColorSpace(ls.copy(this),e),Math.round(sr(ls.r*255,0,255))*65536+Math.round(sr(ls.g*255,0,255))*256+Math.round(sr(ls.b*255,0,255))}getHexString(e=Qa){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ka.workingColorSpace){Ka.workingToColorSpace(ls.copy(this),t);let r=ls.r,i=ls.g,s=ls.b,a=Math.max(r,i,s),n=Math.min(r,i,s),o,l,u=(n+a)/2;if(n===a)o=0,l=0;else{let h=a-n;switch(l=u<=.5?h/(a+n):h/(2-a-n),a){case r:o=(i-s)/h+(i0){let c=.5/Math.sqrt(d+1);this._w=.25/c,this._x=(u-o)*c,this._y=(s-l)*c,this._z=(a-i)*c}else if(r>n&&r>h){let c=2*Math.sqrt(1+r-n-h);this._w=(u-o)/c,this._x=.25*c,this._y=(i+a)/c,this._z=(s+l)/c}else if(n>h){let c=2*Math.sqrt(1+n-r-h);this._w=(s-l)/c,this._x=(i+a)/c,this._y=.25*c,this._z=(o+u)/c}else{let c=2*Math.sqrt(1+h-r-n);this._w=(a-i)/c,this._x=(s+l)/c,this._y=(o+u)/c,this._z=.25*c}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let r=e.dot(t)+1;return r<1e-8?(r=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=r):(this._x=0,this._y=-e.z,this._z=e.y,this._w=r)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=r),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(sr(this.dot(e),-1,1)))}rotateTowards(e,t){let r=this.angleTo(e);if(r===0)return this;let i=Math.min(1,t/r);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let r=e._x,i=e._y,s=e._z,a=e._w,n=t._x,o=t._y,l=t._z,u=t._w;return this._x=r*u+a*n+i*l-s*o,this._y=i*u+a*o+s*n-r*l,this._z=s*u+a*l+r*o-i*n,this._w=a*u-r*n-i*o-s*l,this._onChangeCallback(),this}slerp(e,t){let r=e._x,i=e._y,s=e._z,a=e._w,n=this.dot(e);n<0&&(r=-r,i=-i,s=-s,a=-a,n=-n);let o=1-t;if(n<.9995){let l=Math.acos(n),u=Math.sin(l);o=Math.sin(o*l)/u,t=Math.sin(t*l)/u,this._x=this._x*o+r*t,this._y=this._y*o+i*t,this._z=this._z*o+s*t,this._w=this._w*o+a*t,this._onChangeCallback()}else this._x=this._x*o+r*t,this._y=this._y*o+i*t,this._z=this._z*o+s*t,this._w=this._w*o+a*t,this.normalize();return this}slerpQuaternions(e,t,r){return this.copy(e).slerp(t,r)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),r=Math.random(),i=Math.sqrt(1-r),s=Math.sqrt(r);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},Zl=class lD{static{lD.prototype.isVector3=!0}constructor(t=0,r=0,i=0){this.x=t,this.y=r,this.z=i}set(t,r,i){return i===void 0&&(i=this.z),this.x=t,this.y=r,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,r){switch(t){case 0:this.x=r;break;case 1:this.y=r;break;case 2:this.z=r;break;default:throw new Error("THREE.Vector3: index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("THREE.Vector3: index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,r){return this.x=t.x+r.x,this.y=t.y+r.y,this.z=t.z+r.z,this}addScaledVector(t,r){return this.x+=t.x*r,this.y+=t.y*r,this.z+=t.z*r,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,r){return this.x=t.x-r.x,this.y=t.y-r.y,this.z=t.z-r.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,r){return this.x=t.x*r.x,this.y=t.y*r.y,this.z=t.z*r.z,this}applyEuler(t){return this.applyQuaternion(NI.setFromEuler(t))}applyAxisAngle(t,r){return this.applyQuaternion(NI.setFromAxisAngle(t,r))}applyMatrix3(t){let r=this.x,i=this.y,s=this.z,a=t.elements;return this.x=a[0]*r+a[3]*i+a[6]*s,this.y=a[1]*r+a[4]*i+a[7]*s,this.z=a[2]*r+a[5]*i+a[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let r=this.x,i=this.y,s=this.z,a=t.elements,n=1/(a[3]*r+a[7]*i+a[11]*s+a[15]);return this.x=(a[0]*r+a[4]*i+a[8]*s+a[12])*n,this.y=(a[1]*r+a[5]*i+a[9]*s+a[13])*n,this.z=(a[2]*r+a[6]*i+a[10]*s+a[14])*n,this}applyQuaternion(t){let r=this.x,i=this.y,s=this.z,a=t.x,n=t.y,o=t.z,l=t.w,u=2*(n*s-o*i),h=2*(o*r-a*s),d=2*(a*i-n*r);return this.x=r+l*u+n*d-o*h,this.y=i+l*h+o*u-a*d,this.z=s+l*d+a*h-n*u,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let r=this.x,i=this.y,s=this.z,a=t.elements;return this.x=a[0]*r+a[4]*i+a[8]*s,this.y=a[1]*r+a[5]*i+a[9]*s,this.z=a[2]*r+a[6]*i+a[10]*s,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,r){return this.x=sr(this.x,t.x,r.x),this.y=sr(this.y,t.y,r.y),this.z=sr(this.z,t.z,r.z),this}clampScalar(t,r){return this.x=sr(this.x,t,r),this.y=sr(this.y,t,r),this.z=sr(this.z,t,r),this}clampLength(t,r){let i=this.length();return this.divideScalar(i||1).multiplyScalar(sr(i,t,r))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,r){return this.x+=(t.x-this.x)*r,this.y+=(t.y-this.y)*r,this.z+=(t.z-this.z)*r,this}lerpVectors(t,r,i){return this.x=t.x+(r.x-t.x)*i,this.y=t.y+(r.y-t.y)*i,this.z=t.z+(r.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,r){let i=t.x,s=t.y,a=t.z,n=r.x,o=r.y,l=r.z;return this.x=s*l-a*o,this.y=a*n-i*l,this.z=i*o-s*n,this}projectOnVector(t){let r=t.lengthSq();if(r===0)return this.set(0,0,0);let i=t.dot(this)/r;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return Ew.copy(this).projectOnVector(t),this.sub(Ew)}reflect(t){return this.sub(Ew.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let r=Math.sqrt(this.lengthSq()*t.lengthSq());if(r===0)return Math.PI/2;let i=this.dot(t)/r;return Math.acos(sr(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let r=this.x-t.x,i=this.y-t.y,s=this.z-t.z;return r*r+i*i+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,r,i){let s=Math.sin(r)*t;return this.x=s*Math.sin(i),this.y=Math.cos(r)*t,this.z=s*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,r,i){return this.x=t*Math.sin(r),this.y=i,this.z=t*Math.cos(r),this}setFromMatrixPosition(t){let r=t.elements;return this.x=r[12],this.y=r[13],this.z=r[14],this}setFromMatrixScale(t){let r=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=r,this.y=i,this.z=s,this}setFromMatrixColumn(t,r){return this.fromArray(t.elements,r*4)}setFromMatrix3Column(t,r){return this.fromArray(t.elements,r*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,r=0){return this.x=t[r],this.y=t[r+1],this.z=t[r+2],this}toArray(t=[],r=0){return t[r]=this.x,t[r+1]=this.y,t[r+2]=this.z,t}fromBufferAttribute(t,r){return this.x=t.getX(r),this.y=t.getY(r),this.z=t.getZ(r),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=Math.random()*Math.PI*2,r=Math.random()*2-1,i=Math.sqrt(1-r*r);return this.x=i*Math.cos(t),this.y=r,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},Ew=new Zl,NI=new Roe,AI=class dM{static{dM.prototype.isMatrix4=!0}constructor(t,r,i,s,a,n,o,l,u,h,d,c,m,g,y,b){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,r,i,s,a,n,o,l,u,h,d,c,m,g,y,b)}set(t,r,i,s,a,n,o,l,u,h,d,c,m,g,y,b){let v=this.elements;return v[0]=t,v[4]=r,v[8]=i,v[12]=s,v[1]=a,v[5]=n,v[9]=o,v[13]=l,v[2]=u,v[6]=h,v[10]=d,v[14]=c,v[3]=m,v[7]=g,v[11]=y,v[15]=b,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new dM().fromArray(this.elements)}copy(t){let r=this.elements,i=t.elements;return r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7],r[8]=i[8],r[9]=i[9],r[10]=i[10],r[11]=i[11],r[12]=i[12],r[13]=i[13],r[14]=i[14],r[15]=i[15],this}copyPosition(t){let r=this.elements,i=t.elements;return r[12]=i[12],r[13]=i[13],r[14]=i[14],this}setFromMatrix3(t){let r=t.elements;return this.set(r[0],r[3],r[6],0,r[1],r[4],r[7],0,r[2],r[5],r[8],0,0,0,0,1),this}extractBasis(t,r,i){return this.determinantAffine()===0?(t.set(1,0,0),r.set(0,1,0),i.set(0,0,1),this):(t.setFromMatrixColumn(this,0),r.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this)}makeBasis(t,r,i){return this.set(t.x,r.x,i.x,0,t.y,r.y,i.y,0,t.z,r.z,i.z,0,0,0,0,1),this}extractRotation(t){if(t.determinantAffine()===0)return this.identity();let r=this.elements,i=t.elements,s=1/gc.setFromMatrixColumn(t,0).length(),a=1/gc.setFromMatrixColumn(t,1).length(),n=1/gc.setFromMatrixColumn(t,2).length();return r[0]=i[0]*s,r[1]=i[1]*s,r[2]=i[2]*s,r[3]=0,r[4]=i[4]*a,r[5]=i[5]*a,r[6]=i[6]*a,r[7]=0,r[8]=i[8]*n,r[9]=i[9]*n,r[10]=i[10]*n,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,this}makeRotationFromEuler(t){let r=this.elements,i=t.x,s=t.y,a=t.z,n=Math.cos(i),o=Math.sin(i),l=Math.cos(s),u=Math.sin(s),h=Math.cos(a),d=Math.sin(a);if(t.order==="XYZ"){let c=n*h,m=n*d,g=o*h,y=o*d;r[0]=l*h,r[4]=-l*d,r[8]=u,r[1]=m+g*u,r[5]=c-y*u,r[9]=-o*l,r[2]=y-c*u,r[6]=g+m*u,r[10]=n*l}else if(t.order==="YXZ"){let c=l*h,m=l*d,g=u*h,y=u*d;r[0]=c+y*o,r[4]=g*o-m,r[8]=n*u,r[1]=n*d,r[5]=n*h,r[9]=-o,r[2]=m*o-g,r[6]=y+c*o,r[10]=n*l}else if(t.order==="ZXY"){let c=l*h,m=l*d,g=u*h,y=u*d;r[0]=c-y*o,r[4]=-n*d,r[8]=g+m*o,r[1]=m+g*o,r[5]=n*h,r[9]=y-c*o,r[2]=-n*u,r[6]=o,r[10]=n*l}else if(t.order==="ZYX"){let c=n*h,m=n*d,g=o*h,y=o*d;r[0]=l*h,r[4]=g*u-m,r[8]=c*u+y,r[1]=l*d,r[5]=y*u+c,r[9]=m*u-g,r[2]=-u,r[6]=o*l,r[10]=n*l}else if(t.order==="YZX"){let c=n*l,m=n*u,g=o*l,y=o*u;r[0]=l*h,r[4]=y-c*d,r[8]=g*d+m,r[1]=d,r[5]=n*h,r[9]=-o*h,r[2]=-u*h,r[6]=m*d+g,r[10]=c-y*d}else if(t.order==="XZY"){let c=n*l,m=n*u,g=o*l,y=o*u;r[0]=l*h,r[4]=-d,r[8]=u*h,r[1]=c*d+y,r[5]=n*h,r[9]=m*d-g,r[2]=g*d-m,r[6]=o*h,r[10]=y*d+c}return r[3]=0,r[7]=0,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Eoe,t,Poe)}lookAt(t,r,i){let s=this.elements;return ra.subVectors(t,r),ra.lengthSq()===0&&(ra.z=1),ra.normalize(),Jl.crossVectors(i,ra),Jl.lengthSq()===0&&(Math.abs(i.z)===1?ra.x+=1e-4:ra.z+=1e-4,ra.normalize(),Jl.crossVectors(i,ra)),Jl.normalize(),q1.crossVectors(ra,Jl),s[0]=Jl.x,s[4]=q1.x,s[8]=ra.x,s[1]=Jl.y,s[5]=q1.y,s[9]=ra.y,s[2]=Jl.z,s[6]=q1.z,s[10]=ra.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,r){let i=t.elements,s=r.elements,a=this.elements,n=i[0],o=i[4],l=i[8],u=i[12],h=i[1],d=i[5],c=i[9],m=i[13],g=i[2],y=i[6],b=i[10],v=i[14],S=i[3],T=i[7],w=i[11],N=i[15],C=s[0],R=s[4],E=s[8],P=s[12],I=s[1],O=s[5],L=s[9],X=s[13],z=s[2],H=s[6],ue=s[10],ne=s[14],re=s[3],ce=s[7],ge=s[11],ye=s[15];return a[0]=n*C+o*I+l*z+u*re,a[4]=n*R+o*O+l*H+u*ce,a[8]=n*E+o*L+l*ue+u*ge,a[12]=n*P+o*X+l*ne+u*ye,a[1]=h*C+d*I+c*z+m*re,a[5]=h*R+d*O+c*H+m*ce,a[9]=h*E+d*L+c*ue+m*ge,a[13]=h*P+d*X+c*ne+m*ye,a[2]=g*C+y*I+b*z+v*re,a[6]=g*R+y*O+b*H+v*ce,a[10]=g*E+y*L+b*ue+v*ge,a[14]=g*P+y*X+b*ne+v*ye,a[3]=S*C+T*I+w*z+N*re,a[7]=S*R+T*O+w*H+N*ce,a[11]=S*E+T*L+w*ue+N*ge,a[15]=S*P+T*X+w*ne+N*ye,this}multiplyScalar(t){let r=this.elements;return r[0]*=t,r[4]*=t,r[8]*=t,r[12]*=t,r[1]*=t,r[5]*=t,r[9]*=t,r[13]*=t,r[2]*=t,r[6]*=t,r[10]*=t,r[14]*=t,r[3]*=t,r[7]*=t,r[11]*=t,r[15]*=t,this}determinant(){let t=this.elements,r=t[0],i=t[4],s=t[8],a=t[12],n=t[1],o=t[5],l=t[9],u=t[13],h=t[2],d=t[6],c=t[10],m=t[14],g=t[3],y=t[7],b=t[11],v=t[15],S=l*m-u*c,T=o*m-u*d,w=o*c-l*d,N=n*m-u*h,C=n*c-l*h,R=n*d-o*h;return r*(y*S-b*T+v*w)-i*(g*S-b*N+v*C)+s*(g*T-y*N+v*R)-a*(g*w-y*C+b*R)}determinantAffine(){let t=this.elements,r=t[0],i=t[4],s=t[8],a=t[1],n=t[5],o=t[9],l=t[2],u=t[6],h=t[10];return r*(n*h-o*u)-i*(a*h-o*l)+s*(a*u-n*l)}transpose(){let t=this.elements,r;return r=t[1],t[1]=t[4],t[4]=r,r=t[2],t[2]=t[8],t[8]=r,r=t[6],t[6]=t[9],t[9]=r,r=t[3],t[3]=t[12],t[12]=r,r=t[7],t[7]=t[13],t[13]=r,r=t[11],t[11]=t[14],t[14]=r,this}setPosition(t,r,i){let s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=r,s[14]=i),this}invert(){let t=this.elements,r=t[0],i=t[1],s=t[2],a=t[3],n=t[4],o=t[5],l=t[6],u=t[7],h=t[8],d=t[9],c=t[10],m=t[11],g=t[12],y=t[13],b=t[14],v=t[15],S=r*o-i*n,T=r*l-s*n,w=r*u-a*n,N=i*l-s*o,C=i*u-a*o,R=s*u-a*l,E=h*y-d*g,P=h*b-c*g,I=h*v-m*g,O=d*b-c*y,L=d*v-m*y,X=c*v-m*b,z=S*X-T*L+w*O+N*I-C*P+R*E;if(z===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let H=1/z;return t[0]=(o*X-l*L+u*O)*H,t[1]=(s*L-i*X-a*O)*H,t[2]=(y*R-b*C+v*N)*H,t[3]=(c*C-d*R-m*N)*H,t[4]=(l*I-n*X-u*P)*H,t[5]=(r*X-s*I+a*P)*H,t[6]=(b*w-g*R-v*T)*H,t[7]=(h*R-c*w+m*T)*H,t[8]=(n*L-o*I+u*E)*H,t[9]=(i*I-r*L-a*E)*H,t[10]=(g*C-y*w+v*S)*H,t[11]=(d*w-h*C-m*S)*H,t[12]=(o*P-n*O-l*E)*H,t[13]=(r*O-i*P+s*E)*H,t[14]=(y*T-g*N-b*S)*H,t[15]=(h*N-d*T+c*S)*H,this}scale(t){let r=this.elements,i=t.x,s=t.y,a=t.z;return r[0]*=i,r[4]*=s,r[8]*=a,r[1]*=i,r[5]*=s,r[9]*=a,r[2]*=i,r[6]*=s,r[10]*=a,r[3]*=i,r[7]*=s,r[11]*=a,this}getMaxScaleOnAxis(){let t=this.elements,r=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(r,i,s))}makeTranslation(t,r,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,r,0,0,1,i,0,0,0,1),this}makeRotationX(t){let r=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,r,-i,0,0,i,r,0,0,0,0,1),this}makeRotationY(t){let r=Math.cos(t),i=Math.sin(t);return this.set(r,0,i,0,0,1,0,0,-i,0,r,0,0,0,0,1),this}makeRotationZ(t){let r=Math.cos(t),i=Math.sin(t);return this.set(r,-i,0,0,i,r,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,r){let i=Math.cos(r),s=Math.sin(r),a=1-i,n=t.x,o=t.y,l=t.z,u=a*n,h=a*o;return this.set(u*n+i,u*o-s*l,u*l+s*o,0,u*o+s*l,h*o+i,h*l-s*n,0,u*l-s*o,h*l+s*n,a*l*l+i,0,0,0,0,1),this}makeScale(t,r,i){return this.set(t,0,0,0,0,r,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,r,i,s,a,n){return this.set(1,i,a,0,t,1,n,0,r,s,1,0,0,0,0,1),this}compose(t,r,i){let s=this.elements,a=r._x,n=r._y,o=r._z,l=r._w,u=a+a,h=n+n,d=o+o,c=a*u,m=a*h,g=a*d,y=n*h,b=n*d,v=o*d,S=l*u,T=l*h,w=l*d,N=i.x,C=i.y,R=i.z;return s[0]=(1-(y+v))*N,s[1]=(m+w)*N,s[2]=(g-T)*N,s[3]=0,s[4]=(m-w)*C,s[5]=(1-(c+v))*C,s[6]=(b+S)*C,s[7]=0,s[8]=(g+T)*R,s[9]=(b-S)*R,s[10]=(1-(c+y))*R,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,r,i){let s=this.elements;t.x=s[12],t.y=s[13],t.z=s[14];let a=this.determinantAffine();if(a===0)return i.set(1,1,1),r.identity(),this;let n=gc.set(s[0],s[1],s[2]).length(),o=gc.set(s[4],s[5],s[6]).length(),l=gc.set(s[8],s[9],s[10]).length();a<0&&(n=-n),en.copy(this);let u=1/n,h=1/o,d=1/l;return en.elements[0]*=u,en.elements[1]*=u,en.elements[2]*=u,en.elements[4]*=h,en.elements[5]*=h,en.elements[6]*=h,en.elements[8]*=d,en.elements[9]*=d,en.elements[10]*=d,r.setFromRotationMatrix(en),i.x=n,i.y=o,i.z=l,this}makePerspective(t,r,i,s,a,n,o=uh,l=!1){let u=this.elements,h=2*a/(r-t),d=2*a/(i-s),c=(r+t)/(r-t),m=(i+s)/(i-s),g,y;if(l)g=a/(n-a),y=n*a/(n-a);else if(o===uh)g=-(n+a)/(n-a),y=-2*n*a/(n-a);else if(o===Mw)g=-n/(n-a),y=-n*a/(n-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return u[0]=h,u[4]=0,u[8]=c,u[12]=0,u[1]=0,u[5]=d,u[9]=m,u[13]=0,u[2]=0,u[6]=0,u[10]=g,u[14]=y,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(t,r,i,s,a,n,o=uh,l=!1){let u=this.elements,h=2/(r-t),d=2/(i-s),c=-(r+t)/(r-t),m=-(i+s)/(i-s),g,y;if(l)g=1/(n-a),y=n/(n-a);else if(o===uh)g=-2/(n-a),y=-(n+a)/(n-a);else if(o===Mw)g=-1/(n-a),y=-a/(n-a);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return u[0]=h,u[4]=0,u[8]=0,u[12]=c,u[1]=0,u[5]=d,u[9]=0,u[13]=m,u[2]=0,u[6]=0,u[10]=g,u[14]=y,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(t){let r=this.elements,i=t.elements;for(let s=0;s<16;s++)if(r[s]!==i[s])return!1;return!0}fromArray(t,r=0){for(let i=0;i<16;i++)this.elements[i]=t[i+r];return this}toArray(t=[],r=0){let i=this.elements;return t[r]=i[0],t[r+1]=i[1],t[r+2]=i[2],t[r+3]=i[3],t[r+4]=i[4],t[r+5]=i[5],t[r+6]=i[6],t[r+7]=i[7],t[r+8]=i[8],t[r+9]=i[9],t[r+10]=i[10],t[r+11]=i[11],t[r+12]=i[12],t[r+13]=i[13],t[r+14]=i[14],t[r+15]=i[15],t}},gc=new Zl,en=new AI,Eoe=new Zl(0,0,0),Poe=new Zl(1,1,1),Jl=new Zl,q1=new Zl,ra=new Zl,Boe=class uD{static{uD.prototype.isVector2=!0}constructor(t=0,r=0){this.x=t,this.y=r}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,r){return this.x=t,this.y=r,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,r){switch(t){case 0:this.x=r;break;case 1:this.y=r;break;default:throw new Error("THREE.Vector2: index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("THREE.Vector2: index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,r){return this.x=t.x+r.x,this.y=t.y+r.y,this}addScaledVector(t,r){return this.x+=t.x*r,this.y+=t.y*r,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,r){return this.x=t.x-r.x,this.y=t.y-r.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let r=this.x,i=this.y,s=t.elements;return this.x=s[0]*r+s[3]*i+s[6],this.y=s[1]*r+s[4]*i+s[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,r){return this.x=sr(this.x,t.x,r.x),this.y=sr(this.y,t.y,r.y),this}clampScalar(t,r){return this.x=sr(this.x,t,r),this.y=sr(this.y,t,r),this}clampLength(t,r){let i=this.length();return this.divideScalar(i||1).multiplyScalar(sr(i,t,r))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){let r=Math.sqrt(this.lengthSq()*t.lengthSq());if(r===0)return Math.PI/2;let i=this.dot(t)/r;return Math.acos(sr(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let r=this.x-t.x,i=this.y-t.y;return r*r+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,r){return this.x+=(t.x-this.x)*r,this.y+=(t.y-this.y)*r,this}lerpVectors(t,r,i){return this.x=t.x+(r.x-t.x)*i,this.y=t.y+(r.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,r=0){return this.x=t[r],this.y=t[r+1],this}toArray(t=[],r=0){return t[r]=this.x,t[r+1]=this.y,t}fromBufferAttribute(t,r){return this.x=t.getX(r),this.y=t.getY(r),this}rotateAround(t,r){let i=Math.cos(r),s=Math.sin(r),a=this.x-t.x,n=this.y-t.y;return this.x=a*i-n*s+t.x,this.y=a*s+n*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},Ioe=class hD{static{hD.prototype.isVector4=!0}constructor(t=0,r=0,i=0,s=1){this.x=t,this.y=r,this.z=i,this.w=s}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,r,i,s){return this.x=t,this.y=r,this.z=i,this.w=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,r){switch(t){case 0:this.x=r;break;case 1:this.y=r;break;case 2:this.z=r;break;case 3:this.w=r;break;default:throw new Error("THREE.Vector4: index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("THREE.Vector4: index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,r){return this.x=t.x+r.x,this.y=t.y+r.y,this.z=t.z+r.z,this.w=t.w+r.w,this}addScaledVector(t,r){return this.x+=t.x*r,this.y+=t.y*r,this.z+=t.z*r,this.w+=t.w*r,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,r){return this.x=t.x-r.x,this.y=t.y-r.y,this.z=t.z-r.z,this.w=t.w-r.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let r=this.x,i=this.y,s=this.z,a=this.w,n=t.elements;return this.x=n[0]*r+n[4]*i+n[8]*s+n[12]*a,this.y=n[1]*r+n[5]*i+n[9]*s+n[13]*a,this.z=n[2]*r+n[6]*i+n[10]*s+n[14]*a,this.w=n[3]*r+n[7]*i+n[11]*s+n[15]*a,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let r=Math.sqrt(1-t.w*t.w);return r<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/r,this.y=t.y/r,this.z=t.z/r),this}setAxisAngleFromRotationMatrix(t){let r,i,s,a,n=t.elements,o=n[0],l=n[4],u=n[8],h=n[1],d=n[5],c=n[9],m=n[2],g=n[6],y=n[10];if(Math.abs(l-h)<.01&&Math.abs(u-m)<.01&&Math.abs(c-g)<.01){if(Math.abs(l+h)<.1&&Math.abs(u+m)<.1&&Math.abs(c+g)<.1&&Math.abs(o+d+y-3)<.1)return this.set(1,0,0,0),this;r=Math.PI;let v=(o+1)/2,S=(d+1)/2,T=(y+1)/2,w=(l+h)/4,N=(u+m)/4,C=(c+g)/4;return v>S&&v>T?v<.01?(i=0,s=.707106781,a=.707106781):(i=Math.sqrt(v),s=w/i,a=N/i):S>T?S<.01?(i=.707106781,s=0,a=.707106781):(s=Math.sqrt(S),i=w/s,a=C/s):T<.01?(i=.707106781,s=.707106781,a=0):(a=Math.sqrt(T),i=N/a,s=C/a),this.set(i,s,a,r),this}let b=Math.sqrt((g-c)*(g-c)+(u-m)*(u-m)+(h-l)*(h-l));return Math.abs(b)<.001&&(b=1),this.x=(g-c)/b,this.y=(u-m)/b,this.z=(h-l)/b,this.w=Math.acos((o+d+y-1)/2),this}setFromMatrixPosition(t){let r=t.elements;return this.x=r[12],this.y=r[13],this.z=r[14],this.w=r[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,r){return this.x=sr(this.x,t.x,r.x),this.y=sr(this.y,t.y,r.y),this.z=sr(this.z,t.z,r.z),this.w=sr(this.w,t.w,r.w),this}clampScalar(t,r){return this.x=sr(this.x,t,r),this.y=sr(this.y,t,r),this.z=sr(this.z,t,r),this.w=sr(this.w,t,r),this}clampLength(t,r){let i=this.length();return this.divideScalar(i||1).multiplyScalar(sr(i,t,r))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,r){return this.x+=(t.x-this.x)*r,this.y+=(t.y-this.y)*r,this.z+=(t.z-this.z)*r,this.w+=(t.w-this.w)*r,this}lerpVectors(t,r,i){return this.x=t.x+(r.x-t.x)*i,this.y=t.y+(r.y-t.y)*i,this.z=t.z+(r.z-t.z)*i,this.w=t.w+(r.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,r=0){return this.x=t[r],this.y=t[r+1],this.z=t[r+2],this.w=t[r+3],this}toArray(t=[],r=0){return t[r]=this.x,t[r+1]=this.y,t[r+2]=this.z,t[r+3]=this.w,t}fromBufferAttribute(t,r){return this.x=t.getX(r),this.y=t.getY(r),this.z=t.getZ(r),this.w=t.getW(r),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},Foe=[/^StackTrace\.js$/,/^TSLCore\.js$/,/^.*Node\.js$/,/^three\.webgpu.*\.js$/];function Loe(e){let t=/(?:at\s+(.+?)\s+\()?(?:(.+?)@)?([^@\s()]+):(\d+):(\d+)/;return e.split(` `).map(r=>{let i=r.match(t);if(!i)return null;let s=i[1]||i[2]||"",a=i[3].split("?")[0],n=parseInt(i[4],10),o=parseInt(i[5],10),l=a.split("/").pop();return{fn:s,file:l,line:n,column:o}}).filter(r=>r&&!Foe.some(i=>i.test(r.file)))}var koe=class{constructor(e=null){this.isStackTrace=!0,this.stack=Loe(e||new Error().stack)}getLocation(){if(this.stack.length===0)return"[Unknown location]";let e=this.stack[0],t=e.fn;return`${t?`"${t}()" at `:""}"${e.file}:${e.line}"`}getError(e){if(this.stack.length===0)return e;let t=this.stack.map(r=>{let i=`${r.file}:${r.line}:${r.column}`;return r.fn?` at ${r.fn} (${i})`:` at ${i}`}).join(` `);return`${e} -${t}`}},hh=koe;function Pw(e,t=0){let r=3735928559^t,i=1103547991^t;if(Array.isArray(e))for(let s=0,a;s>>16,2246822507),r^=Math.imul(i^i>>>13,3266489909),i=Math.imul(i^i>>>16,2246822507),i^=Math.imul(r^r>>>13,3266489909),4294967296*(2097151&i)+(r>>>0)}var Doe=e=>Pw(e),Ooe=e=>Pw(e),Uoe=(...e)=>Pw(e);function Bw(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?"node":t==="number"?"float":t==="boolean"?"bool":t==="string"?"string":t==="function"?"shader":e.isVector2===!0?"vec2":e.isVector3===!0?"vec3":e.isVector4===!0?"vec4":e.isMatrix2===!0?"mat2":e.isMatrix3===!0?"mat3":e.isMatrix4===!0?"mat4":e.isColor===!0?"color":e instanceof ArrayBuffer?"ArrayBuffer":null}function CI(e,...t){let r=e?e.slice(-4):void 0;return t.length===1&&(r==="vec2"?t=[t[0],t[0]]:r==="vec3"?t=[t[0],t[0],t[0]]:r==="vec4"&&(t=[t[0],t[0],t[0],t[0]])),e==="color"?new Rw(...t):r==="vec2"?new Boe(...t):r==="vec3"?new Zl(...t):r==="vec4"?new Ioe(...t):r==="mat2"?new Coe(...t):r==="mat3"?new X1(...t):r==="mat4"?new AI(...t):e==="bool"?t[0]||!1:e==="float"||e==="int"||e==="uint"?t[0]||0:e==="string"?t[0]||"":e==="ArrayBuffer"?Voe(t[0]):null}function zoe(e){let t="",r=new Uint8Array(e);for(let i=0;it.charCodeAt(0)).buffer}var Goe=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let r=this._listeners;r[e]===void 0&&(r[e]=[]),r[e].indexOf(t)===-1&&r[e].push(t)}hasEventListener(e,t){let r=this._listeners;return r===void 0?!1:r[e]!==void 0&&r[e].indexOf(t)!==-1}removeEventListener(e,t){let r=this._listeners;if(r===void 0)return;let i=r[e];if(i!==void 0){let s=i.indexOf(t);s!==-1&&i.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let r=t[e.type];if(r!==void 0){e.target=this;let i=r.slice(0);for(let s=0,a=i.length;s0&&(t.inputNodes=i)}deserialize(t){if(t.inputNodes!==void 0){let r=t.meta.nodes;for(let i in t.inputNodes)if(Array.isArray(t.inputNodes[i])){let s=[];for(let a of t.inputNodes[i])s.push(r[a]);this[i]=s}else if(typeof t.inputNodes[i]=="object"){let s={};for(let a in t.inputNodes[i]){let n=t.inputNodes[i][a];s[a]=r[n]}this[i]=s}else{let s=t.inputNodes[i];this[i]=r[s]}}}toJSON(t){let{uuid:r,type:i}=this,s=t===void 0||typeof t=="string";s&&(t={textures:{},images:{},nodes:{}});let a=t.nodes[r];a===void 0&&(a={uuid:r,type:i,meta:t,metadata:{version:4.7,type:"Node",generator:"Node.toJSON"}},s!==!0&&(t.nodes[a.uuid]=a),this.serialize(a),delete a.meta);function n(o){let l=[];for(let u in o){let h=o[u];delete h.metadata,l.push(h)}return l}if(s){let o=n(t.textures),l=n(t.images),u=n(t.nodes);o.length>0&&(a.textures=o),l.length>0&&(a.images=l),u.length>0&&(a.nodes=u)}return a}};RI.captureStackTrace=!1;var Hr=RI,Hoe=class extends Hr{static get type(){return"TempNode"}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){if(e.getBuildStage()==="generate"){let r=e.getVectorType(this.getNodeType(e,t)),i=e.getDataFromNode(this);if(i.propertyName!==void 0)return e.format(i.propertyName,r,t);if(r!=="void"&&t!=="void"&&this.hasDependencies(e)){let s=super.build(e,r),a=e.getVarFromNode(this,null,r),n=e.getPropertyName(a);return e.addLineFlowCode(`${n} = ${s}`,this),i.snippet=s,i.propertyName=n,e.format(i.propertyName,r,t)}}return super.build(e,t)}},Um=Hoe,Xoe=class extends Hr{static get type(){return"ArrayElementNode"}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}generateNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){let t=this.indexNode.getNodeType(e),r=this.node.build(e),i=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:"uint");return`${r}[ ${i} ]`}},EI=Xoe,$oe=class extends Hr{static get type(){return"ConvertNode"}constructor(e,t){super(),this.node=e,this.convertTo=t}generateNodeType(e){let t=this.node.getNodeType(e),r=null;for(let i of this.convertTo.split("|"))(r===null||e.getTypeLength(t)===e.getTypeLength(i))&&(r=i);return r}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){let r=this.node,i=this.getNodeType(e),s=r.build(e,i);return e.format(s,i,t)}},PI=$oe,qoe=class extends Um{static get type(){return"JoinNode"}constructor(e=[],t=null){super(t),this.nodes=e}generateNodeType(e){return this.nodeType!==null?e.getVectorType(this.nodeType):e.getTypeFromLength(this.nodes.reduce((t,r)=>t+e.getTypeLength(r.getNodeType(e)),0))}generate(e,t){let r=this.getNodeType(e),i=e.getTypeLength(r),s=this.nodes,a=e.getComponentType(r),n=[],o=0;for(let u of s){if(o>=i){Uo(`TSL: Length of parameters exceeds maximum length of function '${r}()' type.`,this.stackTrace);break}let h=u.getNodeType(e),d=e.getTypeLength(h),c;if(o+d>i&&(Uo(`TSL: Length of '${r}()' data exceeds maximum length of output type.`,this.stackTrace),d=i-o,h=e.getTypeFromLength(d)),o+=d,c=u.build(e,h),e.getComponentType(h)!==a){let m=e.getTypeFromLength(d,a);c=e.format(c,h,m)}n.push(c)}let l=`${e.getType(r)}( ${n.join(", ")} )`;return e.format(l,r,t)}},Yoe=qoe,Zoe=j1.join(""),Joe=class extends Hr{static get type(){return"SplitNode"}constructor(e,t="x"){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(let t of this.components)e=Math.max(j1.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}generateNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){let r=this.node,i=e.getTypeLength(r.getNodeType(e)),s=null;if(i>1){let a=null;this.getVectorLength()>=i&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let n=r.build(e,a);this.components.length===i&&this.components===Zoe.slice(0,this.components.length)?s=e.format(n,a,t):s=e.format(`${n}.${this.components}`,this.getNodeType(e),t)}else s=r.build(e,t);return s}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},Qoe=Joe,Koe=class extends Um{static get type(){return"SetNode"}constructor(e,t,r){super(),this.sourceNode=e,this.components=t,this.targetNode=r}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:r,targetNode:i}=this,s=this.getNodeType(e),a=e.getComponentType(i.getNodeType(e)),n=e.getTypeFromLength(r.length,a),o=i.build(e,n),l=t.build(e,s),u=e.getTypeLength(s),h=[];for(let d=0;de.replace(/r|s/g,"x").replace(/g|t/g,"y").replace(/b|p/g,"z").replace(/a|q/g,"w"),II=e=>lle(e).split("").sort().join("");Hr.prototype.assign=function(...e){if(this.isStackNode!==!0)return Y1!==null?Y1.assign(this,...e):Uo("TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().",new hh),this;{let t=Iw.get("assign");return this.addToStack(t(...e))}},Hr.prototype.toVarIntent=function(){return this},Hr.prototype.get=function(e){return new ole(this,e)};var zm={};function Z1(e,t,r){zm[e]=zm[t]=zm[r]={get(){this._cache=this._cache||{};let n=this._cache[e];return n===void 0&&(n=new Qoe(this,e),this._cache[e]=n),n},set(n){this[e].assign(zi(n))}};let i=e.toUpperCase(),s=t.toUpperCase(),a=r.toUpperCase();Hr.prototype["set"+i]=Hr.prototype["set"+s]=Hr.prototype["set"+a]=function(n){let o=II(e);return new ele(this,o,zi(n))},Hr.prototype["flip"+i]=Hr.prototype["flip"+s]=Hr.prototype["flip"+a]=function(){let n=II(e);return new rle(this,n)}}var Gn=["x","y","z","w"],Wn=["r","g","b","a"],jn=["s","t","p","q"];for(let e=0;e<4;e++){let t=Gn[e],r=Wn[e],i=jn[e];Z1(t,r,i);for(let s=0;s<4;s++){t=Gn[e]+Gn[s],r=Wn[e]+Wn[s],i=jn[e]+jn[s],Z1(t,r,i);for(let a=0;a<4;a++){t=Gn[e]+Gn[s]+Gn[a],r=Wn[e]+Wn[s]+Wn[a],i=jn[e]+jn[s]+jn[a],Z1(t,r,i);for(let n=0;n<4;n++)t=Gn[e]+Gn[s]+Gn[a]+Gn[n],r=Wn[e]+Wn[s]+Wn[a]+Wn[n],i=jn[e]+jn[s]+jn[a]+jn[n],Z1(t,r,i)}}}for(let e=0;e<32;e++)zm[e]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new EI(this,new Vn(e,"uint")),this._cache[e]=t),t},set(t){this[e].assign(zi(t))}};Object.defineProperties(Hr.prototype,zm);var ule=function(e,t=null){let r=Bw(e);return r==="node"?e:t===null&&(r==="float"||r==="boolean")||r&&r!=="shader"&&r!=="string"?zi(Dw(e,t)):r==="shader"?e.isFn?e:dh(e):e},hle=function(e,t=null){for(let r in e)e[r]=zi(e[r],t);return e},dle=function(e,t=null){let r=e.length;for(let i=0;il?(Uo(`TSL: "${d}" parameter length exceeds limit.`,new hh),h.slice(0,l)):h}return t===null?a=(...h)=>s(new e(...Ow(u(h)))):r!==null?(r=zi(r),a=(...h)=>s(new e(t,...Ow(u(h)),r))):a=(...h)=>s(new e(t,...Ow(u(h)))),a.setParameterLength=(...h)=>(h.length===1?o=l=h[0]:h.length===2&&([o,l]=h),a),a.setName=h=>(n=h,a),a},cle=class extends Hr{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}generateNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getElementType(e){return this.getOutputNode(e).getElementType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){let{shaderNode:t,rawInputs:r}=this,i=e.getNodeProperties(t),s=e.getClosestSubBuild(t.subBuilds)||"",a=s||"default";if(i[a])return i[a];let n=e.subBuildFn,o=e.fnCall;e.subBuildFn=s,e.fnCall=this;let l=null;if(t.layout){if(r){let d=t.layout.inputs;if(LI(r)){let c=r;for(let m=0;m{let v;return Symbol.iterator===y?v=function*(){yield void 0}:v=Reflect.get(g,y,b),v}}),h=r?mle(r):null,d=Array.isArray(r)?r.length>0:r!==null,c=t.jsFunc,m=d||c.length>1?c(h,u):c(u);l=zi(m)}return e.subBuildFn=n,e.fnCall=o,t.once&&(i[a]=l),l}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let t=e.getNodeProperties(this),r=e.getSubBuildOutput(this);return t[r]=t[r]||this.setupOutput(e),t[r].subBuild=e.getClosestSubBuild(this),t[r]}build(e,t=null){let r=null,i=e.getBuildStage(),s=e.getNodeProperties(this),a=e.getSubBuildOutput(this),n=this.getOutputNode(e),o=e.fnCall;if(e.fnCall=this,i==="setup"){let l=e.getSubBuildProperty("initialized",this);if(s[l]!==!0&&(s[l]=!0,s[a]=this.getOutputNode(e),s[a].build(e),this.shaderNode.subBuilds))for(let u of e.chaining){let h=e.getDataFromNode(u,"any");h.subBuilds=h.subBuilds||new Set;for(let d of this.shaderNode.subBuilds)h.subBuilds.add(d)}r=s[a]}else i==="analyze"?n.build(e,t):i==="generate"&&(r=n.build(e,t)||"");return e.fnCall=o,r}};function LI(e){return e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype)}function ple(e){let t;return OI(e),LI(e)?t=[...e]:t=e[0],t}function mle(e){let t=0;return OI(e),new Proxy(e,{get:(r,i,s)=>{let a;if(i==="length")return a=e.length,a;if(Symbol.iterator===i)a=function*(){for(let n of e)yield zi(n)};else{if(e.length>0)if(Object.getPrototypeOf(e[0])===Object.prototype){let n=e[0];n[i]===void 0?a=n[t++]:a=Reflect.get(n,i,s)}else e[0]instanceof Hr&&(e[i]===void 0?a=e[t++]:a=Reflect.get(e,i,s));else a=Reflect.get(r,i,s);a=zi(a)}return a}})}var fle=class extends Hr{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}getLayout(){return this.layout}call(e=null){return new cle(this,e)}setup(){return this.call()}},gle=[!1,!0],yle=[0,1,2,3],xle=[-1,-2],kI=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],Fw=new Map;for(let e of gle)Fw.set(e,new Vn(e));var Lw=new Map;for(let e of yle)Lw.set(e,new Vn(e,"uint"));var kw=new Map([...Lw].map(e=>new Vn(e.value,"int")));for(let e of xle)kw.set(e,new Vn(e,"int"));var J1=new Map([...kw].map(e=>new Vn(e.value)));for(let e of kI)J1.set(e,new Vn(e));for(let e of kI)J1.set(-e,new Vn(-e));var Q1={bool:Fw,uint:Lw,ints:kw,float:J1},DI=new Map([...Fw,...J1]),Dw=(e,t)=>DI.has(e)?DI.get(e):e.isNode===!0?e:new Vn(e,t),hi=function(e,t=null){return(...r)=>{for(let s of r)if(s===void 0)return Uo(`TSL: Invalid parameter for the type "${e}".`,new hh),new Vn(0,e);if((r.length===0||!["bool","float","int","uint"].includes(e)&&r.every(s=>{let a=typeof s;return a!=="object"&&a!=="function"}))&&(r=[CI(e,...r)]),r.length===1&&t!==null&&t.has(r[0]))return K1(t.get(r[0]));if(r.length===1){let s=Dw(r[0],e);return s.nodeType===e?K1(s):K1(new PI(s,e))}let i=r.map(s=>Dw(s));return K1(new Yoe(i,e))}};function vle(e,t){return new fle(e,t)}var zi=(e,t=null)=>ule(e,t),K1=(e,t=null)=>zi(e,t).toVarIntent(),OI=(e,t=null)=>new hle(e,t),Ow=(e,t=null)=>new dle(e,t),ble=(e,t=null,r=null,i=null)=>new FI(e,t,r,i),qe=(e,t=null,r=null,i={})=>new FI(e,t,r,{...i,intent:!0}),Tle=0,Sle=class extends Hr{constructor(e,t=null){super();let r=null;t!==null&&(typeof t=="object"?r=t.return:(typeof t=="string"?r=t:Uo("TSL: Invalid layout type.",new hh),t=null)),this.shaderNode=new vle(e,r),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){let t=this.shaderNode.nodeType;if(typeof e.inputs!="object"){let r={name:"fn"+Tle++,type:t,inputs:[]};for(let i in e)i!=="return"&&r.inputs.push({name:i,type:e[i]});e=r}return this.shaderNode.setLayout(e),this}generateNodeType(e){return this.shaderNode.getNodeType(e)||"float"}call(...e){let t=this.shaderNode.call(e);return this.shaderNode.nodeType==="void"&&t.toStack(),t.toVarIntent()}once(e=null){return this.shaderNode.once=!0,this.shaderNode.subBuilds=e,this}generate(e){let t=this.getNodeType(e);return Uo('TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".',this.stackTrace),e.generateConst(t)}};function dh(e,t=null){let r=new Sle(e,t);return new Proxy(()=>{},{apply(i,s,a){return r.call(...a)},get(i,s,a){return Reflect.get(r,s,a)},set(i,s,a,n){return Reflect.set(r,s,a,n)}})}function UI(e){return Y1&&Y1.addToStack(e),e}Re("toStack",UI);var _le=new hi("color"),Vm=new hi("float",Q1.float),Uw=new hi("int",Q1.ints),wle=new hi("uint",Q1.uint),Mle=new hi("bool",Q1.bool),zI=new hi("vec2"),Nle=new hi("ivec2"),Ale=new hi("uvec2"),Cle=new hi("bvec2"),ex=new hi("vec3"),Rle=new hi("ivec3"),Ele=new hi("uvec3"),Ple=new hi("bvec3"),tx=new hi("vec4"),Ble=new hi("ivec4"),Ile=new hi("uvec4"),Fle=new hi("bvec4"),Lle=new hi("mat2"),kle=new hi("mat3"),Dle=new hi("mat4");Re("toColor",_le),Re("toFloat",Vm),Re("toInt",Uw),Re("toUint",wle),Re("toBool",Mle),Re("toVec2",zI),Re("toIVec2",Nle),Re("toUVec2",Ale),Re("toBVec2",Cle),Re("toVec3",ex),Re("toIVec3",Rle),Re("toUVec3",Ele),Re("toBVec3",Ple),Re("toVec4",tx),Re("toIVec4",Ble),Re("toUVec4",Ile),Re("toBVec4",Fle),Re("toMat2",Lle),Re("toMat3",kle),Re("toMat4",Dle);var Ole=ble(EI).setParameterLength(2),Ule=(e,t)=>new PI(zi(e),t);Re("element",Ole),Re("convert",Ule),Re("append",e=>(ns("TSL: .append() has been renamed to .toStack().",new hh),UI(e)));var zle={"==":"equal","!=":"notEqual","<":"lessThan",">":"greaterThan","<=":"lessThanEqual",">=":"greaterThanEqual","%":"mod"},Kr=class cM extends Um{static get type(){return"OperatorNode"}constructor(t,r,i,...s){if(super(),s.length>0){let a=new cM(t,r,i);for(let n=0;n>"||i==="<<")return t.getIntegerType(n);if(i==="&&"||i==="||"||i==="^^")return"bool";if(i==="!"){let l=t.getTypeLength(n);return l>1?`bvec${l}`:"bool"}else if(i==="=="||i==="!="||i==="<"||i===">"||i==="<="||i===">="){let l=Math.max(t.getTypeLength(n),t.getTypeLength(o));return l>1?`bvec${l}`:"bool"}else{if(t.isMatrix(n)){if(o==="float")return n;if(t.isVector(o))return t.getVectorFromMatrix(n);if(t.isMatrix(o))return n}else if(t.isMatrix(o)){if(n==="float")return o;if(t.isVector(n))return t.getVectorFromMatrix(o)}return t.getTypeLength(o)>t.getTypeLength(n)?o:n}}generate(t,r){let i=this.op,{aNode:s,bNode:a}=this,n=this.getNodeType(t,r),o=null,l=null;n!=="void"?(o=s.getNodeType(t),l=a?a.getNodeType(t):null,i==="<"||i===">"||i==="<="||i===">="||i==="=="||i==="!="?t.isVector(o)?l=o:t.isVector(l)?o=l:o!==l&&(o=l="float"):i===">>"||i==="<<"?(o=n,l=t.changeComponentType(l,"uint")):i==="%"?(o=n,l=t.isInteger(o)&&t.isInteger(l)?l:o):t.isMatrix(o)?l==="float"?l="float":t.isVector(l)?l=t.getVectorFromMatrix(o):t.isMatrix(l)||(o=l=n):t.isMatrix(l)?o==="float"?o="float":t.isVector(o)?o=t.getVectorFromMatrix(l):o=l=n:o=l=n):o=l=n;let u=s.build(t,o),h=a?a.build(t,l):null,d=t.getFunctionOperator(i);if(r!=="void"){let c=t.renderer.coordinateSystem===uh;if(i==="=="||i==="!="||i==="<"||i===">"||i==="<="||i===">=")return c?t.isVector(o)?t.format(`${this.getOperatorMethod(t,r)}( ${u}, ${h} )`,n,r):t.format(`( ${u} ${i} ${h} )`,n,r):t.format(`( ${u} ${i} ${h} )`,n,r);if(i==="%")return t.isInteger(l)?t.format(`( ${u} % ${h} )`,n,r):t.format(`${this.getOperatorMethod(t,n)}( ${u}, ${h} )`,n,r);if(i==="!")return c&&t.isVector(o)?t.format(`not( ${u} )`,r):t.format(`( ${i} ${u} )`,o,r);if(i==="~")return t.format(`( ${i} ${u} )`,o,r);if(d)return t.format(`${d}( ${u}, ${h} )`,n,r);if(t.isMatrix(o)&&l==="float")return t.format(`( ${h} ${i} ${u} )`,n,r);if(o==="float"&&t.isMatrix(l))return t.format(`${u} ${i} ${h}`,n,r);{let m=`( ${u} ${i} ${h} )`;return!c&&n==="bool"&&t.isVector(o)&&t.isVector(l)&&(m=`all${m}`),t.format(m,n,r)}}else if(o!=="void")return d?t.format(`${d}( ${u}, ${h} )`,n,r):t.isMatrix(o)&&l==="float"?t.format(`${h} ${i} ${u}`,n,r):t.format(`${u} ${i} ${h}`,n,r)}serialize(t){super.serialize(t),t.op=this.op}deserialize(t){super.deserialize(t),this.op=t.op}},Vle=qe(Kr,"+").setParameterLength(2,1/0).setName("add"),zw=qe(Kr,"-").setParameterLength(2,1/0).setName("sub"),ch=qe(Kr,"*").setParameterLength(2,1/0).setName("mul"),VI=qe(Kr,"/").setParameterLength(2,1/0).setName("div"),GI=qe(Kr,"%").setParameterLength(2).setName("mod"),Gle=qe(Kr,"==").setParameterLength(2).setName("equal"),Wle=qe(Kr,"!=").setParameterLength(2).setName("notEqual"),jle=qe(Kr,"<").setParameterLength(2).setName("lessThan"),Hle=qe(Kr,">").setParameterLength(2).setName("greaterThan"),Xle=qe(Kr,"<=").setParameterLength(2).setName("lessThanEqual"),$le=qe(Kr,">=").setParameterLength(2).setName("greaterThanEqual"),qle=qe(Kr,"&&").setParameterLength(2,1/0).setName("and"),Yle=qe(Kr,"||").setParameterLength(2,1/0).setName("or"),Zle=qe(Kr,"!").setParameterLength(1).setName("not"),Jle=qe(Kr,"^^").setParameterLength(2).setName("xor"),Qle=qe(Kr,"&").setParameterLength(2).setName("bitAnd"),Kle=qe(Kr,"~").setParameterLength(1).setName("bitNot"),eue=qe(Kr,"|").setParameterLength(2).setName("bitOr"),tue=qe(Kr,"^").setParameterLength(2).setName("bitXor"),rue=qe(Kr,"<<").setParameterLength(2).setName("shiftLeft"),iue=qe(Kr,">>").setParameterLength(2).setName("shiftRight"),sue=dh(([e])=>(e.addAssign(1),e)),aue=dh(([e])=>(e.subAssign(1),e)),nue=dh(([e])=>{let t=Uw(e).toConst();return e.addAssign(1),t}),oue=dh(([e])=>{let t=Uw(e).toConst();return e.subAssign(1),t});Re("add",Vle),Re("sub",zw),Re("mul",ch),Re("div",VI),Re("mod",GI),Re("equal",Gle),Re("notEqual",Wle),Re("lessThan",jle),Re("greaterThan",Hle),Re("lessThanEqual",Xle),Re("greaterThanEqual",$le),Re("and",qle),Re("or",Yle),Re("not",Zle),Re("xor",Jle),Re("bitAnd",Qle),Re("bitNot",Kle),Re("bitOr",eue),Re("bitXor",tue),Re("shiftLeft",rue),Re("shiftRight",iue),Re("incrementBefore",sue),Re("decrementBefore",aue),Re("increment",nue),Re("decrement",oue);var de=class _r extends Um{static get type(){return"MathNode"}constructor(t,r,i=null,s=null){if(super(),(t===_r.MAX||t===_r.MIN)&&arguments.length>3){let a=new _r(t,r,i);for(let n=3;nn&&a>o?r:n>o?i:o>a?s:r}generateNodeType(t){let r=this.method;return r===_r.LENGTH||r===_r.DISTANCE||r===_r.DOT?"float":r===_r.CROSS?"vec3":r===_r.ALL||r===_r.ANY?"bool":r===_r.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),"bool"):this.getInputType(t)}setup(t){let{aNode:r,bNode:i,method:s}=this,a=null;if(s===_r.ONE_MINUS)a=zw(1,r);else if(s===_r.RECIPROCAL)a=VI(1,r);else if(s===_r.DIFFERENCE)a=Vw(zw(r,i));else if(s===_r.TRANSFORM_DIRECTION){let n,o;t.isMatrix(r.getNodeType(t))?(n=r,o=i):(n=i,o=r),a=rx(ch(n,tx(ex(o),0)).xyz)}return a!==null?a:super.setup(t)}generate(t,r){if(t.getNodeProperties(this).outputNode)return super.generate(t,r);let i=this.method,s=this.getNodeType(t),a=this.getInputType(t),n=this.aNode,o=this.bNode,l=this.cNode,u=t.renderer.coordinateSystem;if(i===_r.NEGATE)return t.format("( - "+n.build(t,a)+" )",s,r);{let h=[];return i===_r.CROSS?h.push(n.build(t,s),o.build(t,s)):u===uh&&i===_r.STEP?h.push(n.build(t,t.getTypeLength(n.getNodeType(t))===1?"float":a),o.build(t,a)):u===uh&&(i===_r.MIN||i===_r.MAX)?h.push(n.build(t,a),o.build(t,t.getTypeLength(o.getNodeType(t))===1?"float":a)):i===_r.REFRACT?h.push(n.build(t,a),o.build(t,a),l.build(t,"float")):i===_r.MIX?h.push(n.build(t,a),o.build(t,a),l.build(t,t.getTypeLength(l.getNodeType(t))===1?"float":a)):(u===Mw&&i===_r.ATAN&&o!==null&&(i="atan2"),t.shaderStage!=="fragment"&&(i===_r.DFDX||i===_r.DFDY)&&(ns(`TSL: '${i}' is not supported in the ${t.shaderStage} stage.`,this.stackTrace),i="/*"+i+"*/"),h.push(n.build(t,a)),o!==null&&h.push(o.build(t,a)),l!==null&&h.push(l.build(t,a))),t.format(`${t.getMethod(i,s)}( ${h.join(", ")} )`,s,r)}}serialize(t){super.serialize(t),t.method=this.method}deserialize(t){super.deserialize(t),this.method=t.method}};de.ALL="all",de.ANY="any",de.RADIANS="radians",de.DEGREES="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INVERSE_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SIN="sin",de.SINH="sinh",de.COS="cos",de.COSH="cosh",de.TAN="tan",de.TANH="tanh",de.ASIN="asin",de.ASINH="asinh",de.ACOS="acos",de.ACOSH="acosh",de.ATAN="atan",de.ATANH="atanh",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.ONE_MINUS="oneMinus",de.DFDX="dFdx",de.DFDY="dFdy",de.ROUND="round",de.RECIPROCAL="reciprocal",de.TRUNC="trunc",de.FWIDTH="fwidth",de.TRANSPOSE="transpose",de.DETERMINANT="determinant",de.INVERSE="inverse",de.EQUALS="equals",de.MIN="min",de.MAX="max",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DIFFERENCE="difference",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.TRANSFORM_DIRECTION="transformDirection",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var lue=Vm(Math.PI),X0e=Vm(Math.PI*2),$0e=Vm(Math.PI*2),q0e=Vm(Math.PI*.5),uue=qe(de,de.ALL).setParameterLength(1),hue=qe(de,de.ANY).setParameterLength(1),due=qe(de,de.RADIANS).setParameterLength(1),cue=qe(de,de.DEGREES).setParameterLength(1),pue=qe(de,de.EXP).setParameterLength(1),mue=qe(de,de.EXP2).setParameterLength(1),fue=qe(de,de.LOG).setParameterLength(1),gue=qe(de,de.LOG2).setParameterLength(1),yue=qe(de,de.SQRT).setParameterLength(1),xue=qe(de,de.INVERSE_SQRT).setParameterLength(1),vue=qe(de,de.FLOOR).setParameterLength(1),bue=qe(de,de.CEIL).setParameterLength(1),rx=qe(de,de.NORMALIZE).setParameterLength(1),WI=qe(de,de.FRACT).setParameterLength(1),jI=qe(de,de.SIN).setParameterLength(1),Tue=qe(de,de.SINH).setParameterLength(1),Sue=qe(de,de.COS).setParameterLength(1),_ue=qe(de,de.COSH).setParameterLength(1),wue=qe(de,de.TAN).setParameterLength(1),Mue=qe(de,de.TANH).setParameterLength(1),Nue=qe(de,de.ASIN).setParameterLength(1),Aue=qe(de,de.ASINH).setParameterLength(1),Cue=qe(de,de.ACOS).setParameterLength(1),Rue=qe(de,de.ACOSH).setParameterLength(1),Eue=qe(de,de.ATAN).setParameterLength(1,2),Pue=qe(de,de.ATANH).setParameterLength(1),Vw=qe(de,de.ABS).setParameterLength(1),HI=qe(de,de.SIGN).setParameterLength(1),Bue=qe(de,de.LENGTH).setParameterLength(1),Iue=qe(de,de.NEGATE).setParameterLength(1),Fue=qe(de,de.ONE_MINUS).setParameterLength(1),Lue=qe(de,de.DFDX).setParameterLength(1),kue=qe(de,de.DFDY).setParameterLength(1),Due=qe(de,de.ROUND).setParameterLength(1),Oue=qe(de,de.RECIPROCAL).setParameterLength(1),Uue=qe(de,de.TRUNC).setParameterLength(1),zue=qe(de,de.FWIDTH).setParameterLength(1),Vue=qe(de,de.TRANSPOSE).setParameterLength(1),Gue=qe(de,de.DETERMINANT).setParameterLength(1),Wue=qe(de,de.INVERSE).setParameterLength(1),jue=qe(de,de.MIN).setParameterLength(2,1/0),Hue=qe(de,de.MAX).setParameterLength(2,1/0),Xue=qe(de,de.STEP).setParameterLength(2),$ue=qe(de,de.REFLECT).setParameterLength(2),que=qe(de,de.DISTANCE).setParameterLength(2),Yue=qe(de,de.DIFFERENCE).setParameterLength(2),Gw=qe(de,de.DOT).setParameterLength(2),Zue=qe(de,de.CROSS).setParameterLength(2),XI=qe(de,de.POW).setParameterLength(2),Jue=e=>ch(e,e),Que=e=>ch(e,e,e),Kue=e=>ch(e,e,e,e),ehe=qe(de,de.TRANSFORM_DIRECTION).setParameterLength(2),the=(e,t)=>rx(ch(t,tx(ex(e),0)).xyz),rhe=(e,t)=>rx(tx(ex(e),0).mul(t).xyz),ihe=e=>ch(HI(e),XI(Vw(e),1/3)),she=e=>Gw(e,e),$I=qe(de,de.MIX).setParameterLength(3),qI=(e,t=0,r=1)=>new de(de.CLAMP,zi(e),zi(t),zi(r)),ahe=e=>qI(e),nhe=qe(de,de.REFRACT).setParameterLength(3),ohe=qe(de,de.SMOOTHSTEP).setParameterLength(3),lhe=qe(de,de.FACEFORWARD).setParameterLength(3),uhe=dh(([e])=>{let t=43758.5453,r=Gw(e.xy,zI(12.9898,78.233)),i=GI(r,lue);return WI(jI(i).mul(t))}),hhe=(e,t,r)=>$I(t,r,e),dhe=(e,t,r)=>ohe(t,r,e),che=(e,t)=>Xue(t,e);Re("all",uue),Re("any",hue),Re("radians",due),Re("degrees",cue),Re("exp",pue),Re("exp2",mue),Re("log",fue),Re("log2",gue),Re("sqrt",yue),Re("inverseSqrt",xue),Re("floor",vue),Re("ceil",bue),Re("normalize",rx),Re("fract",WI),Re("sin",jI),Re("sinh",Tue),Re("cos",Sue),Re("cosh",_ue),Re("tan",wue),Re("tanh",Mue),Re("asin",Nue),Re("asinh",Aue),Re("acos",Cue),Re("acosh",Rue),Re("atan",Eue),Re("atanh",Pue),Re("abs",Vw),Re("sign",HI),Re("length",Bue),Re("lengthSq",she),Re("negate",Iue),Re("oneMinus",Fue),Re("dFdx",Lue),Re("dFdy",kue),Re("round",Due),Re("reciprocal",Oue),Re("trunc",Uue),Re("fwidth",zue),Re("min",jue),Re("max",Hue),Re("step",che),Re("reflect",$ue),Re("distance",que),Re("dot",Gw),Re("cross",Zue),Re("pow",XI),Re("pow2",Jue),Re("pow3",Que),Re("pow4",Kue),Re("transformDirection",ehe),Re("transformNormalByViewMatrix",the),Re("transformNormalByInverseViewMatrix",rhe),Re("mix",hhe),Re("clamp",qI),Re("refract",nhe),Re("smoothstep",dhe),Re("faceForward",lhe),Re("difference",Yue),Re("saturate",ahe),Re("cbrt",ihe),Re("transpose",Vue),Re("determinant",Gue),Re("inverse",Wue),Re("rand",uhe);var phe=dh(([e])=>{let t=e.pow(.41666).mul(1.055).sub(.055),r=e.mul(12.92),i=e.lessThanEqual(.0031308);return $I(t,r,i)}).setLayout({name:"sRGBTransferOETF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),{rtt:YI,Fn:mhe,pass:fhe,mrt:ghe,output:yhe,velocity:xhe,vec2:ix,vec3:zo,vec4:vhe,float:yc,uniform:Lr,texture:sx,screenUV:ZI,screenCoordinate:ax,screenSize:JI,mix:Ww,luminance:QI,smoothstep:jw,length:bhe,max:KI,clamp:Hw,agxToneMapping:The,acesFilmicToneMapping:She,neutralToneMapping:_he,linearToneMapping:whe,floor:eF,step:Mhe}=Jr;function Nhe(e){let t={exposure:Lr(1),contrast:Lr(1.08),blackLift:Lr(.02),monochrome:Lr(1),vignette:Lr(.2),vignetteSoft:Lr(.7),vignetteRadius:Lr(.85),grain:Lr(.03),grainSize:Lr(1),grainSeed:Lr(new fe),grainShadow:Lr(.8),bgGrain:Lr(0),bgGrainSize:Lr(2),bgGrainSeed:Lr(new fe),dither:Lr(1),focus:Lr(12.4),focusRange:Lr(3),aperture:Lr(.9),bloomStrength:Lr(.15),bloomRadius:Lr(.15),bloomThreshold:Lr(1.2),sceneFade:Lr(1),hazeIntensity:Lr(.22),upscaleSharpness:Lr(.2)},r=new(TB??YX)(e.renderer);r.outputColorTransform=!1;let i={aa:"",tonemap:"",dof:!0,haze:!1,upscaler:"",sharpen:!1},s=null,a=null,n=-1,o=null,l=1,u=-1,h=[];function d(v){i={...v};let S=h,T=[],w=L=>(L&&typeof L.dispose=="function"&&T.push(L),L);s=w(fhe(e.scene,e.camera,{type:Dt,samples:0})),s.setMRT(ghe({output:yhe,velocity:xhe}));let N=s.getTextureNode("output"),C=s.getTextureNode("depth"),R=s.getTextureNode("velocity"),E=s.getViewZNode(),P;a=null,v.upscaler==="taau"?P=a=w(jne(N,C,R,e.camera)):(P=v.aa==="traa"?a=w(Vne(N,C,R,e.camera)):N,v.upscaler==="fsr1"?P=w(Xne(P,yc(2).sub(t.upscaleSharpness.mul(2)),!0)):v.upscaler==="bilinear"&&(P=w(YI(P)))),v.sharpen&&(v.upscaler==="taau"||v.upscaler==="bilinear")&&(P=w(qne(P,yc(2).sub(t.upscaleSharpness.mul(2)),!0))),o=null,e.haze&&v.haze&&(o=w(YI(e.haze(C,E))),o.setResolutionScale(l),P=P.add(o.mul(t.hazeIntensity))),v.dof&&(P=w(Qne(P,E,t.focus,t.focusRange,t.aperture)));let I=w(soe(P,t.bloomStrength,t.bloomRadius,t.bloomThreshold));I.smoothWidth.value=.35,P=P.add(I);let O=mhe(()=>{let L=zo(P).mul(t.sceneFade).toVar(),X=QI(L);L.assign(Ww(L,zo(X),t.monochrome));let z=v.tonemap==="aces"?She(L,t.exposure):v.tonemap==="neutral"?_he(L,t.exposure):v.tonemap==="linear"?whe(L,t.exposure):The(L,t.exposure),H=Hw(zo(z),0,1).toVar(),ue=yc(.18);H.assign(Hw(ue.add(H.sub(ue).mul(t.contrast)),0,1));let ne=H.mul(H).mul(yc(3).sub(H.mul(2)));H.assign(Ww(H,ne,Hw(t.contrast.sub(1).mul(1.5),0,.6))),H.assign(H.mul(t.blackLift.oneMinus()).add(t.blackLift));let re=JI.x.div(JI.y),ce=ix(ZI.x.sub(.5).mul(re),ZI.y.sub(.5)),ge=bhe(ce).div(t.vignetteRadius),ye=jw(yc(1).sub(t.vignetteSoft),1.0001,ge).mul(t.vignette);H.assign(H.mul(ye.oneMinus()));let oe=zo(phe(H)).toVar(),Ae=eF(ax.xy.div(t.grainSize)).div(64).add(t.grainSeed),Ie=sx(e.blueNoise,Ae).r.sub(.5),Xe=sx(e.blueNoise,Ae.add(ix(.37,.61))).r.sub(.5),at=Ie.add(Xe),W=QI(oe),j=Ww(yc(1),jw(1,.05,W),t.grainShadow),G=t.grain.mul(j).mul(jw(0,.08,W).mul(.85).add(.15));oe.addAssign(zo(at.mul(G)));let ae=Mhe(.9999995,C.r),be=eF(ax.xy.div(KI(t.bgGrainSize,1))),Be=Po(zo(be,t.bgGrainSeed.x.mul(97))),$=Po(zo(be.add(ix(17.3,5.1)),t.bgGrainSeed.y.mul(53)));oe.addAssign(zo(Be.add($).sub(1).mul(t.bgGrain).mul(ae)));let U=sx(e.blueNoise,ax.xy.div(64).add(t.grainSeed.yx)).r.sub(.5),J=sx(e.blueNoise,ax.xy.div(64).add(ix(.5,.25)).add(t.grainSeed)).r.sub(.5);return oe.addAssign(zo(U.add(J).mul(t.dither).div(255))),vhe(KI(oe,0),1)})();r.outputNode=O,r.needsUpdate=!0,h=T;for(let L of S)L.dispose()}d({aa:e.initial?.aaMode??"traa",tonemap:e.initial?.tonemap??"agx",dof:e.initial?.dof.enabled??!0,haze:!!e.haze&&(e.initialHaze??!0),upscaler:e.initialPerformance?.nativePostEffects?e.initialPerformance.upscaler:"native",sharpen:!!e.initialPerformance?.nativePostEffects&&!!e.initialPerformance.upscaleSharpness&&(e.initialPerformance.upscaler==="taau"||e.initialPerformance.upscaler==="bilinear")});function c(v,S,T,w,N,C,R){let E=!!e.haze&&N!==0,P=S.nativePostEffects?S.upscaler:"native",I=S.nativePostEffects&&S.upscaleSharpness>0&&(P==="taau"||P==="bilinear");(R!==u||E!==i.haze)&&(u=R,(v.aaMode!==i.aa||v.tonemap!==i.tonemap||v.dof.enabled!==i.dof||E!==i.haze||P!==i.upscaler||I!==i.sharpen)&&d({aa:v.aaMode,tonemap:v.tonemap,dof:v.dof.enabled,haze:E,upscaler:P,sharpen:I}),t.exposure.value=v.exposure,t.contrast.value=v.contrast,t.blackLift.value=v.blackLift,t.monochrome.value=v.monochrome,t.vignette.value=v.vignette.strength,t.vignetteSoft.value=v.vignette.softness,t.vignetteRadius.value=v.vignette.radius,t.grain.value=v.grain.strength,t.grainSize.value=v.grain.size,t.grainShadow.value=v.grain.shadowWeight,t.bgGrain.value=v.grain.backgroundStrength,t.bgGrainSize.value=v.grain.backgroundSize,t.dither.value=v.dither?1:0,t.focusRange.value=v.dof.range,t.aperture.value=v.dof.aperture,t.bloomStrength.value=v.bloom.intensity,t.bloomRadius.value=v.bloom.radius,t.bloomThreshold.value=v.bloom.threshold,t.upscaleSharpness.value=S.upscaleSharpness);let O=v.grain.backgroundSpeed>0?Math.floor(C*24*v.grain.backgroundSpeed):0;t.bgGrainSeed.value.set(O*.7548776662%1+.1,O*.5698402909%1+.1);let L=v.grain.speed>0?Math.floor(C*24*v.grain.speed):0;t.grainSeed.value.set(L*.7548776662%1,L*.5698402909%1),t.focus.value=T+v.dof.focusBias,t.sceneFade.value=w,t.hazeIntensity.value=N}function m(v){v!==l&&(l=v,o&&o.setResolutionScale(v))}function g(v){s&&s.setResolutionScale(v)}function y(v){a&&(a._jitterIndex=(v%31+31)%31,v!==n+1&&a._historyRenderTarget.setSize(1,1)),n=v}function b(){for(let v of h)v.dispose();h=[],r.dispose()}return{post:r,uniforms:t,update:c,setHazeResolution:m,setSceneResolution:g,setFrame:y,dispose:b,get scenePass(){return s}}}var{normalize:Xw,cross:tF,select:Ahe,abs:Che,vec3:rF,texture:Rhe,equirectUV:Ehe,pmremTexture:Phe}=Jr;function $w(e,t,r,i){if(qa.environment)return Phe(e,r,i).rgb.mul(t);let s=Xw(r),a=Xw(tF(s,Ahe(Che(s.y).lessThan(.95),rF(0,1,0),rF(1,0,0)))),n=tF(s,a),o=i.mul(i).mul(.32),l=u=>Rhe(e,Ehe(Xw(u))).level(0).rgb;return l(s).mul(.4).add(l(s.add(a.mul(o))).mul(.15)).add(l(s.sub(a.mul(o))).mul(.15)).add(l(s.add(n.mul(o))).mul(.15)).add(l(s.sub(n.mul(o))).mul(.15)).mul(t)}var{normalize:iF,mat3:Bhe,vec3:Ihe,float:nx,dot:sF,select:Fhe,pow:aF,clamp:Lhe,reflect:khe,refract:Dhe,exp:Ohe,log:Uhe,max:qw}=Jr;function zhe({ray:e,normal:t,environment:r,u:i,f:s,roughness:a,path:n}){let o=Fhe(sF(t,e).greaterThan(0),t.negate(),t),l=qw(i.ior,1.001),u=g=>iF(Bhe(i.model).mul(g)),h=g=>$w(r,i.envStrength,u(g),a),d=aF(l.sub(1).div(l.add(1)),2),c=d.add(nx(1).sub(d).mul(aF(nx(1).sub(Lhe(sF(o,e.negate()),0,1)),5))),m=Ohe(Uhe(qw(i.attColor,Ihe(.001))).mul(n.mul(i.thicknessScale).div(qw(i.attDist,.01))).mul(s.absorption));return{reflected:h(khe(e,o)).mul(c).mul(s.reflections),transmitted:h(iF(Dhe(e,o,nx(1).div(l)))).mul(nx(1).sub(c)).mul(i.backlight).mul(m)}}var{Fn:Hn,vec3:tn,vec4:Gm,float:Ns,uniform:mr,uniformArray:Vhe,instanceIndex:ox,texture3D:xc,textureStore:vc,uvec3:Ghe,ivec3:$t,int:nF,uint:kr,If:Vi,Loop:oF,max:Vo,min:ph,length:Whe,dot:lF,clamp:bc,smoothstep:lx,mix:uF,abs:Y0e,select:Wm,instancedArray:jhe,atomicAdd:hF,atomicMax:dF,atomicStore:jm,atomicLoad:ux}=Jr,Tc=12,hx=class Kx{constructor(t,r,i,s,a,n,o,l){if(this.renderer=t,this.shape=r,this.cellOffset=o,this.flightOffset=l,this.atomics=a,this.healOffset=n,!Number.isInteger(n))throw new Error("ErosionField: healOffset must be an integer");this.res=i,this.bound=r.bound,this.u.seed.value=s;let u=()=>{let h=new d_(i,i,i);return h.type=Dt,h.format=pi,h.minFilter=lr,h.magFilter=lr,h.wrapS=h.wrapT=h.wrapR=Ti,h.generateMipmaps=!1,h};this.tex=u(),this.scratch=u(),this.crackTex=u(),this.cellTex=u(),this.texNode=xc(this.tex),this.buildComputes()}static extraShell=0;res;bound;tex;scratch;crackTex;cellTex;u={reconstruct:mr(0),dt:mr(0),time:mr(0),heal:mr(0),healRate:mr(.6),healGap:mr(.12),fallbackHeal:mr(.04),fallbackOn:mr(0),refrostTime:mr(4),cellRestore:mr(30),growEdges:mr(1),breakup:mr(.7),breakupScale:mr(10),crumbleRate:mr(1.6),crumbleCrackBias:mr(2.5),crumbleUntil:mr(-1),brushNoise:mr(.55),brushNoiseScale:mr(9),brushSoftness:mr(.5),segCount:mr(0),seed:mr(0),crackScale:mr(2.2),crackWarp:mr(.45),crackWarpScale:mr(1.4),crackCoverage:mr(.55),breakScale:mr(3),cellSnap:mr(.85)};segments=Vhe(Array.from({length:Tc*2},()=>new Wt));stepNode;copyNode;cellClearNode;flightClearNode;clearNode;fillNode;healClearNode;bakeNode;statsNode;statsClearNode;statsBuf;statsPending=!1;stats={max:0,over50:0,over90:0,refrost:0};statsReadT=-1;statsIssuedT=-1;baked=!1;skipBake=!1;texNode;lastCrackSig="";settingsVersion=-1;atomics;healOffset;cellOffset;flightOffset;uvw(t){return tn(t).div(this.bound*2).add(.5)}sample(t){return this.texNode.sample(this.uvw(t)).level(0)}sampleCrack(t){return xc(this.crackTex).sample(this.uvw(t)).level(0)}static warpDomain(t,r,i,s){return tn(t).mul(i).add(tn(r).mul(s))}buildComputes(){let t=this.res,r=t*t*t,i=this.bound,s=this.u,a=i*2/t,n=Math.max(a*1.5,Kx.extraShell),o=ox,l=()=>{let g=o.mod(kr(t)),y=o.div(kr(t)).mod(kr(t)),b=o.div(kr(t*t));return Ghe(g,y,b)},u=g=>tn(g).add(.5).div(t).sub(.5).mul(i*2),h=xc(this.tex),d=xc(this.scratch),c=xc(this.crackTex),m=xc(this.cellTex);this.stepNode=Hn(()=>{let g=l(),y=u(g).toVar(),b=this.shape.sdfNode(y).toVar(),v=h.load($t(g)).level(0).toVar(),S=v.r.toVar(),T=v.g.toVar(),w=v.b.toVar(),N=Vo(0,v.a.sub(s.dt.div(.2))).toVar(),C=c.load($t(g)).level(0).w,R=ws(y.mul(s.breakupScale).add(s.seed.mul(1.7).add(11))).mul(.5).add(.5),E=uF(Ns(1),Ns(.15).add(gi(R).mul(1.7)),s.breakup).toVar();Vi(s.time.lessThan(s.crumbleUntil),()=>{let ne=Ns(0).toVar(),re=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let oe of re){let Ae=bc($t(g).add(oe),$t(0),$t(t-1));ne.assign(Vo(ne,h.load(Ae).level(0).r))}let ce=lx(.02,-.02,b),ge=s.crumbleRate.mul(Ns(1).add(C.mul(s.crumbleCrackBias))).mul(ce),ye=ne.mul(.92).sub(.06);Vi(ye.greaterThan(S),()=>{S.assign(ph(ye,S.add(ye.sub(S).mul(gi(ge.mul(s.dt))))))})});let P=m.load($t(g)).level(0).toVar();oF({start:nF(0),end:nF(s.segCount),type:"int",condition:"<"},({i:ne})=>{let re=this.segments.element(ne.mul(2)),ce=this.segments.element(ne.mul(2).add(1)),ge=re.xyz,ye=ce.xyz,oe=re.w,Ae=ce.w,Ie=ye.sub(ge),Xe=$=>{let U=bc(lF($.sub(ge),Ie).div(Vo(lF(Ie,Ie),1e-6)),0,1);return Whe($.sub(ge.add(Ie.mul(U))))},at=ws(y.mul(s.brushNoiseScale).add(s.seed)).mul(.5).add(ws(y.mul(s.brushNoiseScale.mul(2.7)).add(s.seed.add(3.1))).mul(.25)),W=oe.mul(Ns(1).add(at.mul(s.brushNoise))),j=W.mul(Ns(1).sub(s.brushSoftness)),G=lx(W,j,Xe(y)),ae=oe.mul(Ns(1).add(P.w.sub(.5).mul(s.brushNoise).mul(.6))),be=lx(ae,ae.mul(Ns(1).sub(s.brushSoftness)),Xe(P.xyz)),Be=uF(G,be,s.cellSnap);S.assign(ph(1,S.add(Be.mul(Ae).mul(s.dt)))),Vi(Be.greaterThan(.02),()=>{N.assign(1)})});let I=kr(this.healOffset).add(o),O=Ns(ux(this.atomics.element(I))).toVar(),L=kr(bc(P.w.mul(65535),0,65535)),X=ux(this.atomics.element(kr(this.flightOffset).add(L))).equal(kr(0));Vi(O.greaterThan(.5).and(X.or(s.reconstruct.greaterThan(.5))),()=>{jm(this.atomics.element(I),kr(0)),T.assign(ph(1,T.add(S.mul(2.5)))),S.assign(0),w.assign(1)});let z=kr(bc(P.w.mul(65535),0,65535)),H=Ns(ux(this.atomics.element(kr(this.cellOffset).add(z)))),ue=ux(this.atomics.element(kr(this.flightOffset).add(z))).equal(kr(0));Vi(H.greaterThan(.5).and(S.greaterThan(0)),()=>{w.assign(2)}),Vi(w.greaterThan(1.5).and(S.greaterThan(0)).and(ue).and(s.reconstruct.lessThan(.5)),()=>{let ne=Ns(1).toVar();Vi(s.growEdges.greaterThan(.5),()=>{ne.assign(0);let re=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let ce of re){let ge=bc($t(g).add(ce),$t(0),$t(t-1));Vi(h.load(ge).level(0).r.lessThan(.5),()=>{ne.assign(1)})}}),Vi(ne.greaterThan(.5),()=>{let re=S,ce=Vo(0,S.sub(s.cellRestore.mul(E).mul(s.dt)));T.assign(ph(1,T.add(re.sub(ce).mul(2.5)))),S.assign(ce)})}),Vi(s.heal.greaterThan(.5).and(ue.or(s.reconstruct.greaterThan(.5))),()=>{let ne=Ns(8).toVar(),re=Ns(0).toVar(),ce=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let oe of ce){let Ae=bc($t(g).add(oe),$t(0),$t(t-1)),Ie=h.load(Ae).level(0);Vi(Ie.b.greaterThan(.5),()=>{ne.assign(ph(ne,Ie.r)),re.assign(1)})}let ge=s.reconstruct.greaterThan(.5),ye=Wm(ge,Wm(ne.lessThan(.05),Ns(0),Ns(1)),ne.add(s.healGap));Vi(re.greaterThan(.5).and(ye.lessThan(S)),()=>{let oe=Wm(ge,Vo(s.cellRestore.mul(s.fallbackHeal),s.healRate),s.healRate),Ae=Vo(ye,S.sub(oe.mul(E).mul(s.dt)));T.assign(ph(1,T.add(S.sub(Ae).mul(3)))),S.assign(Ae),Vi(Ae.lessThanEqual(ye.add(.001)),()=>{w.assign(1)})}),Vi(s.fallbackOn.greaterThan(.5).and(ge.not()),()=>{let oe=Vo(0,S.sub(s.fallbackHeal.mul(E).mul(s.dt)));T.assign(ph(1,T.add(S.sub(oe).mul(3)))),S.assign(oe)})}),Vi(S.greaterThan(v.r.add(5e-4)),()=>{w.assign(0)}),T.assign(Vo(0,T.sub(s.dt.mul(E).div(Vo(s.refrostTime,.01))))),S.assign(Wm(b.greaterThan(n),0,S)),vc(this.scratch,g,Gm(S,T,w,N)).toWriteOnly()})().compute(r,[64]),this.cellClearNode=Hn(()=>{jm(this.atomics.element(kr(this.cellOffset).add(ox)),kr(0))})().compute(65536,[64]),this.flightClearNode=Hn(()=>{jm(this.atomics.element(kr(this.flightOffset).add(ox)),kr(0))})().compute(65536,[64]),this.copyNode=Hn(()=>{let g=l(),y=d.load($t(g)).level(0);vc(this.tex,g,y).toWriteOnly()})().compute(r,[64]),this.statsBuf=jhe(4,"uint").toAtomic(),this.statsClearNode=Hn(()=>{oF(4,({i:g})=>{jm(this.statsBuf.element(g),kr(0))})})().compute(1,[1]),this.statsNode=Hn(()=>{let g=l(),y=h.load($t(g)).level(0),b=y.r;dF(this.statsBuf.element(0),kr(b.mul(65535))),dF(this.statsBuf.element(3),kr(y.g.mul(65535))),Vi(b.greaterThan(.5),()=>{hF(this.statsBuf.element(1),kr(1))}),Vi(b.greaterThan(.9),()=>{hF(this.statsBuf.element(2),kr(1))})})().compute(r,[64]),this.clearNode=Hn(()=>{let g=l();vc(this.tex,g,Gm(0)).toWriteOnly()})().compute(r,[64]),this.fillNode=Hn(()=>{let g=l(),y=this.shape.sdfNode(u(g));vc(this.tex,g,Gm(Wm(y.greaterThan(n),0,1),0,0,0)).toWriteOnly()})().compute(r,[64]),this.healClearNode=Hn(()=>{jm(this.atomics.element(kr(this.healOffset).add(ox)),kr(0))})().compute(r,[64]),this.bakeNode=Hn(()=>{let g=l(),y=u(g).toVar(),b=y.mul(s.crackWarpScale).add(s.seed.mul(.11)),v=tn(ws(b).mul(.6).add(ws(b.mul(2.1).add(tn(7.3,1.9,4.4))).mul(.4)),ws(b.add(tn(13.7,5.1,9.9))).mul(.6).add(ws(b.mul(2.1).add(tn(2.2,8.8,6.1))).mul(.4)),ws(b.add(tn(3.3,17.1,12.5))).mul(.6).add(ws(b.mul(2.1).add(tn(9.7,4.4,1.1))).mul(.4))),S=Kx.warpDomain(y,v,s.crackScale,s.crackWarp),T=bm(S,s.seed,s.crackCoverage).w.div(s.crackScale),w=lx(a*2.5,0,T),N=Po(tn(g)).mul(.15);vc(this.crackTex,g,Gm(v,gi(w.add(N.mul(w))))).toWriteOnly();let C=Kx.warpDomain(y,v,s.breakScale,s.crackWarp),R=A_(C,s.seed.add(3)),E=R.xyz.sub(v.mul(s.crackWarp)).div(s.breakScale);vc(this.cellTex,g,Gm(E,Po(R.xyz.add(s.seed)))).toWriteOnly()})().compute(r,[64])}clear(t){t.compute(this.clearNode),t.compute(this.cellClearNode),t.compute(this.flightClearNode)}rebake(t,r){let i=this.u,s=le.erosion,a=le.ice.cracks;i.crackScale.value=a.largeScale,i.crackWarp.value=a.warp,i.crackWarpScale.value=a.warpScale,i.crackCoverage.value=a.coverage,i.breakScale.value=s.breakCellScale;let n=`${a.largeScale}|${a.warp}|${a.warpScale}|${a.coverage}|${s.breakCellScale}`;(!this.baked||n!==this.lastCrackSig)&&!this.skipBake&&t.compute(this.bakeNode),this.lastCrackSig=n,this.baked=!0,i.reconstruct.value=r?1:0,t.compute(r?this.fillNode:this.clearNode),t.compute(this.cellClearNode),t.compute(this.flightClearNode),t.compute(this.healClearNode),this.crumbleUntil=-1,i.crumbleUntil.value=-1}readStats(t,r=0){this.statsPending||(this.statsPending=!0,this.statsIssuedT=r,t.compute(this.statsClearNode),t.compute(this.statsNode),t.getArrayBufferAsync(this.statsBuf.value).then(i=>{let s=new Uint32Array(i);this.stats.max=s[0]/65535,this.stats.over50=s[1],this.stats.over90=s[2],this.stats.refrost=s[3]/65535,this.statsReadT=this.statsIssuedT,this.statsPending=!1}).catch(()=>{this.statsPending=!1}))}crumbleUntil=-1;step(t,r,i,s,a,n=!0){let o=le.erosion,l=le.healing,u=this.u;if(u.dt.value=Math.min(i,1/30),u.time.value=r,le.version!==this.settingsVersion){this.settingsVersion=le.version;let d=le.ice.cracks,c=`${d.largeScale}|${d.warp}|${d.warpScale}|${d.coverage}|${o.breakCellScale}`;(!this.baked||c!==this.lastCrackSig)&&(u.crackScale.value=d.largeScale,u.crackWarp.value=d.warp,u.crackWarpScale.value=d.warpScale,u.crackCoverage.value=d.coverage,u.breakScale.value=o.breakCellScale,this.skipBake||t.compute(this.bakeNode),this.baked||t.compute(this.clearNode),this.baked=!0,this.lastCrackSig=c),u.healRate.value=l.healRate,u.healGap.value=l.healGap,u.fallbackHeal.value=l.fallbackHeal,u.refrostTime.value=l.refrostTime,u.cellRestore.value=l.cellRestore,u.growEdges.value=l.growFromEdges?1:0,u.breakup.value=l.breakup,u.breakupScale.value=l.breakupScale,u.crumbleRate.value=o.crumbleRate,u.crumbleCrackBias.value=o.crumbleCrackBias,u.brushNoise.value=o.brushNoise,u.brushNoiseScale.value=o.brushNoiseScale,u.cellSnap.value=o.cellSnap,u.brushSoftness.value=Math.max(o.brushSoftness,.02)}a>0&&(pt.lastStrokeT=r,u.crumbleUntil.value=r+o.crumbleDuration,this.crumbleUntil=r+o.crumbleDuration);let h=r-pt.lastStrokeT>l.healDelay;if(pt.healing=h,u.heal.value=h?1:0,u.fallbackOn.value=r-pt.lastStrokeT>l.healDelay+l.waveTime+l.waveJitter+Math.max(l.returnDuration,l.returnAfter)+1?1:0,u.segCount.value=a,a>0){let d=this.segments.array;for(let c=0;c.5||(t.compute(this.stepNode),t.compute(this.cellClearNode),t.compute(this.copyNode))}commitAssembly(t){t.compute(this.copyNode)}dispose(){this.tex.dispose(),this.scratch.dispose(),this.crackTex.dispose(),this.cellTex.dispose()}},Hm="photographic",{Fn:Hhe,vec2:Xhe,vec3:Xn,vec4:dx,float:Pa,int:Z0e,Loop:cF,If:Yw,Break:pF,normalize:Xm,length:mF,max:Sc,min:$he,abs:fF,dot:cx,pow:Zw,exp:qhe,log:Yhe,mix:J0e,clamp:px,refract:gF,reflect:Jw,select:mx,mat3:yF,texture:Q0e,equirectUV:K0e,cameraViewMatrix:xF,cameraProjectionMatrix:Zhe,cross:Jhe}=Jr;function Qhe(e){let{shape:t,erosion:r,p:i,ray:s,normal:a,environment:n,backdrop:o,u:l,f:u,roughness:h}=e,d=t.bound,c=Math.max(.001,d/1500),m=oe=>Xm(yF(l.model).mul(oe)),g=(oe,Ae)=>$w(n,l.envStrength,oe,Ae),y=oe=>{let Ae=t.voxelSize?t.voxelSize.mul(.75):Pa(d/240),Ie=Xn(t.sdfNode(oe.add(Xn(Ae,0,0))).sub(t.sdfNode(oe.sub(Xn(Ae,0,0)))),t.sdfNode(oe.add(Xn(0,Ae,0))).sub(t.sdfNode(oe.sub(Xn(0,Ae,0)))),t.sdfNode(oe.add(Xn(0,0,Ae))).sub(t.sdfNode(oe.sub(Xn(0,0,Ae)))));return Ie.div(Sc(mF(Ie),1e-5))},b=Sc(l.ior,1.001),v=mx(cx(a,s).greaterThan(0),a.negate(),a),S=Xm(gF(s,v,Pa(1).div(b))),T=Hhe(()=>{let oe=Pa(c*2).toVar(),Ae=Pa(0).toVar();return cF(64,()=>{let Ie=i.add(S.mul(oe)),Xe=t.sdfNode(Ie),at=r.sample(Ie).r;Yw(oe.greaterThan(c*4).and(Xe.greaterThan(0).or(at.greaterThan(l.cutThreshold))),()=>{pF()}),Ae.assign(oe),oe.addAssign(px(fF(Xe).mul(.7),c,d/12)),Yw(oe.greaterThan(d*2),()=>{pF()})}),cF(5,()=>{let Ie=Ae.add(oe).mul(.5),Xe=i.add(S.mul(Ie));Yw(t.sdfNode(Xe).lessThan(0).and(r.sample(Xe).r.lessThan(l.cutThreshold)),()=>{Ae.assign(Ie)}).Else(()=>{oe.assign(Ie)})}),dx(i.add(S.mul(oe)),oe)})(),w=y(T.xyz),N=mx(cx(w,S).lessThan(0),w.negate(),w),C=gF(S,N.negate(),b),R=mF(C).lessThan(1e-4),E=mx(R,Jw(S,N),C),P=l.model.mul(dx(T.xyz,1)).xyz,I=oe=>{let Ae=m(oe),Ie=xF.mul(dx(P,1)).xyz,Xe=yF(xF).mul(Ae),at=Pa(-35).sub(Ie.z).div($he(Xe.z,-.001)),W=Ie.add(Xe.mul(px(at,0,150))),j=Zhe.mul(dx(W,1)),G=Xhe(j.x.div(Sc(j.w,.001)).mul(.5).add(.5),j.y.div(Sc(j.w,.001)).mul(-.5).add(.5));return z1(o,px(G,0,1)).add(g(Ae,h).mul(l.backlight))},O=l.dispersion.mul(u.dispersion).mul(.025),L=Xm(Jhe(S,N).add(Xn(1e-5,0,0))),X=Xn(I(Xm(E.add(L.mul(O)))).r,I(E).g,I(Xm(E.sub(L.mul(O)))).b),z=Zw(b.sub(1).div(b.add(1)),2),H=z.add(Pa(1).sub(z).mul(Zw(Pa(1).sub(px(cx(v,s.negate()),0,1)),5))).mul(u.reflections),ue=mx(R,Pa(1),z.add(Pa(1).sub(z).mul(Zw(Pa(1).sub(fF(cx(N,S))),5)))),ne=T.w.mul(l.thicknessScale),re=qhe(Yhe(Sc(l.attColor,Xn(.001))).mul(ne.div(Sc(l.attDist,.01))).mul(u.absorption)),ce=g(m(Jw(s,v)),h),ge=g(m(Jw(S,N)),h),ye=X.mul(Pa(1).sub(ue)).add(ge.mul(ue)).mul(re);return{reflected:ce.mul(H),transmitted:ye.mul(Pa(1).sub(H)),distance:ne}}var{Fn:Khe,Loop:ede,int:vF,exp:tde,clamp:rde,vec2:$m,vec3:ide,float:fx,texture:Qw,abs:sde,pow:Kw,max:ade,smoothstep:nde}=Jr;function e2(e,t,r,i,s=fx(0)){if(!e)return fx(0);let a=Kw(sde(r),ide(6)),n=a.div(ade(a.x.add(a.y).add(a.z),.001)),o=(l,u)=>$m(l.x.mul(.932).sub(l.y.mul(.362)),l.x.mul(.362).add(l.y.mul(.932))).mul(i).add(u).add($m(s.mul(.217),s.mul(.371)));return Qw(e,o(t.yz,$m(.317,.173))).r.mul(n.x).add(Qw(e,o(t.zx,$m(.619,.431))).r.mul(n.y)).add(Qw(e,o(t.xy,$m(0))).r.mul(n.z))}function ode(e,t,r,i,s){let a=Zy(Bo(e.mul(r).add(t.mul(2)),3).mul(.5).add(.5),i,s),n=Bo(e.mul(r.mul(32)).add(t.mul(3.1)),3).mul(.5).add(.5);return Kw(a,1.5).mul(nde(.3,.69,n))}function bF(e,t,r,i,s,a,n){return Khe(()=>{let o=fx(0).toVar();return ede({start:vF(0),end:vF(3),type:"int",condition:"<"},({i:l})=>{let u=fx(l).add(.5).div(3),h=t.add(i.mul(s).mul(u));o.addAssign(Kw(e2(e,h,r,a,u),1.6).mul(tde(u.mul(-.7))))}),rde(o.div(3).mul(n),0,.45)})()}var{Fn:lde,If:ude,vec3:TF,vec4:SF,float:Ql,dot:hde,smoothstep:_c,normalize:dde,clamp:cde,dFdx:pde,dFdy:mde,length:_F,max:fde}=Jr;function wF(e){let t=Lm(e+11);return[0,1,2].map(()=>{let r=new F(t()*2-1,t()*2-1,t()*2-1).normalize();return TF(r.x,r.y,r.z)})}function MF(e,t,r,i,s,a,n,o=!1){let l=ne=>o?Ql(1).sub(_c(.35,1.25,fde(_F(pde(e.mul(ne))),_F(mde(e.mul(ne)))))):Ql(1),u=ode(e,r,a.frostScale,a.frostThreshold,a.frostSoftness),h=gi(u.add(a.interiorFrost)).mul(n.frost),d=(ne,re)=>ne.sub(re.mul(hde(ne,re)).mul(Ql(1).sub(Ql(1).div(a.smudgeAniso)))),c=SF(ws(d(e.mul(a.smudgeScale),i[0]).add(r.mul(3))),ws(d(e.mul(a.smudgeScale),i[1]).add(r.mul(4))),ws(d(e.mul(a.smudgeScale),i[2]).add(r.mul(5))),ws(e.mul(a.smudgeScale.mul(1.7)).add(r.mul(7)))),m=_c(.45,.85,c.x.mul(.5).add(.5)).add(_c(.45,.85,c.y.mul(.5).add(.5))).add(_c(.45,.85,c.z.mul(.5).add(.5))),g=_c(.6,.72,c.w.mul(.5).add(.5)),y=TF(Bo(e.mul(a.smudgeMaskScale).add(r.mul(21)),2).mul(.5).add(.5),Bo(e.mul(a.bumpMaskScale).add(r.mul(27)),2).mul(.5).add(.5),Bo(e.mul(a.regionScale).add(r.mul(33)),2).mul(.5).add(.5)),b=Zy(y.x,Ql(1).sub(a.smudgeCoverage),.35),v=Zy(y.y,Ql(1).sub(a.microCoverage),.35),S=Zy(y.z,Ql(1).sub(a.regionCoverage),.45),T=gi(m.div(3).add(g.mul(.6)).mul(a.smudgeAmount).mul(b)).mul(n.smudges),w=s.sampleCrack(e),N=hx.warpDomain(e,w.xyz,a.crackLarge,a.crackWarp).add(r.mul(.37)),C=lde(()=>{let ne=SF(0,0,1,1).toVar();return ude(n.cracks.greaterThan(.5),()=>{ne.assign(s.materialPlanes?s.materialPlanes.sample(N):bm(N,a.seed,a.crackCoverage))}),ne})(),R=C.w.div(a.crackLarge),E=Ql(1).sub(a.veinContrast.mul(Bo(e.mul(a.veinScale).add(r.mul(41)),2).mul(.5).add(.5))),P=_c(a.crackWidth.mul(5),0,R).mul(a.surfaceCrack).mul(S).mul(E).mul(n.cracks),I=gi(t.y.mul(.5).add(.5)),O=Na(e.mul(a.crystalScale).add(r)).mul(a.crystalBump).mul(.6).mul(n.crystals).mul(l(a.crystalScale)),L=Na(e.mul(a.edgeBumpScale).add(r.mul(13))).mul(a.edgeBump).mul(.5).mul(n.grain).mul(l(a.edgeBumpScale)),X=Na(e.mul(a.microScale).add(r.mul(5))).mul(a.microBump).mul(v).mul(n.micro).mul(l(a.microScale)),z=Na(e.mul(a.rippleScale).add(r.mul(9))).mul(a.rippleBump).mul(I).mul(n.ripples).mul(l(a.rippleScale)),H=O.add(L).sub(X).sub(z).sub(C.xyz.mul(P).mul(.6)),ue=dde(t.add(H.mul(n.surfaceBumps)));return{frost:h,smudge:T,surfCrack:P,nSurface:ue,regionMask:S,roughness:cde(a.baseRough.add(h.mul(a.frostRough)).add(T.mul(a.smudgeRough)).add(P.mul(.12)),.015,.8)}}var{Fn:Kl,vec3:ei,vec4:$n,float:yi,uniform:je,varying:gde,texture:yde,vec2:gx,positionLocal:xde,normalLocal:NF,cameraPosition:vde,transformNormalToView:AF,normalize:yx,dot:bde,length:wc,max:As,min:xx,abs:CF,pow:eye,exp:Tde,mix:vx,smoothstep:mh,clamp:qm,reflect:tye,select:RF,If:fh,Loop:EF,Break:PF,int:BF,output:t2,screenUV:r2}=Jr,Sde=0,i2=-1;function s2(e){i2=e}function _de({shape:e,erosion:t,seed:r,environment:i,fractureDetail:s,backdrop:a,meshEntry:n,glassMatcap:o,voronoiCells:l="27"}){let u=l==="8"?ase:A_,h=Lm(r+11),d={model:je(new We),envStrength:je(1),backlight:je(.4),inclusionAmount:je(.3),inclusionScale:je(.4),baseColor:je(new gt("#f8f8f8")),ior:je(1.36),dispersion:je(.02),thicknessScale:je(1),attDist:je(.9),attColor:je(new gt("#cfd2d4")),baseRough:je(.05),frostScale:je(1.6),frostThreshold:je(.5),frostSoftness:je(.28),frostRough:je(.65),frostDiffuse:je(.55),crystalBump:je(.12),crystalScale:je(28),crackLarge:je(1.6),crackWarp:je(.45),crackCoverage:je(.55),regionScale:je(.8),regionCoverage:je(.7),veinScale:je(5),veinContrast:je(.7),crackFine:je(5.5),crackFineAmount:je(.45),fineCoverage:je(.35),fineNearLarge:je(.75),crackWidth:je(.004),crackBright:je(.4),crackDark:je(.5),crackRefr:je(.02),surfaceCrack:je(.35),crackSteps:je(14),smudgeAmount:je(.6),smudgeCoverage:je(.55),smudgeMaskScale:je(1.2),smudgeAniso:je(6),smudgeRough:je(.35),smudgeWhite:je(.08),smudgeScale:je(3.2),microBump:je(.25),microScale:je(60),microCoverage:je(.6),rippleBump:je(.3),rippleScale:je(9),bumpMaskScale:je(1.5),clearcoat:je(.3),clearcoatRough:je(.08),specularIntensity:je(1),interiorScatter:je(.25),deformAmp:je(.045),deformFreq:je(1.1),seed:je(r),edgeWidth:je(.35),edgeInset:je(.06),edgeBump:je(.6),edgeBumpScale:je(55),refrostStrength:je(1),cutThreshold:je(.7),cutSoft:je(.04),interiorSteps:je(24),interiorFrost:je(0),crumbleGlow:je(.15),edgeWhite:je(.5),lightDir:je(new F(0,1,0)),modelInv:je(new We),jitter:je(new fe),adaptiveSteps:je(0),powderTone:je(new gt("#dcdcdc")),keyIntensity:je(3.2),keyColor:je(new gt("#ffffff")),hover:je(0)},c=Object.fromEntries(Object.keys(Qd).map(V=>[V,je(Number(Qd[V]))])),m=ei(r*.731,r*.137,r*.529),g=wF(r),y=qa.matcap?new Pd:new mS,b=new F,v=new si,S=-1;y.side=ii,y.transparent=!1,y.metalness=0,y.transmission=1;let T=V=>Bo(V.mul(d.deformFreq).add(m),3).mul(d.deformAmp),w=V=>mh(d.cutThreshold.sub(d.edgeWidth),d.cutThreshold.sub(d.edgeWidth.mul(.15)),V),N=Kl(()=>{let V=xde,Oe=NF,tt=T(V),Je=t.sample(V).r,ct=w(Je),_e=t.sampleCrack(V).w.mul(d.surfaceCrack).mul(c.cracks).mul(c.surfaceBumps).mul(.012);return V.add(Oe.mul(tt.sub(ct.mul(d.edgeInset)).sub(_e)))})();y.positionNode=N;let C=gde(N),R=d.modelInv.mul($n(vde,1)).xyz,E=yx(C.sub(R)),P=d.lightDir,I=n?.position.sample(r2),O=n?.normal.sample(r2).xyz,L=n?n.depth.sample(r2).r.lessThan(.999999).and(t.sample(I.xyz).r.lessThan(d.cutThreshold)):null,X=Kl(()=>{let V=R,Oe=it=>RF(it.greaterThanEqual(0),yi(1),yi(-1)).div(As(CF(it),1e-6)),tt=ei(Oe(E.x),Oe(E.y),Oe(E.z)),Je=ei(-e.bound).sub(V).mul(tt),ct=ei(e.bound).sub(V).mul(tt),_e=xx(Je,ct),nt=As(Je,ct),dt=As(As(_e.x,As(_e.y,_e.z)),0),ft=xx(xx(nt.x,xx(nt.y,nt.z)),wc(C.sub(R))),Fe=$n(C,-1).toVar();return n&&fh(L,()=>{Fe.assign($n(I.xyz,wc(I.xyz.sub(R))))}),fh(ft.greaterThan(dt).and(Fe.w.lessThan(0)),()=>{let it=yi(2*t.bound/t.res),Rt=e.voxelSize??it,Ft=Rt.mul(.4),Ze=dt.toVar();EF(192,()=>{fh(Ze.greaterThan(ft),()=>{PF()});let ht=V.add(E.mul(Ze)),Yt=e.sdfNode(ht);fh(Yt.lessThanEqual(.001).and(t.sample(ht).r.lessThan(d.cutThreshold)),()=>{Fe.assign($n(ht,Ze)),PF()}),Ze.addAssign(As(Yt.sub(Ft).mul(.7),Rt.mul(.35)))}),fh(Fe.w.lessThan(0).and(t.sample(C).r.lessThan(d.cutThreshold)),()=>{Fe.assign($n(C,ft))})}),Fe})(),z=X.w,H=X.xyz,ue=.02,ne=ei(t.sample(H.add(ei(ue,0,0))).r.sub(t.sample(H.sub(ei(ue,0,0))).r),t.sample(H.add(ei(0,ue,0))).r.sub(t.sample(H.sub(ei(0,ue,0))).r),t.sample(H.add(ei(0,0,ue))).r.sub(t.sample(H.sub(ei(0,0,ue))).r)),re=wc(ne),ce=e.voxelSize?e.voxelSize.mul(.75):yi(ue),ge=ei(e.sdfNode(H.add(ei(ce,0,0))).sub(e.sdfNode(H.sub(ei(ce,0,0)))),e.sdfNode(H.add(ei(0,ce,0))).sub(e.sdfNode(H.sub(ei(0,ce,0)))),e.sdfNode(H.add(ei(0,0,ce))).sub(e.sdfNode(H.sub(ei(0,0,ce))))),ye=()=>RF(wc(ge).greaterThan(1e-5),ge.div(As(wc(ge),1e-5)),NF.negate()),oe=n?Kl(()=>{let V=ei(0).toVar();return fh(L,()=>V.assign(yx(O))).Else(()=>V.assign(ye())),V})():ye(),Ae=yx(vx(oe,ne.div(As(re,1e-5)),mh(.02,.15,re).mul(c.cutNormals))),Ie=H,{frost:Xe,smudge:at,surfCrack:W,nSurface:j,regionMask:G,roughness:ae}=MF(Ie,Ae,m,g,t,d,c,qa.aa);y.normalNode=AF(j.negate());let be=wc(C.sub(H)),Be=Kl(()=>{let V=yi(0).toVar(),Oe=qm(d.crackSteps.div(4).floor(),2,6).toVar();EF({start:BF(0),end:BF(Oe),type:"int",condition:"<"},({i:Je})=>{let ct=yi(Je).add(.5).div(Oe),_e=H.add(E.mul(be).mul(ct)).toVar(),nt=t.sampleCrack(_e),dt=hx.warpDomain(_e,nt.xyz,d.crackLarge,d.crackWarp).add(m.mul(.37)),ft=t.materialPlanes?t.materialPlanes.sample(dt):bm(dt,d.seed,d.crackCoverage),Fe=As(d.crackWidth.mul(d.crackLarge),.001),it=yi(1).sub(mh(Fe,Fe.mul(2.5),ft.w)),Rt=yi(1).sub(d.veinContrast.mul(Bo(_e.mul(d.veinScale).add(m.mul(41)),2).mul(.5).add(.5))),Ft=t.materialPlanes?t.materialPlanes.sample(dt.mul(d.crackFine.div(d.crackLarge)).add(m),!0):bm(dt.mul(d.crackFine.div(d.crackLarge)).add(m),d.seed.add(7),d.fineCoverage),Ze=As(d.crackWidth.mul(d.crackFine).mul(.35),.001),ht=yi(1).sub(mh(Ze,Ze.mul(2.5),Ft.w)),Yt=vx(yi(1),yi(1).sub(mh(.03,.25,ft.w)),d.fineNearLarge),Tr=mh(.24,.68,Bo(_e.mul(38).add(m),2).mul(.5).add(.5)),Gi=it.mul(Tr).add(ht.mul(d.crackFineAmount).mul(Yt)),na=mh(.85,.35,t.sample(_e).r),lu=CF(bde(ft.xyz,P)).mul(.6).add(.4);V.addAssign(Gi.mul(Rt).mul(G).mul(na).mul(lu).mul(Tde(ct.mul(be).div(As(d.attDist,.01)).negate())))});let tt=qm(V.div(Oe),0,1);return $n(tt.mul(d.crackBright),yi(1).sub(tt.mul(d.crackDark).mul(.15)),0,0)})(),$=Kl(()=>{let V=$n(0,1,0,0).toVar();return fh(c.cracks.greaterThan(.5),()=>{V.assign(Be)}),V})(),U=As(be.mul(d.thicknessScale),.001),J=(V,Oe)=>e2(s,V,Ae,d.inclusionScale,Oe),q=Hm==="photographic"?bF(s,Ie,Ae,E,be,d.inclusionScale,d.inclusionAmount).mul(c.scatter):yi(0),se=qm(Xe.mul(d.frostDiffuse).add(at.mul(d.smudgeWhite)).add(q.mul(.65)),0,.65),pe=Hm==="photographic"?J(Ie,yi(0)).mul(c.frost):yi(0);y.roughnessNode=qm(ae.add(pe.mul(.22)),.015,.8),y.iorNode=d.ior,y.dispersionNode=d.dispersion.mul(c.dispersion),y.thicknessNode=U,y.attenuationDistanceNode=As(d.attDist,.01),y.attenuationColorNode=vx(ei(1),d.attColor,c.absorption),y.colorNode=d.baseColor,y.clearcoatNode=d.clearcoat.mul(c.clearcoat),y.clearcoatRoughnessNode=d.clearcoatRough,y.specularIntensityNode=d.specularIntensity.mul(c.reflections);let Te=$.x.add(W.mul(.3)).mul(d.keyIntensity).mul(.3),we=se.mul(d.interiorScatter).mul(c.scatter);if(y.emissiveNode=d.keyColor.mul(Te.add(we.mul(.3))),qa.matcap){let V=yx(AF(j)),Oe=V.xy.mul(.495).add(.5),tt=ae.mul(ae).mul(.06),Je=_e=>yde(o,qm(_e,.002,.998)).rgb,ct=Je(Oe).mul(.4).add(Je(Oe.add(gx(tt,0))).mul(.15)).add(Je(Oe.sub(gx(tt,0))).mul(.15)).add(Je(Oe.add(gx(0,tt))).mul(.15)).add(Je(Oe.sub(gx(0,tt))).mul(.15)).mul(d.envStrength);y.outputNode=Kl(()=>{z.lessThan(0).discard();let _e=As(se,yi(1).sub(c.transmission)),nt=d.baseColor.mul(ct.mul(.5).add(ei(.2)).mul(d.keyIntensity));return $n(vx(ct.mul($.y),nt,_e).add(d.keyColor.mul(Te)).add(d.keyColor.mul(q.mul(d.backlight).mul(.8))),1)})()}else if(Hm==="physical")y.transmissionNode=c.transmission.mul(yi(1).sub(se)),y.outputNode=Kl(()=>(z.lessThan(0).discard(),$n(t2.rgb.mul($.y),t2.a)))();else{let V=qa.fast?zhe({ray:E,normal:j,environment:i,u:d,f:c,roughness:ae,path:be}):Qhe({shape:e,erosion:t,p:Ie,ray:E,normal:j,environment:i,backdrop:a,u:d,f:c,roughness:ae});y.transmission=0,y.transmissionNode=null,y.outputNode=Kl(()=>{z.lessThan(0).discard();let Oe=V.reflected.add(V.transmitted.mul($.y)),tt=As(se,yi(1).sub(c.transmission)),Je=Oe.mul(yi(1).sub(tt)).add(t2.rgb.mul(tt)),ct=d.keyColor.mul(q.mul(d.backlight).mul(.8));return $n(Je.add(ct).add(d.keyColor.mul(Te)),1)})()}function ie(V,Oe,tt,Je){if(le.version!==S){S=le.version;let _e=le.ice,nt=le.erosion,dt=le.shape,ft=le.healing;for(let it of Object.keys(c))c[it].value=Number(_e.features?.[it]??Qd[it]);d.baseColor.value.set(_e.baseColor??"#ffffff"),d.envStrength.value=_e.envIntensity,d.backlight.value=_e.backlight??.4,d.inclusionAmount.value=_e.inclusionAmount??.3,d.inclusionScale.value=_e.inclusionScale??.4,d.ior.value=_e.ior,d.dispersion.value=_e.dispersion,d.thicknessScale.value=_e.thicknessScale,d.attDist.value=_e.attenuationDistance,d.attColor.value.set(_e.attenuationColor),d.baseRough.value=_e.baseRoughness,d.frostScale.value=_e.frost.scale,d.frostThreshold.value=_e.frost.threshold,d.frostSoftness.value=_e.frost.softness,d.frostRough.value=_e.frost.roughness,d.frostDiffuse.value=_e.frost.diffuse,d.crystalBump.value=_e.frost.crystalBump,d.crystalScale.value=_e.frost.crystalScale;let Fe=_e.cracks;d.crackLarge.value=Fe.largeScale,d.crackWarp.value=Fe.warp,d.crackCoverage.value=Fe.coverage,d.regionScale.value=Fe.regionScale,d.regionCoverage.value=Fe.regionCoverage,d.veinScale.value=Fe.veinScale,d.veinContrast.value=Fe.veinContrast,d.crackFine.value=Fe.fineScale,d.crackFineAmount.value=Fe.fineAmount,d.fineCoverage.value=Fe.fineCoverage,d.fineNearLarge.value=Fe.fineNearLarge,d.crackWidth.value=Fe.width,d.crackBright.value=Fe.brightness,d.crackDark.value=Fe.darkness,d.crackRefr.value=Fe.refraction,d.surfaceCrack.value=Fe.surfaceStrength,d.crackSteps.value=Fe.steps,d.adaptiveSteps.value=le.performance.adaptiveSteps?1:0,d.smudgeAmount.value=_e.smudges.amount,d.smudgeCoverage.value=_e.smudges.coverage,d.smudgeMaskScale.value=_e.smudges.maskScale,d.smudgeAniso.value=_e.smudges.anisotropy,d.smudgeRough.value=_e.smudges.roughness,d.smudgeWhite.value=_e.smudges.whiteness,d.smudgeScale.value=_e.smudges.scale,d.microBump.value=_e.bumps.microBump,d.microScale.value=_e.bumps.microScale,d.microCoverage.value=_e.bumps.microCoverage,d.rippleBump.value=_e.bumps.rippleBump,d.rippleScale.value=_e.bumps.rippleScale,d.bumpMaskScale.value=_e.bumps.maskScale,d.clearcoat.value=_e.clearcoat,d.clearcoatRough.value=_e.clearcoatRoughness,d.specularIntensity.value=_e.specularIntensity,d.interiorScatter.value=_e.interiorScatter,d.deformAmp.value=dt.deformAmplitude,d.deformFreq.value=dt.deformFrequency,d.edgeWidth.value=nt.edgeWidth,d.cutThreshold.value=nt.cutThreshold,d.cutSoft.value=nt.cutSoftness,d.edgeInset.value=nt.edgeInset,d.interiorSteps.value=nt.interiorSteps,d.interiorFrost.value=nt.interiorFrost,d.crumbleGlow.value=_e.crumbleGlow,d.edgeWhite.value=_e.edgeWhiteness,d.edgeBump.value=nt.edgeBump,d.edgeBumpScale.value=nt.edgeBumpScale,d.refrostStrength.value=ft.refrostStrength,d.powderTone.value.set(le.powder.baseTone),d.keyIntensity.value=le.lighting.key.intensity,d.keyColor.value.set(le.lighting.key.color)}b.copy(tt.position).sub(tt.target.position).normalize(),Je.getWorldQuaternion(v).invert(),d.lightDir.value.copy(b.applyQuaternion(v)),d.model.value.copy(Je.matrixWorld),d.modelInv.value.copy(Je.matrixWorld).invert();let ct=i2>=0?i2:++Sde;d.jitter.value.set(ct*.7548776662%1,ct*.5698402909%1)}return{material:y,uniforms:d,features:c,update:ie}}var wde=typeof window<"u"&&window.__frostAssetBase||"assets/",a2=e=>wde+e,Mde="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/frost-sequence-camera-orbit/shards-atlas.png",Ym=4,Nde=[[.8035,.94],[.94,.8055],[.7254,.94],[.94,.8764],[.94,.9233],[.7478,.94],[.94,.8079],[.6781,.94],[.94,.8965],[.94,.8612],[.7025,.94],[.8094,.94],[.94,.903],[.8238,.94],[.94,.7249],[.8374,.94]],{Fn:Zm,instancedArray:n2,instanceIndex:Ade,uint:Is,int:IF,float:Jm,ivec3:gh,vec3:FF,vec4:LF,If:Qm,Loop:Cde,atomicStore:Rde,atomicLoad:Ede,atomicMin:Pde,clamp:kF,floor:Bde,length:DF,dot:Ide,select:Fde,texture3D:Lde,textureStore:kde}=Jr,Km=32,OF=e=>4*e/Km,bx=4294967295,Dde=class{constructor(e,t,r,i){this.erosion=e;let s=Km,a=s**3,n=Ade,o=e.bound,l=(T,w)=>gh(T.mod(Is(w)),T.div(Is(w)).mod(Is(w)),T.div(Is(w*w))),u=T=>Is(T.x).add(Is(T.y).mul(Is(s))).add(Is(T.z).mul(Is(s*s))),h=T=>kF(gh(Bde(T.div(2*o).add(.5).mul(s))),gh(0),gh(s-1)),d=T=>FF(T).add(.5).div(s).sub(.5).mul(2*o),c=Zm(()=>{Rde(this.seeds.element(n),Is(bx))})().compute(a,[64]),m=Zm(()=>{let T=r.meta.element(n).x;Qm(T.greaterThan(.5).and(T.lessThan(2.5)),()=>{Pde(this.seeds.element(u(h(r.rest.element(n).xyz))),Is(n))})})().compute(t,[64]),g=Zm(()=>{this.owners[0].element(n).assign(Ede(this.seeds.element(n)))})().compute(a,[64]);this.prepareNodes=[c,m,g];let y=0;for(let T of[16,8,4,2,1,1]){let w=this.owners[y],N=this.owners[1-y];this.prepareNodes.push(Zm(()=>{let C=l(n,s).toVar(),R=d(C).toVar(),E=Is(bx).toVar(),P=Jm(1e30).toVar(),I={start:IF(-1),end:IF(1),condition:"<="};Cde(I,I,I,({i:O,j:L,k:X})=>{let z=kF(C.add(gh(O,L,X).mul(T)),gh(0),gh(s-1)),H=w.element(u(z)).toVar();Qm(H.notEqual(Is(bx)),()=>{let ue=r.rest.element(H).xyz.sub(R),ne=Ide(ue,ue).toVar();Qm(ne.lessThan(P).or(ne.equal(P).and(H.lessThan(E))),()=>{E.assign(H),P.assign(ne)})})}),N.element(n).assign(E)})().compute(a,[64])),y=1-y}let b=this.owners[y],v=e.res,S=Lde(e.tex);this.updateNode=Zm(()=>{let T=l(n,v).toVar(),w=FF(T).add(.5).div(v).sub(.5).mul(2*o).toVar(),N=b.element(u(h(w))).toVar(),C=S.load(T).level(0).toVar().r.toVar();Qm(N.notEqual(Is(bx)),()=>{let R=r.rest.element(N).xyz.toVar(),E=i.model.mul(LF(R,1)).xyz,P=DF(r.pos.element(N).xyz.sub(E)),I=r.meta.element(N).x,O=DF(w.sub(R)),L=i.landRadius.add(Jm(OF(o)).div(Jm(1).add(O.div(2*o/s)))),X=I.greaterThan(1.5).and(I.lessThan(2.5)).or(I.greaterThan(4.5)).or(I.lessThan(.5));Qm(X.and(P.lessThanEqual(L)),()=>{C.assign(0)})}),kde(e.scratch,T,LF(C,0,Fde(C.lessThan(.5),Jm(1),Jm(0)),0)).toWriteOnly()})().compute(v**3,[64])}seeds=n2(Km**3,"uint").toAtomic();owners=[n2(Km**3,"uint"),n2(Km**3,"uint")];prepareNodes;updateNode;prepare(e){for(let t of this.prepareNodes)e.compute(t)}update(e){e.compute(this.updateNode),this.erosion.commitAssembly(e)}dispose(){for(let e of[this.seeds,...this.owners])e.value.dispose?.()}},{refract:Ode,log:Ude,output:o2,attribute:zde,positionView:Vde,reflect:Gde,vec2:UF,Fn:Go,vec3:vr,vec4:xi,float:De,uniform:Se,instancedArray:Mc,storage:ef,instanceIndex:Tx,If:Nt,Loop:Sx,int:yh,uint:vt,uvec3:Wde,ivec3:br,atomicAdd:Nc,atomicSub:jde,atomicLoad:Hde,atomicStore:zF,max:Xt,min:Wo,abs:Ac,dot:xh,length:Bi,normalize:Fs,exp:vh,mix:ti,smoothstep:jo,clamp:Ls,select:qt,floor:bh,fract:rye,sin:tf,cos:l2,sqrt:VF,texture3D:u2,textureStore:Xde,positionLocal:h2,normalLocal:$de,transformNormalToView:GF,varying:eu,cameraPosition:qde,screenUV:_x,mat3:Cc,mat4:iye,pow:Th,Break:sye,Continue:aye,cross:rf,step:WF,negate:nye,uv:Yde,texture:Zde,uniformArray:Jde,cameraViewMatrix:Qde}=Jr,d2=null;function Kde(){if(!d2){let e=new tb().load(Mde);e.flipY=!1,e.colorSpace=Fa,e.wrapS=e.wrapT=Ti,e.minFilter=Ia,e.magFilter=lr,e.generateMipmaps=!0,e.anisotropy=4,d2=e}return d2}var Ho=0,ece=1,jF=2,tce=3,rce=4,HF=5,ice=class{constructor(e){this.o=e;let{count:t,strays:r,rand:i,shape:s}=e;this.total=t+r;let a=this.total,n=le.powder,o=rI(s,t,n.nearSurfaceFraction,n.nearSurfaceDepth,i),l=new Float32Array(a*4),u=new Float32Array(a*4),h=new Float32Array(a*4),d=new Float32Array(a*4),c=new Float32Array(a*4),m=[n.grainSizes.tinyDustRatio,n.grainSizes.smallGrainRatio,n.grainSizes.mediumClumpRatio,.01],g=m.reduce((R,E)=>R+E,0),y=[m[0]/g,(m[0]+m[1])/g,(m[0]+m[1]+m[2])/g],b=Math.cbrt(8*s.bound**3/Math.max(100,e.clumpCount)),v=Math.ceil(s.bound/b)+1,S=v*2+1,T=new Map;for(let R=0;R.2&&(H=2);let ue=Math.floor(I/b)+v,ne=Math.floor(O/b)+v,re=Math.floor(L/b)+v,ce=ue+ne*S+re*S*S,ge=T.get(ce);ge===void 0&&(ge=R,T.set(ce,R)),h[P]=I,h[P+1]=O,h[P+2]=L,h[P+3]=.35+i()*.4,l[P]=I,l[P+1]=O,l[P+2]=L,d[P]=Ho,d[P+1]=i(),d[P+2]=H,d[P+3]=ge}for(let R=0;Rn.atomics.element(vt(u).add(vt(I))),b=I=>n.atomics.element(I),v=I=>n.atomics.element(vt(h).add(I)),S=I=>qt(I.lessThan(.5),a.dustScale,qt(I.lessThan(1.5),a.grainScale,qt(I.lessThan(2.5),a.clumpScale,a.fragmentScale))),T=I=>qt(I.lessThan(.5),vt(1),qt(I.lessThan(1.5),vt(2),qt(I.lessThan(2.5),vt(5),vt(12))));this.nodes.snapshotLeaders=Go(()=>{n.leaders.element(l).assign(xi(n.pos.element(l).xyz,n.meta.element(l).x))})().compute(s,[64]);let w=I=>{let O=Ls(I,0,1);return qt(O.lessThan(.5),Th(2,O.mul(20).sub(10)).div(2),De(2).sub(Th(2,O.mul(-20).add(10))).div(2))};this.nodes.resetCounters=Go(()=>{Sx(8,({i:I})=>{zF(y(I),vt(0))})})().compute(1,[1]);let N=this.o.turbulence==="fast"?I=>rf(Na(I),Na(I.add(vr(31.7,11.3,57.9)))).mul(1.6):I=>sse(I),C=I=>I.div(Xt(Bi(I),1e-6)),R=(I,O)=>Go(()=>{let L=I,X=n.pos.element(L),z=n.vel.element(L),H=n.rest.element(L),ue=n.meta.element(L),ne=n.heal.element(L),re=ue.x.toVar(),ce=ue.y.toVar(),ge=ue.z.toVar(),ye=ue.w.toVar(),oe=X.xyz.toVar(),Ae=X.w.toVar(),Ie=z.xyz.toVar(),Xe=z.w.toVar(),at=H.xyz.toVar(),W=H.w.toVar(),j=ea(ce,1).toVar(),G=ea(ce,2).toVar(),ae=ea(ce,3).toVar(),be=S(ge).mul(De(1).sub(a.sizeJitter.mul(.5)).add(a.sizeJitter.mul(j))).mul(a.sizeMul).toVar(),Be=a.model.mul(xi(at,1)).xyz.toVar(),$=C(a.normalMat.mul(G1(t,at,.004))).toVar(),U=a.model.mul(xi(0,0,0,1)).xyz.toVar(),J=r.sample(at).toVar(),q=J.r.toVar(),se=J.a.greaterThan(.01),pe=N_(ce.mul(211.7).add(5)).lessThan(a.amount),Te=ne.w.greaterThan(.5),we=()=>{let _e=br(bh(r.uvw(at).mul(De(m)))),nt=g.load(Ls(_e,br(0),br(m-1))).level(0).w;return vt(Ls(nt.mul(65535),0,65535))},ie=()=>{Nc(n.atomics.element(vt(c).add(we())),vt(1))},V=_e=>{let nt=we().toVar(),dt=jde(n.atomics.element(vt(c).add(nt)),vt(1)).toVar();Nt(_e.and(dt.lessThanEqual(vt(1).add(vt(a.stragglers)))),()=>{Nc(n.atomics.element(vt(d).add(nt)),vt(1))})},Oe=()=>{let _e=at.add(this.o.erosion.bound).div(this.o.erosion.bound*2).mul(De(m)),nt=br(bh(_e)).toVar(),dt=a.depositRadius.toVar(),ft=yh(dt.ceil()).toVar(),Fe={start:ft.negate(),end:ft,condition:"<="};Sx(Fe,Fe,Fe,({i:it,j:Rt,k:Ft})=>{let Ze=nt.add(br(it,Rt,Ft)),ht=De(it.mul(it).add(Rt.mul(Rt)).add(Ft.mul(Ft))).lessThanEqual(dt.mul(dt).add(.01));Nt(ht.and(Ze.x.greaterThanEqual(0)).and(Ze.y.greaterThanEqual(0)).and(Ze.z.greaterThanEqual(0)).and(Ze.x.lessThan(m)).and(Ze.y.lessThan(m)).and(Ze.z.lessThan(m)),()=>{let Yt=vt(Ze.x).add(vt(Ze.y).mul(vt(m))).add(vt(Ze.z).mul(vt(m*m)));Nc(v(Yt),vt(1))})})},tt=()=>{let _e=Bi(oe.sub(Be)),nt=Ls(_e.div(a.waveReach),0,1).mul(a.waveTime),dt=r.u.reconstruct.greaterThan(.5).and(a.groupNoise.greaterThan(.5)),ft=qt(dt,ae.mul(a.waveJitter).mul(.04),ae.mul(a.waveJitter)),Fe=nt.add(ft),it=a.groupNoise.greaterThan(1.5),Rt=De(0).toVar();return Nt(r.u.reconstruct.greaterThan(.5).and(a.groupStagger.greaterThan(0).or(it)),()=>{let Ft=qt(a.returnMode.greaterThan(.5),mse(_e,Bi(Ie),a),a.returnDuration.add(.2)),Ze=Xt(0,a.assemblyEnd.sub(a.time).sub(Fe).sub(Ft));Rt.assign(Wo(qt(it,a.frontDuration,a.groupStagger),Ze).mul(qt(a.rigEnabled.greaterThan(.5),C_(at,a),Xt(0,W.sub(2)))))}),a.time.add(nt).add(ft).add(Rt)},Je=()=>a.time.add(j.mul(a.waveTime)).add(ae.mul(a.waveJitter)),ct=()=>{let _e=Be,nt=$,dt=n.meta.element(vt(ye)).y,ft=De(1).sub(a.clumpJitter.mul(.5)).add(a.clumpJitter.mul(N_(dt.mul(77.7)))),Fe=qt(N_(dt.mul(31.3).add(1)).lessThan(a.backwardRatio),De(-1),De(1)),it=Xt(a.strokeSpeed,a.minEject),Rt=a.strokeDir.mul(Fe),Ft=N(_e.mul(a.turbScale).add(a.time.mul(.2))),Ze=Rt.mul(it.mul(a.ejectSpeed).mul(ft)).add(nt.mul(a.ejectSpread).mul(De(.5).add(G)).mul(it.mul(.4))).add(Ft.mul(a.ejectTurb).mul(it.mul(.25)).mul(ae.add(.5))),ht=qt(ge.greaterThan(2.5),De(.35),De(1));Ie.assign(Ze.mul(ht)),oe.assign(_e.add(nt.mul(.002))),Xe.assign(0),Ae.assign(be),re.assign(ece),ne.w.assign(0),ie()};Nt(re.lessThan(.5),()=>{Nt(a.fieldActive.greaterThan(.5),()=>{Nt(q.greaterThan(W),()=>{Nt(pe,()=>{ct()}).Else(()=>{re.assign(rce),ne.w.assign(0)})})})}).ElseIf(re.lessThan(1.5),()=>{Xe.addAssign(a.dt);let _e=jo(a.settleTime.mul(.45),a.settleTime,Xe),nt=N(oe.mul(a.turbScale).add(a.time.mul(.15))).mul(a.turbulence).mul(vh(Xe.mul(a.turbDecay).negate())),dt=n.leaders.element(vt(ye)),ft=dt.w,Fe=qt(ft.greaterThan(.5).and(ft.lessThan(1.5)),dt.xyz.sub(oe).mul(a.cohesion).mul(De(1).sub(_e)),vr(0)),it=vr(0).toVar();Nt(a.repel.greaterThan(.5),()=>{let Ze=a.modelInv.mul(xi(oe,1)).xyz.toVar(),ht=t.sdfNode(Ze).toVar();Nt(ht.lessThan(a.repelRange),()=>{let Gi=gi(De(1).sub(ht.div(a.repelRange))),na=C(a.normalMat.mul(G1(t,Ze,.004)));it.assign(na.mul(a.repelStrength).mul(Gi.mul(Gi)))});let Yt=oe.sub(U),Tr=Bi(Yt).div(a.bound.mul(a.repelRadialRange));Nt(Tr.lessThan(1),()=>{let Gi=De(1).sub(Tr.mul(Tr)),na=C(Yt.add(vr(j.sub(.5),G.sub(.5),ae.sub(.5)).mul(.05)));it.addAssign(na.mul(a.repelRadial).mul(Gi.mul(Gi)))})}),Ie.addAssign(nt.add(Fe).add(it).add(vr(0,a.gravity.negate(),0)).mul(a.dt)),Ie.mulAssign(vh(a.drag.mul(a.dt).negate())),Ie.mulAssign(De(1).sub(_e.mul(Wo(1,a.dt.mul(3))))),oe.addAssign(Ie.mul(a.dt)),oe.addAssign(N(oe.mul(.9).add(a.time.mul(.05))).mul(a.settledDrift).mul(_e).mul(a.dt)),Nt(a.inherit.greaterThan(.5).and(Xe.lessThan(a.inheritTime)),()=>{let Ze=De(1).sub(jo(a.inheritTime.mul(.75),Xt(a.inheritTime,.001),Xe));oe.assign(ti(oe,a.modelDelta.mul(xi(oe,1)).xyz,Ze)),Ie.assign(ti(Ie,Cc(a.modelDelta).mul(Ie),Ze))});let Rt=Bi(Ie);Nt(Rt.greaterThan(a.maxSpeed),()=>{Ie.mulAssign(a.maxSpeed.div(Rt))});let Ft=a.returnAfter.greaterThan(.001).and(Xe.greaterThan(a.returnAfter));Nt(a.heal.greaterThan(.5).or(Ft),()=>{Nt(Te.not(),()=>{ne.w.assign(tt())}),Nt(ne.w.greaterThan(.5).and(a.time.greaterThanEqual(ne.w)),()=>{re.assign(jF),ne.xyz.assign(oe),ne.w.assign(a.time)})}).Else(()=>{ne.w.assign(0)})}).ElseIf(re.lessThan(2.5),()=>{let _e=ne.w.lessThan(-.5),nt=qt(_e,Xe,ne.w).toVar();Nt(_e.not(),()=>{Xe.addAssign(a.dt)});let dt=ne.xyz,ft=Be,Fe=$;Nt(a.returnMode.greaterThan(.5),()=>{let it=a.time.sub(nt),Rt=jo(0,Xt(a.springRamp,.001),it),Ft=a.inherit.mul(De(1).sub(Rt)).mul(De(1).sub(jo(a.inheritTime.mul(.75),Xt(a.inheritTime,.001),Xe)));oe.assign(ti(oe,a.modelDelta.mul(xi(oe,1)).xyz,Ft)),Ie.assign(ti(Ie,Cc(a.modelDelta).mul(Ie),Ft));let Ze=ft.sub(oe),ht=Bi(Ze).toVar(),Yt=qt(r.u.reconstruct.greaterThan(.5).and(a.groupNoise.greaterThan(1.5)),De(1),De(0)),Tr=ti(De(1),ti(De(.55),De(1.8),j),a.speedVariation.mul(Yt)),Gi=a.springK.mul(a.rigStrength).mul(Tr.mul(Tr)).mul(Rt),na=VF(a.springK.mul(a.rigStrength)).mul(Tr).mul(2).mul(a.springDamp).mul(Rt),lu=Bi(ft.sub(dt)),uu=Ls(ht.div(Xt(lu,.05)),0,1),Ch=De(1).sub(jo(.5,2.4,it.mul(Tr))),Fc=C(rf(Fe,vr(G,ae,j).sub(.5)).add(.001)),Lc=rf(Fe,Fc),Rh=it.mul(a.pathSwirl).mul(G.mul(2).sub(1)).add(ae.mul(6.283185)),kc=Fc.mul(l2(Rh)).add(Lc.mul(tf(Rh))).add(Fe.mul(G.sub(.5))).mul(Wo(lu,3)).mul(a.pathBend).mul(.5).mul(uu.mul(.3).add(tf(uu.mul(Math.PI)).mul(.7))).mul(Ch).mul(Yt),xf=a.previousModel.mul(xi(at,1)).xyz,Eh=ft.sub(xf).div(Xt(a.dt,1e-5)),Ph=Ze.add(kc).mul(Gi).sub(Ie.sub(Eh).mul(na)).add(vr(0,a.gravity.negate().mul(De(1).sub(Rt)),0));Ie.addAssign(Ph.mul(a.dt)),Ie.mulAssign(vh(a.drag.mul(a.returnDrag).mul(a.dt).negate()));let Dc=Bi(Ie),Oc=a.returnMaxSpeed.mul(Tr);Nt(Dc.greaterThan(Oc),()=>{Ie.mulAssign(Oc.div(Dc))});let Uc=Ie.mul(a.dt),vf=Bi(Uc);oe.addAssign(qt(vf.greaterThan(ht),Ze,Uc)),Ae.assign(be.mul(qt(a.landShrink.greaterThan(.001),gi(ht.div(Xt(a.landShrink,.001))),De(1))).mul(qt(_e,jo(0,.25,it),De(1))));let bf=ht.lessThan(a.landRadius);Nt(bf,()=>{Nt(_e.not(),()=>{V(se.not().and(r.u.reconstruct.lessThan(.5))),Nt(se.not().and(r.u.reconstruct.lessThan(.5)),()=>{Oe()})}),re.assign(qt(_e,De(Ho),De(HF))),oe.assign(ft),Ie.assign(vr(0)),ne.w.assign(0),Ae.assign(qt(_e.or(r.u.reconstruct.greaterThan(.5)),De(0),be))})}).Else(()=>{let it=Ls(a.time.sub(nt).div(Xt(a.returnDuration,.05)),0,1).toVar(),Rt=Ls(a.time.sub(a.dt).sub(nt).div(Xt(a.returnDuration,.05)),0,1),Ft=w(it),Ze=ti(dt,ft,.5).add(Fe.mul(a.returnCurve).mul(Bi(ft.sub(dt))).mul(.5)).add(vr(G,ae,j).sub(.5).mul(a.returnCurve).mul(.4)),ht=ti(dt,Ze,Ft),Yt=ti(Ze,ft,Ft);oe.assign(ti(ht,Yt,Ft));let Tr=qt(_e,jo(De(1).sub(a.ghostFrac),De(1).sub(a.ghostFrac).add(.08),it),De(1));Ae.assign(be.mul(De(1).sub(jo(.82,1,it))).mul(Tr)),Nt(Rt.lessThan(.85).and(it.greaterThanEqual(.85)).and(_e.not()),()=>{V(se.not().and(r.u.reconstruct.lessThan(.5))),Nt(se.not().and(r.u.reconstruct.lessThan(.5)),()=>{Oe()})}),Nt(it.greaterThanEqual(1),()=>{re.assign(qt(_e,De(Ho),De(HF))),oe.assign(ft),ne.w.assign(0)})}),Nt(r.u.reconstruct.greaterThan(.5).and(_e.not()),()=>{let it=qt(a.groupNoise.greaterThan(1.5),a.landingVariation,De(0)),Rt=De(OF(r.bound)).mul(ti(De(1),ti(De(.35),De(1.65),G),it)),Ft=jo(a.landRadius,Xt(a.landRadius.add(.001),Rt),Bi(ft.sub(oe)));Ae.assign(be.mul(Th(Ft,ti(De(1),ti(De(.45),De(2.2),ae),it)))),Nt(re.greaterThan(4.5),()=>{H.w.assign(2)})})}).ElseIf(re.lessThan(3.5),()=>{let _e=a.time.mul(a.straySpeed).mul(De(.5).add(j)).add(ce.mul(6.2831)),nt=Bi(at.xy),dt=at.z.add(tf(a.time.mul(.3).add(ce.mul(12))).mul(.05)),ft=vr(l2(_e).mul(nt),tf(_e).mul(nt),dt);oe.assign(a.model.mul(xi(ft,1)).xyz),Ae.assign(S(ge).mul(.9).mul(a.sizeMul)),Xe.assign(Xe.add(a.dt))}).ElseIf(re.lessThan(4.5),()=>{Nt(a.heal.greaterThan(.5),()=>{Nt(Te.not(),()=>{ne.w.assign(Je().add(a.returnDuration.mul(De(1).sub(a.ghostFrac))))}),Nt(ne.w.greaterThan(.5).and(a.time.greaterThanEqual(ne.w)),()=>{Nt(a.ghostDist.greaterThan(.001),()=>{let _e=$,nt=C(rf(_e,vr(j.sub(.5),G.sub(.5),ae.sub(.5)).add(.001))),dt=Be.add(_e.mul(a.ghostDist).mul(De(.4).add(j.mul(.6)))).add(nt.mul(a.ghostDist).mul(G.sub(.5)).mul(.8));ne.xyz.assign(dt),ne.w.assign(-1),oe.assign(dt),Xe.assign(a.time.sub(a.returnDuration.mul(De(1).sub(a.ghostFrac)))),Ae.assign(0),re.assign(jF)}).Else(()=>{re.assign(Ho),ne.w.assign(0)})})}).Else(()=>{ne.w.assign(0)})}).Else(()=>{oe.assign(Be),Nt(r.u.reconstruct.greaterThan(.5),()=>{re.assign(Ho),ne.w.assign(0),Ae.assign(0)}).ElseIf(q.lessThan(W),()=>{Nt(ne.w.lessThan(.5),()=>{ne.w.assign(a.time)});let _e=gi(a.time.sub(ne.w).div(Xt(a.landedFade,.01)));Ae.assign(be.mul(De(1).sub(_e))),Nt(_e.greaterThanEqual(1),()=>{re.assign(Ho),ne.w.assign(0),Ae.assign(0)})}).Else(()=>{Ae.assign(be),ne.w.assign(0),Nt(se.and(a.fieldActive.greaterThan(.5)),()=>{ct()})})}),Nt(re.greaterThan(.5).and(re.lessThan(2.5)),()=>{let _e=Ac(oe.x).lessThan(1e30).and(Ac(oe.y).lessThan(1e30)).and(Ac(oe.z).lessThan(1e30)).and(Ac(Ie.x).lessThan(1e30)).and(Ac(Ie.y).lessThan(1e30)).and(Ac(Ie.z).lessThan(1e30)),nt=Bi(oe.sub(U)).greaterThan(a.lostRadius);Nt(_e.not().or(nt),()=>{oe.assign(Be.add($.mul(.05))),Ie.assign(vr(0))})}),X.xyz.assign(oe),X.w.assign(Ae),z.xyz.assign(Ie),z.w.assign(Xe),ue.x.assign(re),Nt(re.greaterThan(.5).and(re.lessThan(3.5)).or(re.greaterThan(4.5)),()=>{let _e=vt(bh(ce.mul(1e3))).mod(vt(i));Nc(y(_e),vt(1));let nt=oe.add(a.densityExtent).div(a.densityExtent.mul(2)).mul(De(o)),dt=br(bh(nt));Nt(dt.x.greaterThanEqual(0).and(dt.y.greaterThanEqual(0)).and(dt.z.greaterThanEqual(0)).and(dt.x.lessThan(o)).and(dt.y.lessThan(o)).and(dt.z.lessThan(o)),()=>{let ft=vt(dt.x).add(vt(dt.y).mul(vt(o))).add(vt(dt.z).mul(vt(o*o)));Nc(b(ft),T(ge))})})})().compute(O,[64]);this.nodes.update=R(Tx,s),this.nodes.updateStrays=this.o.strays>0?R(Tx.add(vt(e)),this.o.strays):null;let E=()=>Wde(l.mod(vt(o)),l.div(vt(o)).mod(vt(o)),l.div(vt(o*o))),P=I=>{let O=Ls(br(I),br(0),br(o-1)),L=vt(O.x).add(vt(O.y).mul(vt(o))).add(vt(O.z).mul(vt(o*o)));return De(Hde(b(L))).mul(a.densityScale)};this.nodes.resolve=Go(()=>{let I=E(),O=P(br(I)).toVar(),L=De(1).sub(vh(O.negate())),X=a.lightDir.mul(De(o)).div(a.densityExtent.mul(2)).toVar(),z=De(0).toVar(),H=vr(I).add(.5).toVar();Sx(6,()=>{H.addAssign(X.mul(.9)),z.addAssign(P(br(bh(H))))});let ue=vh(z.mul(.9).negate()),ne=P(br(I).add(br(1,0,0))).add(P(br(I).add(br(-1,0,0)))).add(P(br(I).add(br(0,1,0)))).add(P(br(I).add(br(0,-1,0)))).add(P(br(I).add(br(0,0,1)))).add(P(br(I).add(br(0,0,-1)))),re=De(1).sub(vh(ne.div(6).add(O).mul(1.2).negate()));Xde(this.densityTex,I,xi(L,ue,re,1)).toWriteOnly()})().compute(o*o*o,[64]),this.nodes.clearDensity=Go(()=>{zF(b(l),vt(0))})().compute(o*o*o,[64]),this.nodes.retargetCount=Go(()=>{let I=n.meta.element(l),O=n.rest.element(l),L=n.pos.element(l),X=I.x.toVar();Nt(X.greaterThan(4.5),()=>{I.x.assign(Ho),L.w.assign(0),n.heal.element(l).assign(xi(0)),X.assign(Ho)}),Nt(X.greaterThan(.5).and(X.lessThan(2.5)),()=>{Nt(r.u.reconstruct.greaterThan(.5).and(a.groupStagger.greaterThan(0).or(a.groupNoise.greaterThan(1.5))),()=>{O.w.assign(De(2).add(qt(a.groupNoise.greaterThan(1.5),C_(O.xyz,a),pse(O.xyz,a.groupScale,a.groupSeed,a.groupNoise))))});let z=br(bh(r.uvw(O.xyz).mul(De(m)))),H=g.load(Ls(z,br(0),br(m-1))).level(0).w;Nc(n.atomics.element(vt(c).add(vt(Ls(H.mul(65535),0,65535)))),vt(1))}).ElseIf(X.lessThan(.5).or(X.greaterThan(3.5).and(X.lessThan(4.5))),()=>{O.w.assign(2)})})().compute(s,[64]),this.nodes.reset=Go(()=>{let I=n.meta.element(l),O=n.vel.element(l),L=n.pos.element(l),X=n.rest.element(l);Nt(I.x.lessThan(2.5).or(I.x.greaterThan(3.5)),()=>{I.x.assign(Ho),O.assign(xi(0)),L.assign(xi(X.xyz,0)),n.heal.element(l).assign(xi(0))})})().compute(s,[64])}buildMeshes(){let{variants:e,rand:t}=this.o,r=this.total,i=this.u,s=this.buffers,a=le.powder.sprites,n=!!a.enabled,o=n?Array.from({length:e},()=>new Kv(2,2)):One(e,t,le.powder.facetedGrains),l=n?Kde():null,u=n?Jde(Nde.map(b=>new fe(b[0],b[1]))):null,h=ef(s.pos.value,"vec4",r).toReadOnly(),d=ef(s.vel.value,"vec4",r).toReadOnly(),c=ef(s.meta.value,"vec4",r).toReadOnly(),m=ef(s.rest.value,"vec4",r).toReadOnly(),g=ef(s.heal.value,"vec4",r).toReadOnly(),y=u2(this.densityTex);for(let b=0;bJy(Jy(vi,vr(0,0,1),L),lu,Gi),Ch=uu(vr(Yt,0,0)),Fc=uu(vr(0,0,1)),Lc=m.element(T),Rh=i.model.mul(xi(Lc.xyz,1)).xyz,kc=i.normalMat.mul(G1(this.o.shape,Lc.xyz,.004)),xf=kc.div(Xt(Bi(kc),1e-6)),Eh=Fs(Cc(Qde).mul(xf).add(vr(0,0,1e-4))),Ph=qt(Eh.z.lessThan(0),Eh.negate(),Eh),Dc=P.greaterThan(1.5).and(P.lessThan(2.5)),Oc=P.greaterThan(4.5),Uc=Bi(Rh.sub(w.xyz)),vf=g.element(T),bf=Xt(Bi(Rh.sub(vf.xyz)),.05),Y2=gi(De(1).sub(Uc.div(bf))),Wx=qt(Oc,De(1),qt(Dc,Th(Y2,i.alignCurve),De(0))).mul(i.alignAmt),Z2=Fs(Ch.sub(Ph.mul(xh(Ch,Ph))).add(vr(1e-4,0,0))),zc=Fs(ti(Fc,Ph,Wx)),jx=Fs(ti(Ch,Z2,Wx)),Tf=Fs(jx.sub(zc.mul(xh(jx,zc)))),Hx=rf(zc,Tf).mul(Yt.mul(Tr)),J2=Tf.mul(h2.x.mul(ht.x).mul(Yt)).add(Hx.mul(h2.y.mul(ht.y).mul(Tr))).mul(H).mul(i.spriteSize);S.positionNode=w.xyz.add(Cc(i.camWorld).mul(J2));let Xx=eu(Tf),$x=eu(Hx),hu=eu(zc),Bh=eu(xi(De(Ze),Yt,Tr,R)),Q2=Bh.x,K2=Bh.y,eM=Bh.z;ge=Bh.w;let Vc=Yde(),tM=ti(Vc.x,De(1).sub(Vc.x),WF(K2,0)),du=ti(Vc.y,De(1).sub(Vc.y),WF(eM,0)),Sf=yh(Q2.add(.5)),rM=De(Sf.mod(yh(Ym))),iM=De(Sf.div(yh(Ym))),qx=u.element(Sf),sM=UF(rM.add(.5).add(tM.sub(.5).mul(qx.x)),iM.add(.5).add(du.sub(.5).mul(qx.y))).div(Ym),_f=Zde(l,sM),Gc=_f.rg.mul(2).sub(1).mul(i.spriteNormal),aM=VF(gi(De(1).sub(xh(Gc,Gc))));$=Fs(Xx.mul(Gc.x).add($x.mul(Gc.y)).add(hu.mul(aM)));let wf=G.nSurface.sub(at);if($=Fs($.add(Xx.mul(wf.x)).add($x.mul(wf.y)).add(hu.mul(wf.z))),S.normalNode=$,S.maskNode=_f.a.greaterThan(i.spriteCut),J=Ls(ae.mul(ye.frostDiffuse).add(G.smudge.mul(ye.smudgeWhite)).add(be.mul(.65)),0,.65),q=gi(_f.a.sub(.35).div(.65)),a.seeThrough>0){S.transparent=!0,S.depthWrite=!1;let vi=Th(gi(De(1).sub(gi(xh($,Be)))),i.fresnelPower),nM=ti(De(.42),De(.85),J).add(vi.mul(.45)).add(De(1).sub(q).mul(.18));S.opacityNode=ti(De(1),gi(nM),i.spriteSee.mul(oe.transmission).mul(oe.shardTransmission))}U=gi(xh($,i.lightDirView).add(i.wrap).div(De(1).add(i.wrap)))}else{ge=eu(R);let Ze=Jy(h2.mul(H),O,L);S.positionNode=w.xyz.add(Ze);let ht=Jy($de,O,L);S.normalNode=GF(ht),$=Fs(GF(ht)),U=gi(xh(Fs(ht),i.lightDir).add(i.wrap).div(De(1).add(i.wrap)))}n||(J=Ls(ae.mul(ye.frostDiffuse).add(G.smudge.mul(ye.smudgeWhite)).add(be.mul(.65)),0,.65));let se=Th(ye.ior.sub(1).div(ye.ior.add(1)),2),pe=se.add(De(1).sub(se).mul(Th(gi(De(1).sub(gi(xh($,Be)))),5))),Te=Hm==="photographic"?e2(this.o.fractureDetail,W,at,ye.inclusionScale).mul(Ae.frost):De(0),we=Ls(G.roughness.add(Te.mul(.22)),.015,.8);S.roughnessNode=we,S.iorNode=ye.ior,S.clearcoatNode=ye.clearcoat.mul(oe.clearcoat).mul(oe.shardReflections),S.clearcoatRoughnessNode=ye.clearcoatRough,S.specularIntensityNode=ye.specularIntensity.mul(oe.reflections).mul(oe.shardReflections);let ie=oe.reflections.mul(oe.shardReflections),V=oe.transmission.mul(oe.shardTransmission),Oe=Ze=>Fs(Cc(i.camWorld).mul(Ze)),tt=Ze=>$w(this.o.environment,ye.envStrength,Ze,we),Je=Be.negate(),ct=Ode(Je,$,De(1).div(Xt(ye.ior,1.001))),_e=Xt(Xe.w.mul(q).mul(ye.thicknessScale),.001),nt=vh(Ude(Xt(ye.attColor,vr(.001))).mul(_e.div(Xt(ye.attDist,.01))).mul(oe.absorption)),dt=Ls(_x.add(ct.xy.sub(Je.xy).mul(_e).mul(.08)),0,1),ft=z1(this.o.backdrop,dt).add(tt(Oe(ct)).mul(ye.backlight)).mul(nt),Fe=tt(Oe(Gde(Je,$))).mul(pe).mul(ie).mul(ye.specularIntensity),it=Xt(J,De(1).sub(V)),Rt=ye.keyColor.mul(G.surfCrack.mul(ye.crackBright).mul(.3).add(be.mul(ye.backlight).mul(.8))).mul(oe.scatter);S.colorNode=ye.baseColor,S.emissiveNode=ye.keyColor.mul(it.mul(ye.interiorScatter).mul(.3)).mul(oe.scatter),S.outputNode=Go(()=>{let Ze=Fe.add(ft.mul(De(1).sub(pe.mul(ie)))).mul(De(1).sub(it)).add(o2.rgb.mul(it)).add(Rt),ht=Xt(o2.a,.001),Yt=z1(this.o.backdrop,_x);return xi(Xt(Ze.sub(Yt.mul(De(1).sub(ht))),vr(0)).div(ht),o2.a)})();let Ft=new Mi(v,S);Ft.frustumCulled=!1,Ft.castShadow=!0,Ft.receiveShadow=!0,this.meshes.push(Ft),this.group.add(Ft),b===0&&(this.material=S)}}hazeNode(e,t,r){let i=this.u,s=u2(this.densityTex);return Go(()=>{let a=_x.mul(2).sub(1),n=UF(a.x,a.y.negate()),o=i.invProj.mul(xi(n.x,n.y,1,1)),l=o.xyz.div(o.w),u=Fs(l),h=Fs(Cc(i.camWorld).mul(u)),d=i.camPos,c=i.densityExtent,m=vr(1).div(h),g=c.negate().sub(d).mul(m),y=c.sub(d).mul(m),b=Xt(Xt(Wo(g.x,y.x),Wo(g.y,y.y)),Wo(g.z,y.z)),v=Wo(Wo(Xt(g.x,y.x),Xt(g.y,y.y)),Xt(g.z,y.z)),S=De(1).div(Xt(u.z.negate(),1e-4)),T=t.negate().mul(S),w=Wo(v,T),N=De(0).toVar();Nt(w.greaterThan(Xt(b,0)).and(i.hazeOn.greaterThan(.5)),()=>{let R=Xt(b,0),E=Xt(i.hazeSteps,4),P=w.sub(R).div(E),I=Po(vr(_x.mul(1234),i.time)).mul(P),O=R.add(I).toVar();Sx({start:yh(0),end:yh(E),type:"int",condition:"<"},()=>{let L=d.add(h.mul(O)).add(c).div(c.mul(2)),X=s.sample(L).level(0);N.addAssign(X.r.mul(X.g).mul(P)),O.addAssign(P)})});let C=i.tone.mul(i.keyColor).mul(i.keyIntensity).mul(N).mul(.35);return xi(C,0)})()}step(e,t,r,i,s,a){let n=le.powder,o=le.healing,l=this.u;l.fieldActive.value=a.fieldActive?1:0,l.hazeOn.value=a.powderActive?1:0,l.dt.value=Math.min(r,1/30),l.time.value=t;let u=this.o.objectGroup.matrixWorld;if(l.model.value.copy(u),l.previousModel.value.copy(this.prevModel),l.normalMat.value.getNormalMatrix(u),l.modelDelta.value.copy(u).multiply(this.inversePrevModel.copy(this.prevModel).invert()),this.prevModel.copy(u),l.strokeDir.value.copy(i.strokeDir),l.strokeSpeed.value=i.strokeSpeed,l.heal.value=pt.healing?1:0,l.fade.value=pt.fade,l.lightDir.value.copy(s.position).sub(s.target.position).normalize(),l.modelInv.value.copy(u).invert(),le.version!==this.settingsVersion){this.settingsVersion=le.version,l.ejectSpeed.value=n.ejectSpeed,l.ejectSpread.value=n.ejectSpread,l.ejectTurb.value=n.ejectTurbulence,l.backwardRatio.value=n.backwardRatio,l.clumpJitter.value=n.clumpSpeedJitter,l.drag.value=n.drag,l.gravity.value=n.gravity,l.turbulence.value=n.turbulence,l.turbScale.value=n.turbulenceScale,l.turbDecay.value=n.turbulenceDecay,l.cohesion.value=n.clumpCohesion,l.settleTime.value=n.settleTime,l.settledDrift.value=n.settledDrift,l.tumble.value=n.tumble,l.returnDuration.value=o.returnDuration,l.returnCurve.value=o.returnCurve,l.inherit.value=n.inheritRotation?1:0,l.inheritTime.value=n.inheritTime/1e3,l.straySpeed.value=n.straySpeed,l.dustScale.value=n.grainSizes.tinyDustSize,l.grainScale.value=n.grainSizes.smallGrainSize,l.clumpScale.value=n.grainSizes.mediumClumpSize,l.fragmentScale.value=n.grainSizes.largeFragmentSize,l.sizeJitter.value=n.grainSizes.sizeJitter,l.sizeMul.value=n.grainSizeMultiplier,l.amount.value=n.amount,l.minEject.value=n.minEjectSpeed,l.minPixel.value=n.minPixelSize,l.waveTime.value=o.waveTime,l.waveJitter.value=o.waveJitter,l.ghostDist.value=o.ghostReturnDistance,l.ghostFrac.value=o.ghostFlightFraction,l.waveReach.value=o.waveReach,l.depositRadius.value=o.depositRadius,l.returnMode.value=o.returnMode==="spring"?1:0,l.springK.value=o.returnSpring,l.springDamp.value=o.returnDamping,l.springRamp.value=o.returnRamp,l.landRadius.value=o.landRadius,l.returnAfter.value=o.returnAfter,l.maxSpeed.value=n.maxSpeed,l.returnDrag.value=o.returnDrag,l.returnMaxSpeed.value=o.returnMaxSpeed,l.lostRadius.value=n.lostRadius,l.stragglers.value=o.cellStragglers,l.spriteSee.value=n.sprites.seeThrough,l.alignAmt.value=o.alignToSurface,l.alignDist.value=o.alignDistance,l.alignCurve.value=o.alignCurve??1,l.landedFade.value=o.landedFade,l.landShrink.value=o.landShrink,l.densityExtent.value=n.densityExtent,l.shadowStrength.value=n.densityShadowStrength,l.aoStrength.value=n.densityAOStrength,l.densityScale.value=.02*(this.o.densityRes/64)**3*(1e6/this.total)**.5,l.tone.value.set(n.baseTone),l.wrap.value=n.wrap,l.keyIntensity.value=le.lighting.key.intensity,l.keyColor.value.set(le.lighting.key.color);let h=n.fragments;l.translucency.value=h.translucency,l.throughTint.value.set(h.throughTint),l.fresnelPower.value=h.fresnelPower,l.fragRough.value=h.roughness,l.fragClearcoat.value=h.clearcoat,l.fragSpecular.value=h.specular,l.sparkle.value=h.sparkle,l.sparkleFraction.value=h.sparkleFraction,l.sparkleSpread.value=h.sparkleSpread;let d=n.sprites;l.spriteSize.value=d.sizeScale,l.spriteTilt.value=Bt.degToRad(d.tilt),l.spriteNormal.value=d.normalStrength,l.spriteFrost.value=d.frostFromAtlas,l.spriteFrostBoost.value=d.frostBoost,l.spriteFrostRough.value=d.frostRoughness,l.spriteEdge.value=d.edgeLight,l.spriteCut.value=d.alphaCut;let c=le.ice.features;if(l.surfaceFrost.value=Number(c.shardFrost&&c.frost),l.surfaceDetail.value=Number(c.shardFrost&&c.scatter),c.shardNormals||(l.spriteNormal.value=0),c.shardFrost||(l.spriteFrost.value=0,l.spriteFrostBoost.value=0),c.shardTransmission||(l.translucency.value=0,l.spriteSee.value=0),c.shardReflections||(l.fragSpecular.value=0,l.fragClearcoat.value=0),c.shardSparkle||(l.sparkle.value=0),c.shardEdges||(l.spriteEdge.value=0),l.repel.value=n.repelFromObject?1:0,l.repelStrength.value=n.repelStrength,l.repelRange.value=n.repelRange,l.repelRadial.value=n.repelRadial,l.repelRadialRange.value=n.repelRadialRange,l.colorByState.value=le.debug.colorByState?1:0,l.colorBySize.value=le.debug.colorBySize?1:0,l.colorByAge.value=le.debug.colorByAge?1:0,l.hazeSteps.value=n.hazeSteps,n.fragmentShadowMap!==this.fragmentShadowMap){this.fragmentShadowMap=n.fragmentShadowMap;for(let m of this.meshes)m.castShadow=n.fragmentShadowMap}}if(this.beforeIntegrate?.(),!(r<=0)&&(e.compute(this.nodes.resetCounters),a.powderActive||a.fieldActive||!this.nodes.updateStrays?(e.compute(this.nodes.snapshotLeaders),e.compute(this.nodes.update),e.compute(this.nodes.resolve),e.compute(this.nodes.clearDensity),this.densityDirty=!0):(e.compute(this.nodes.updateStrays),this.densityDirty&&(e.compute(this.nodes.resolve),e.compute(this.nodes.clearDensity),this.densityDirty=!1)),this.beforeAssembly?.(),this.assemblyEnabled&&this.o.erosion.u.reconstruct.value>.5&&a.fieldActive&&this.assembly?.update(e),this.statsTimer+=r,this.statsTimer>.5&&(le.debug.stats||le.performance.idleSkip))){this.statsTimer=0;let h=this.o.countersOffset;e.getArrayBufferAsync(this.buffers.atomics.value,null,h*4,64).then(d=>{let c=new Uint32Array(d),m=0;for(let g=0;g{})}}updateCamera(e,t){this.u.pixelWorld.value=2*Math.tan(Bt.degToRad(e.fov/2))/Math.max(1,t),this.u.lightDirView.value.copy(this.u.lightDir.value).transformDirection(e.matrixWorldInverse),this.u.camPos.value.copy(e.position),this.u.invProj.value.copy(e.projectionMatrixInverse),this.u.camWorld.value.copy(e.matrixWorld)}reset(e){e.compute(this.nodes.reset)}syncModel(){this.prevModel.copy(this.o.objectGroup.matrixWorld)}retarget(e,t){let r=this.buffers.rest.value;r.array.set(t),this.upload(e,r),this.u.groupNoise.value=Number(le.healing.returnNoiseAmount??2),this.u.frontDuration.value=Number(le.healing.assemblyFrontDuration??Bs.assemblyFrontDuration),this.u.frontX.value=Number(le.healing.assemblyOriginX??Bs.assemblyOriginX),this.u.frontY.value=Number(le.healing.assemblyOriginY??Bs.assemblyOriginY),this.u.frontAngle.value=Number(le.healing.assemblyAngle??Bs.assemblyAngle),this.u.frontSpread.value=Number(le.healing.assemblySpread??Bs.assemblySpread),this.u.frontNoise.value=Number(le.healing.assemblyFrontNoise??Bs.assemblyFrontNoise),this.u.speedVariation.value=Number(le.healing.assemblySpeedVariation??Bs.assemblySpeedVariation),this.u.pathBend.value=Number(le.healing.assemblyBend??Bs.assemblyBend),this.u.pathSwirl.value=Number(le.healing.assemblySwirl??Bs.assemblySwirl),this.u.landingVariation.value=Number(le.healing.assemblyLandingVariation??Bs.assemblyLandingVariation),this.u.groupStagger.value=le.healing.returnGroupStagger??Bs.returnGroupStagger,this.u.groupScale.value=le.healing.returnGroupScale??Bs.returnGroupScale,this.u.groupSeed.value=le.healing.returnGroupSeed??Bs.returnGroupSeed,e.compute(this.nodes.retargetCount),this.o.erosion.u.reconstruct.value>.5&&this.assembly?.prepare(e)}prepareAssembly(e){this.assembly?.prepare(e)}restoreThresholds(e){let t=this.buffers.rest.value,r=t.array;for(let i=3;inew Wt);strokeCount=0;strokeVel=new F;strokeDir=new F(1,.4,0).normalize();strokeSpeed=0;hitEntry=new F;hitExit=new F;hasHit=!1;prevEntry=new F;prevExit=new F;prevEntryWorld=new F;prevHit=!1;prevX=0;prevY=0;scripted=[];scrollP=-1;scrollPath={from:new F(-1,-.6,0),to:new F(1,.6,0)};ray=new ld;inv=new We;tmp=new F;objectRayOrigin=new F;objectRayDirection=new F;workA=new F;workB=new F;workDirection=new F;velocity=new F;rayHit={entry:new F,exit:new F,tEntry:0,tExit:0};resetDone=!0;sweep(e={}){let t=this.shape.bound,r=e.from??[-1,-.55,0],i=e.to??[1,.55,0];this.scripted.push({kind:"sweep",from:new F(r[0]*t,r[1]*t,r[2]*t),to:new F(i[0]*t,i[1]*t,i[2]*t),t0:-1,delay:e.delay??0,duration:e.duration??.7,radius:e.radius??le.erosion.brushRadius,strength:e.strength??le.erosion.brushStrength*1.5,through:e.through??!0,prevT:0})}front(e){let t=this.shape.bound,[r,i]=e.from,[s,a]=e.to,n=s-r,o=a-i,l=Math.hypot(n,o)||1,u=n/l*.5,h=o/l*.5;this.scripted.push({kind:"front",from:new F((r-u)*t,(i-h)*t,0),to:new F((s+u)*t,(a+h)*t,0),normal:new F(-o/l,n/l,0),reach:(e.reach??1.3)*t,t0:-1,delay:e.delay??0,duration:e.duration??1.5,radius:e.radius??le.erosion.brushRadius,strength:e.strength??le.erosion.brushStrength*1.5,through:!0,prevT:0})}clearScripted(){this.scripted.length=0}burst(e,t,r,i=.18){let s=new We().copy(this.objectGroup.matrixWorld).invert(),a=e.clone().applyMatrix4(s);this.scripted.push({from:a,to:a.clone(),t0:-1,delay:0,duration:i,radius:t,strength:r,through:!1,prevT:0});let n=new F().setFromMatrixPosition(this.objectGroup.matrixWorld),o=e.clone().sub(n);o.lengthSq()<1e-6&&o.set(0,1,0),this.strokeDir.copy(o.normalize()),this.strokeSpeed=le.erosion.brushSpeedRef*1.5}sweepTo(e){this.scrollP=Math.max(0,Math.min(1,e))}pushScripted(e,t){if(this.scripted.length===0)return!1;let r=!1;for(let i of this.scripted){if(i.t0<0&&(i.t0=e+i.delay),e1-(1-y)*(1-y),h=i.reach*u(i.prevT),d=i.reach*u(s),c=Math.max(i.radius,(d-h)*1.5),m=this.shape.thickness,g=m<=c*.9?[0]:[-m,0,m];if(this.strokeCount+g.length*2>Tc)break;for(let y of[1,-1]){let b=this.workA.copy(i.from).addScaledVector(i.normal,y*d),v=this.workB.copy(i.to).addScaledVector(i.normal,y*d);for(let S of g)this.strokeSegments[this.strokeCount*2].set(b.x,b.y,S,c),this.strokeSegments[this.strokeCount*2+1].set(v.x,v.y,S,i.strength),this.strokeCount++}this.strokeSpeed=Math.max(this.strokeSpeed,i.reach/i.duration*.6),i.prevT=s,r=!0;continue}let n=this.workA.copy(i.from).lerp(i.to,i.prevT),o=this.workB.copy(i.from).lerp(i.to,s),l=i.through?3:1;if(this.strokeCount+l>Tc)break;for(let u=0;u1e-6){let u=this.workDirection.copy(i.to).sub(i.from).transformDirection(this.objectGroup.matrixWorld);this.strokeDir.copy(u.normalize()),this.strokeSpeed=Math.max(this.strokeSpeed,i.from.distanceTo(i.to)/i.duration*.6)}i.prevT=s,r=!0}return this.scripted=this.scripted.filter(i=>i.prevT<1),r}pushScroll(e){if(this.scrollP<0)return!1;let t=this.scrollP;if(this.prevScrollP<0)return this.prevScrollP=t,!1;let r=t-this.prevScrollP;if(Math.abs(r)<5e-4)return!1;let i=this.shape.bound,s=this.workA.copy(this.scrollPath.from).lerp(this.scrollPath.to,this.prevScrollP).multiplyScalar(i),a=this.workB.copy(this.scrollPath.from).lerp(this.scrollPath.to,t).multiplyScalar(i);if(r>0){for(let o=0;o<3&&this.strokeCount1e-8&&this.strokeDir.copy(n.normalize()),this.strokeSpeed=Math.max(this.strokeSpeed,Math.min(6,Math.abs(r)*2*i/Math.max(e,1/120)))}return this.prevScrollP=t,r>0}prevScrollP=-1;update(e,t){this.strokeCount=0;let r=le.erosion;if(pt.resetRequestedAt>=0){let n=(e-pt.resetRequestedAt)/Math.max(.05,le.healing.resetFade/1e3);pt.fade=Math.max(0,1-n),n>=1&&(this.erosion&&this.erosion.clear(this.erosion.renderer),this.powder&&this.erosion&&this.powder.reset(this.erosion.renderer),this.onReset?.(),pt.resetRequestedAt=-1,pt.lastStrokeT=-1e9,pt.fade=1)}else pt.fade=Oo(pt.fade,1,.15,t);let i=Ui.x!==this.prevX||Ui.y!==this.prevY,s=null;if(Ui.inside){this.tmp.set(Ui.x,Ui.y,.5).unproject(this.camera),this.ray.origin.copy(this.camera.position),this.ray.direction.copy(this.tmp).sub(this.camera.position).normalize(),this.inv.copy(this.objectGroup.matrixWorld).invert();let n=this.objectRayOrigin.copy(this.ray.origin).applyMatrix4(this.inv),o=this.objectRayDirection.copy(this.ray.direction).transformDirection(this.inv);s=kne(this.shape,n,o,60,this.rayHit)}pt.overObject=!!s,this.hasHit=!!s,s&&(this.hitEntry.copy(s.entry).applyMatrix4(this.objectGroup.matrixWorld),this.hitExit.copy(s.exit).applyMatrix4(this.objectGroup.matrixWorld));let a=!1;if(t>0&&this.pushScripted(e,t)&&(a=!0),t>0&&this.pushScroll(t)&&(a=!0),(!Ht.enabled||Ht.cursorErodes)&&s&&this.prevHit&&i&&t>0&&this.strokeCount+wx<=Tc){let n=this.hitEntry,o=this.velocity.copy(n).sub(this.prevEntryWorld).divideScalar(t),l=o.length();if(l>.02){a=!0,this.strokeVel.lerp(o,.5),this.strokeSpeed=Oo(this.strokeSpeed,Math.min(l,r.brushSpeedRef*3),.08,t),this.strokeVel.lengthSq()>1e-6&&this.strokeDir.copy(this.strokeVel).normalize();let u=Bt.clamp(l/r.brushSpeedRef,.12,2.5),h=r.brushStrength*u,d=r.brushRadius*(.72+.28*Math.min(1,u));for(let c=0;c=nce&&ta.frame0){let n=e*.25%1,o=this.shape.bound*.9,l=-o+n*2*o,u=-o*.7+n*1.4*o,h=l+.15,d=u+.1;this.strokeSegments[0].set(l,u,-o,r.brushRadius),this.strokeSegments[1].set(h,d,o,r.brushStrength),this.strokeCount=1,this.strokeDir.set(1,.7,0).normalize(),this.strokeSpeed=r.brushSpeedRef,a=!0}a||(this.strokeSpeed=Oo(this.strokeSpeed,0,1.2,t)),pt.strokeActive=a,Ht.enabled&&Ht.healSuspended&&(pt.lastStrokeT=e),s&&(this.prevEntry.copy(s.entry),this.prevExit.copy(s.exit),this.prevEntryWorld.copy(this.hitEntry)),this.prevHit=!!s,this.prevX=Ui.x,this.prevY=Ui.y,this.resetDone}},{vec3:oce,vec4:$F,uniform:lce,uv:uce,texture3D:hce,float:oye}=Jr,dce=class{constructor(e,t,r){this.camera=e;let i=(a,n)=>{let o=new Pd,l=hce(a).sample(oce(uce(),this.uSlice)).level(0);o.colorNode=n==="erosion"?$F(l.r,l.r.mul(.6).add(l.g.mul(.8)),l.r.mul(.6),1):$F(l.r.mul(2),l.g,l.b,1),o.depthTest=!1,o.depthWrite=!1,o.transparent=!1;let u=new Mi(new Kv(1,1),o);return u.renderOrder=1e3,u.frustumCulled=!1,u};this.erosionQuad=i(t.tex,"erosion"),this.densityQuad=i(r.densityTex,"density");let s=new eb(.03,12,8);this.hitEntry=new Mi(s,new Pd({color:"#ff4040"})),this.hitExit=new Mi(s,new Pd({color:"#40a0ff"})),this.group.add(this.hitEntry,this.hitExit),e.add(this.erosionQuad,this.densityQuad)}group=new pn;erosionQuad;densityQuad;hitEntry;hitExit;uSlice=lce(.5);update(e){let t=le.debug;this.uSlice.value=t.erosionSliceZ;let r=this.camera,i=3,s=2*i*Math.tan(Bt.degToRad(r.fov/2)),a=s*r.aspect,n=s*.28;this.erosionQuad.visible=t.showErosionSlice,this.erosionQuad.scale.set(n,n,1),this.erosionQuad.position.set(-a/2+n*.6,-s/2+n*.6,-i),this.densityQuad.visible=t.showDensityGrid,this.densityQuad.scale.set(n,n,1),this.densityQuad.position.set(-a/2+n*(t.showErosionSlice?1.75:.6),-s/2+n*.6,-i);let o=t.showHitPoints&&e.hasHit;this.hitEntry.visible=o,this.hitExit.visible=o,o&&(this.hitEntry.position.copy(e.hitEntry),this.hitExit.position.copy(e.hitExit))}dispose(){this.camera.remove(this.erosionQuad,this.densityQuad),this.erosionQuad.geometry.dispose(),this.densityQuad.geometry.dispose(),this.erosionQuad.material.dispose(),this.densityQuad.material.dispose()}},cce=class{ratio=0;frameMs=0;frames=0;lastAdjust=0;update(e,t,r,i,s,a,n){let o=Math.max(.5,Math.min(r||1,i)),l=Math.min(o,Math.max(.5,n));(!this.ratio||!s)&&(this.ratio=o),this.ratio=Math.min(o,Math.max(l,this.ratio));let u=Math.min(50,Math.max(1,t));if(this.frameMs=this.frames===0?u:this.frameMs+(u-this.frameMs)*.08,this.frames++,!s||this.frames<45||e-this.lastAdjust<.5)return this.ratio;let h=1e3/Math.max(30,a),d=this.ratio;if(this.frameMs>h*1.08&&this.ratio>l){let c=this.ratio*Math.sqrt(h/this.frameMs)*.98;d=Math.min(this.ratio-.05,c),d=Math.floor(d*20)/20}else this.frameMs({logoId:mce,shape:Ht.enabled&&Ht.shape?Ht.shape:le.shape.shape,seed:le.shape.seed,particleCount:le.powder.particleCount,resolution:le.erosion.resolution,densityGrid:le.powder.densityGrid,size:le.shape.size,tubeRatio:le.shape.tubeRatio,segments:le.shape.segments,variants:le.powder.grainVariants,faceted:le.powder.facetedGrains,sprites:le.powder.sprites.enabled,spriteBlend:le.powder.sprites.seeThrough>0,strays:le.powder.strayCount,clumps:le.powder.clumpCount,dispersion:!0,voronoiCells:le.performance.voronoiCells,turbulence:le.performance.turbulence}),mce=0,Xo=new Set(typeof location<"u"?[...new URLSearchParams(location.search).keys()]:[]),qF=65536,fce={"100k":1e5,"250k":25e4,"500k":5e5,"1M":1e6,"2M":2e6},gce=class{constructor(e,t,r,i,s,a){this.renderer=e,this.scene=t,this.camera=r,this.blueNoise=i,this.logo=s,this.fractureDetail=a,this.motionGroup.add(this.objectGroup),t.add(this.motionGroup,this.lights.group,r),t.backgroundNode=this.backdrop.node,t.environment=this.env.texture,this.build(),this.post=Nhe({scene:t,camera:r,renderer:e,blueNoise:i,haze:(n,o)=>this.powder.hazeNode(n,o,r),initial:le.post,initialPerformance:le.performance,initialHaze:le.powder.hazeIntensity!==0})}motionGroup=new pn;objectGroup=new pn;backdrop=Ane();env=Cne();lights=new Rne;rig=new K5;post;shape;mesh;meshEntry;glassMatcap;materialPlanes;ice;erosion;powder;interaction;debugViews;pixelRatio=0;frozenByDial=!1;statsTimer=0;buildCount=0;timersPending=!1;fieldMaybeNonZero=!0;lastActivityT=0;idleState(e){let t=this.interaction.strokeCount>0;t&&(this.fieldMaybeNonZero=!0,this.lastActivityT=e);let r=this.erosion.stats;this.fieldMaybeNonZero&&this.erosion.statsReadT>pt.lastStrokeT+.6&&r.max<.002&&r.refrost<.002&&(this.fieldMaybeNonZero=!1);let i=pt.healing&&this.fieldMaybeNonZero,s=this.fieldMaybeNonZero&&r.refrost>.002,a=!le.performance.idleSkip||t||e0||e-this.lastActivityT<1.5||pt.resetRequestedAt>=0;return pt.fieldActive=a,pt.powderActive=n,{fieldActive:a,powderActive:n}}envSig="";backdropSig="";frameTimes=new Float64Array(30);frameTimeSum=0;frameTimeCount=0;frameTimeIndex=0;lastFrameStart=0;gpuPending=!1;gpuTimerLast=-1/0;renderSize=new fe;adaptiveResolution=new cce;offscreenRT=Xo.has("offscreen")?new er(16,16,{depthBuffer:!1,type:Si,format:pi}):null;build(){this.buildCount++;let e=pce(),t=Lm(e.seed+1),r=Ht.enabled&&Ht.shape?Ht.shape:le.shape.shape,i=r==="logo"&&!this.logo?"torus":r;this.shape=cw(i,e.size,e.tubeRatio,this.logo?.sdf);let s=Dne(this.shape,e.segments,this.logo?.geometry),a=parseInt(e.densityGrid,10),n=parseInt(e.resolution,10),o=a*a*a,l=o+16,u=l+n*n*n,h=u+qF,d=Jr.instancedArray(h+qF,"uint").toAtomic();if(this.erosion=new hx(this.renderer,this.shape,n,e.seed,d,l,u,h),qa.materials&&(this.materialPlanes=new mne(this.renderer,this.shape.bound,e.seed),this.erosion.materialPlanes=this.materialPlanes),this.erosion.skipBake=Xo.has("nobake"),qa.mesh&&(this.meshEntry=vne(s,this.camera)),qa.matcap&&(this.env.update(le.lighting),this.glassMatcap=bne(this.env.texture)),this.ice=_de({meshEntry:this.meshEntry,glassMatcap:this.glassMatcap,shape:this.shape,erosion:this.erosion,seed:e.seed,blueNoise:this.blueNoise,environment:this.env.texture,fractureDetail:this.fractureDetail,backdrop:this.backdrop.uniforms,dispersion:e.dispersion,voronoiCells:e.voronoiCells}),Xo.has("noice")){let c=new pS;c.roughness=.3,c.color.set("#bbbbbb"),this.ice.material=c}this.meshEntry&&(this.meshEntry.material.positionNode=this.ice.material.positionNode),this.mesh=new Mi(s,this.ice.material),this.mesh.castShadow=!0,this.mesh.receiveShadow=!0,this.mesh.frustumCulled=!1,this.objectGroup.add(this.mesh),this.powder=new ice({enabled:!Xo.has("nopowder"),renderer:this.renderer,scene:this.scene,shape:this.shape,erosion:this.erosion,seed:e.seed,rand:t,count:fce[e.particleCount]??1e6,variants:e.variants,strays:e.strays,densityRes:a,clumpCount:e.clumps,objectGroup:this.objectGroup,turbulence:e.turbulence,atomics:d,countersOffset:o,healOffset:l,cellOffset:u,flightOffset:h,fieldRes:n,backdrop:this.backdrop.uniforms,fractureDetail:this.fractureDetail,iceUniforms:this.ice.uniforms,iceFeatures:this.ice.features,environment:this.env.texture}),this.interaction=new XF(this.shape,this.objectGroup,this.camera,this.erosion,this.powder),this.debugViews=new dce(this.camera,this.erosion,this.powder),this.scene.add(this.debugViews.group)}disposeBuilt(){this.materialPlanes?.dispose(),this.materialPlanes=void 0,this.meshEntry?.dispose(),this.meshEntry=void 0,this.glassMatcap?.dispose(),this.glassMatcap=void 0,this.debugViews.dispose(),this.scene.remove(this.debugViews.group),this.objectGroup.remove(this.mesh),this.mesh.geometry.dispose(),this.ice.material.dispose(),this.erosion.dispose(),this.powder.dispose()}rebuild(){this.disposeBuilt(),this.build(),this.post.post.needsUpdate=!0}updateEnvironment(){let e=le.lighting,t=JSON.stringify([e.envSoftbox,e.envRim,e.envFill,e.key,e.fill,e.fillColor,e.fillGroundColor,e.fillReflectionStrength,e.rimColor,e.rimElevation,e.rimAzimuth,e.rimSize,e.accentCool,e.accentWarm]);t!==this.envSig&&(this.envSig=t,this.env.update(e)),this.scene.environmentIntensity=le.ice.envIntensity}updateBackdrop(e){let t=le.lighting.backdrop,r=Ht.enabled?Ht.backdrop:null,i=this.backdrop.uniforms,s=r?.top??t.top,a=r?.mid??t.mid,n=r?.bottom??t.bottom,o=r?.centerX??t.centerX,l=r?.centerY??t.centerY,u=r?.radius??t.radius,h=r?.falloff??t.falloff,d=`${s}|${a}|${n}|${o}|${l}|${u}|${h}|${t.noise}`;d!==this.backdropSig&&(this.backdropSig=d,i.uTop.value.set(s),i.uMid.value.set(a),i.uBottom.value.set(n),i.uCenter.value.set(o,l),i.uRadius.value=u,i.uFalloff.value=h,i.uNoise.value=t.noise),i.uTime.value=e}onBeforeRender=null;onBeforeSimulation=null;onObjectTransform=null;onCameraTransform=null;frame(e,t,r=!0){ta.t=e,ta.dt=t,ta.frame++;let i=e*1e3,s=1e3/le.performance.targetFps,a=!Xo.has("nopost")&&le.performance.nativePostEffects&&le.performance.upscaler!=="native",n=this.adaptiveResolution.updateScene(e,s,window.devicePixelRatio||1,le.post.pixelRatioCap,le.performance.adaptiveResolution&&le.performance.dynamicSceneResolution,le.performance.targetFps,le.performance.minPixelRatio,le.performance.sceneResolutionScale,le.performance.minSceneResolutionScale,a);if(pt.pixelRatio=n.sourceRatio,pt.outputPixelRatio=n.outputRatio,pt.sceneResolutionScale=n.sceneScale,n.outputRatio!==this.pixelRatio||this.renderer.getPixelRatio()!==n.outputRatio){this.pixelRatio=n.outputRatio,this.renderer.setPixelRatio(n.outputRatio);let h=this.renderer.getSize(this.renderSize);this.renderer.setSize(h.x,h.y,!1)}this.onCameraTransform||this.rig.update(this.camera,this.objectGroup,e,t),Ht.enabled&&Ht.framing?this.motionGroup.position.set(Ht.objectX,Ht.objectY,Ht.objectZ):this.motionGroup.position.set(le.shape.offsetX,le.shape.offsetY,le.shape.offsetZ),this.objectGroup.position.set(0,0,0),this.onObjectTransform&&this.onObjectTransform(e),this.motionGroup.updateMatrixWorld(!0),this.onCameraTransform?.(e),this.updateEnvironment(),this.updateBackdrop(e),pt.hoverAmount=Oo(pt.hoverAmount,pt.overObject?1:0,.4/3,t),this.lights.update(e,pt.hoverAmount),this.interaction.update(e,t),this.onBeforeSimulation?.(e,t),this.debugViews.update(this.interaction),Xo.has("noice")||(this.ice.update(e,t,this.lights.key,this.objectGroup),this.ice.uniforms.hover.value=pt.hoverAmount);let o=performance.now(),l=this.idleState(e);if(t>0&&(Xo.has("noerosion")||this.erosion.step(this.renderer,e,t,this.interaction.strokeSegments,this.interaction.strokeCount,l.fieldActive)),Xo.has("nopowder")||this.powder.step(this.renderer,e,t,this.interaction,this.lights.key,l),pt.computeMs=performance.now()-o,le.debug.stats||le.performance.idleSkip){this.statsTimer+=Math.max(t,1/120);let h=this.fieldMaybeNonZero?.25:.4;(this.statsTimer>h||this.offscreenRT)&&(this.statsTimer=0,this.erosion.readStats(this.renderer,e),pt.erosion=this.erosion.stats)}this.camera.updateMatrixWorld(),this.onBeforeRender&&this.onBeforeRender(e),this.powder.updateCamera(this.camera,this.renderer.getSize(this.renderSize).y*n.sourceRatio);let u=this.camera.position.distanceTo(this.rig.lookAt);if(this.post.update(le.post,le.performance,u,pt.sceneFade,le.powder.hazeIntensity,e,le.version),this.materialPlanes?.update(),this.post.setSceneResolution(n.sceneScale),this.meshEntry?.update(this.mesh,n.sceneScale),this.mesh.material.wireframe=le.debug.wireframe,this.offscreenRT){let h=this.renderer.getSize(this.renderSize),d=this.renderer.getPixelRatio(),c=Math.max(1,Math.floor(h.x*d)),m=Math.max(1,Math.floor(h.y*d));(this.offscreenRT.width!==c||this.offscreenRT.height!==m)&&this.offscreenRT.setSize(c,m),this.renderer.setRenderTarget(this.offscreenRT)}if(this.post.setHazeResolution(le.performance.hazeResolution==="quarter"?.25:le.performance.hazeResolution==="half"?.5:1),r&&(this.renderer._nodes.nodeFrame.update(),this.post.setFrame(Math.round(e*60)),Xo.has("nopost")?this.renderer.render(this.scene,this.camera):this.post.post.render()),this.offscreenRT&&this.renderer.setRenderTarget(null),le.performance.gpuTimers&&!this.timersPending&&e-this.gpuTimerLast>=.25){let h=this.renderer;h.backend?.trackTimestamp&&(this.timersPending=!0,this.gpuTimerLast=e,Promise.all([h.resolveTimestampsAsync("render"),h.resolveTimestampsAsync("compute")]).then(()=>{pt.gpuRenderMs=h.info.render.timestamp||0,pt.gpuComputeMs=h.info.compute.timestamp||0,this.timersPending=!1}).catch(()=>{this.timersPending=!1}))}if(this.offscreenRT&&!this.gpuPending){let h=this.renderer.backend?.device?.queue;h?.onSubmittedWorkDone&&(this.gpuPending=!0,h.onSubmittedWorkDone().then(()=>{pt.gpuFrames++,this.gpuPending=!1}).catch(()=>{this.gpuPending=!1}))}}resetSim(){this.erosion.clear(this.renderer),this.erosion.crumbleUntil=-1,this.erosion.u.crumbleUntil.value=-1,this.powder.reset(this.renderer),this.interaction=new XF(this.shape,this.objectGroup,this.camera,this.erosion,this.powder),this.rig=new K5,this.mesh.visible=!0,pt.strokeActive=!1,pt.overObject=!1,pt.lastStrokeT=-1e9,pt.healing=!1,pt.resetRequestedAt=-1,pt.fade=1,pt.sceneFade=1,pt.hoverAmount=0,pt.fieldActive=!0,pt.powderActive=!0,this.fieldMaybeNonZero=!0,this.lastActivityT=0,this.statsTimer=0,ta.t=0,ta.dt=1/60,ta.frame=0,ta.paused=!1}async dumpShader(){return this.renderer.debug.getShaderAsync(this.scene,this.camera,this.mesh)}async readback(){if(!this.offscreenRT)return null;let e=this.offscreenRT,t=e.width,r=e.height,i=await this.renderer.readRenderTargetPixelsAsync(e,0,0,t,r),s=i.length>=Math.ceil(t*4/256)*256*r?Math.ceil(t*4/256)*256:t*4,a=0,n=0,o=document.createElement("canvas");o.width=t,o.height=r;let l=o.getContext("2d"),u=l.createImageData(t,r);for(let h=0;hn&&(n=g)}return l.putImageData(u,0,0),{mean:a/(t*r),max:n,png:o.toDataURL("image/png"),w:t,h:r}}dispose(){this.disposeBuilt(),this.post.dispose(),this.scene.remove(this.motionGroup,this.lights.group),this.scene.backgroundNode=null,this.scene.environment=null,this.env.texture.dispose(),this.fractureDetail?.dispose()}},Mx={ice:{ior:1.445,dispersion:.155,thicknessScale:2.41,attenuationDistance:4.47,attenuationColor:"#524c4c",baseRoughness:.5,frost:{scale:.2,threshold:1,softness:.36,roughness:0,diffuse:.56,crystalBump:.37,crystalScale:67},cracks:{largeScale:8,warp:0,warpScale:2.2,coverage:.01,regionScale:1.35,regionCoverage:0,veinScale:20,veinContrast:.57,width:.0175,brightness:.25,darkness:1,refraction:.008,surfaceStrength:0,steps:21,fineCracks:!0,fineScale:10.4,fineAmount:0,fineCoverage:.45,fineNearLarge:1},smudges:{amount:0,coverage:.29,maskScale:3.1,anisotropy:5.5,roughness:.02,whiteness:.035,scale:.5},bumps:{microBump:.32,microScale:121,microCoverage:.76,rippleBump:.45,rippleScale:2.5,maskScale:3.6},crumbleGlow:.16,edgeWhiteness:.09,clearcoat:0,clearcoatRoughness:.085,envIntensity:.28,specularIntensity:.65,interiorScatter:.05},performance:{adaptiveResolution:!0,targetFps:60,minPixelRatio:.75,sceneResolutionScale:1,dynamicSceneResolution:!0,minSceneResolutionScale:.35,upscaler:"taau",upscaleSharpness:.2,nativePostEffects:!0,idleSkip:!0,adaptiveSteps:!0,voronoiCells:"27",hazeResolution:"quarter",turbulence:"fast",gpuTimers:!0},lighting:{key:{color:"#ffffff",intensity:12,elevation:62,azimuth:-10.5,size:3,hoverBoost:.3},fill:1.5,fillColor:"#ffffff",fillGroundColor:"#07a4a6",rim:5,rimColor:"#0b82ea",rimElevation:9.5,shadow:{intensity:0,softness:6,samples:1,mapSize:"1024",bias:-6e-4},sway:{amplitude:.118,period:35},backdrop:{top:"#212121",mid:"#171717",bottom:"#030303",centerX:.19,centerY:1.5,radius:.78,falloff:4,noise:0},envSoftbox:1.22,envRim:2.43,envFill:1,rimAzimuth:-180,rimAngle:81,rimSize:2.05,fillReflectionStrength:2,accentCool:{intensity:4,reflection:3,elevation:25,azimuth:-65,size:2.85,color:"#c7ddff"},accentWarm:{intensity:3.64,reflection:3,elevation:34,azimuth:127,size:3,color:"#ff0000"}},post:{dof:{enabled:!1,focusBias:-.43,aperture:4,range:12},bloom:{threshold:.28,intensity:0,radius:.11},monochrome:0,tonemap:"aces",exposure:1.3,contrast:1.15,blackLift:0,vignette:{strength:.325,softness:1.175,radius:1.11},grain:{strength:0,size:1,speed:0,shadowWeight:.28,backgroundStrength:.035,backgroundSize:2,backgroundSpeed:0},dither:!0,aaMode:"traa",pixelRatioCap:2}},yce=()=>({version:1,name:"Untitled shot",orientation:"target",anchorSpace:"local",objectMotion:"existing",keys:[]});function c2(e){if(e==null||e==="")return yce();let t=typeof e=="string"?JSON.parse(e):e;if(t?.version!==1||!Array.isArray(t.keys)||t.keys.length>64)throw Error("Camera track must be version 1 with at most 64 keys.");let r=(o,l,u)=>{if(!l.includes(o))throw Error("Invalid "+u);return o},i=(o,l,u,h)=>{if(typeof o!="number"||!Number.isFinite(o)||ou)throw Error("Invalid "+h);return o},s=(o,l,u)=>{if(!Array.isArray(o)||o.length!==l)throw Error("Invalid "+u);return o.map(h=>i(h,-1e4,1e4,u))},a={version:1,name:String(t.name||"Untitled shot").slice(0,100),orientation:r(t.orientation,["target","free"],"orientation"),anchorSpace:r(t.anchorSpace,["world","local"],"anchor space"),objectMotion:r(t.objectMotion,["existing","stationary"],"object motion"),keys:t.keys.map(o=>{let l=s(o.quaternion,4,"quaternion");if(Math.abs(Math.hypot(...l)-1)>.001)throw Error("Camera quaternion must be normalized.");return{id:String(o.id).slice(0,100),time:i(o.time,0,120,"key time"),position:s(o.position,3,"position"),target:s(o.target,3,"target"),quaternion:l,fov:i(o.fov,5,120,"FOV"),zoom:i(o.zoom,.1,10,"zoom"),roll:i(o.roll,-720,720,"roll"),ease:r(o.ease,["flow","linear","ease-in-out"],"ease")}}).sort((o,l)=>o.time-l.time)},n=new Set;for(let o=0;o0?(t-a.time)/o:0,u=a.ease==="ease-in-out"?l*l*(3-2*l):l,h=g=>{if(!o)return g(a);if(a.ease!=="flow")return Bt.lerp(g(a),g(n),u);let y=i[Math.max(0,s-1)],b=i[Math.min(i.length-1,s+2)],v=(g(n)-g(y))/Math.max(n.time-y.time,1e-6),S=(g(b)-g(a))/Math.max(b.time-a.time,1e-6);return(2*u**3-3*u*u+1)*g(a)+(u**3-2*u*u+u)*o*v+(-2*u**3+3*u*u)*g(n)+(u**3-u*u)*o*S},d=new F(...[0,1,2].map(g=>h(y=>y.position[g]))),c=new F(...[0,1,2].map(g=>h(y=>y.target[g])));e.anchorSpace==="local"&&c.applyMatrix4(r);let m=e.orientation==="target"?new si().setFromRotationMatrix(new We().lookAt(d,c,new F(0,1,0))):new si(...a.quaternion).slerp(new si(...n.quaternion),u);return m.multiply(new si().setFromAxisAngle(new F(0,0,1),Bt.degToRad(h(g=>g.roll)))),{position:d,quaternion:m,target:c,roll:h(g=>g.roll),fov:Bt.clamp(h(g=>g.fov),5,120),zoom:Bt.clamp(h(g=>g.zoom),.1,10)}}function vce(e,t,r,i,s){let a=YF(t,r,i);return e.position.copy(a.position),e.quaternion.copy(a.quaternion),e.fov=a.fov,e.zoom=a.zoom,e.updateProjectionMatrix(),e.updateMatrixWorld(!0),s.copy(a.target),a}var bce=e=>Math.max(0,Math.min(1,e));function p2(e,t){let r=l=>(l=bce(l),l*l*l*(l*(l*6-15)+10)),i=(l,u)=>l<=u?r(l/Math.max(u,1e-6)):1-r((l-u)/Math.max(1-u,1e-6)),s=[{t0:e.logoBreak-.65,tBreakEnd:e.form1,t1:e.form1+2.8,yaw:t.turnYaw,pitch:t.turnPitch,z:t.approach,keep:!1},{t0:e.break1-.65,tBreakEnd:e.form2,t1:e.form2+2.8,yaw:t.turnYaw2,pitch:t.turnPitch2,z:-t.retreat,keep:!1},{t0:e.break2-.65,tBreakEnd:e.fadeOut+1.5,t1:e.fadeOut+1.5,yaw:t.finalYaw,pitch:t.finalPitch,z:t.approach+t.zoomIn,keep:!0}];function a(l){let u=0,h=0,d=0;for(let c of s){let m=(l-c.t0)/Math.max(c.t1-c.t0,1e-6);if(m<=0)continue;u+=c.yaw*r(m);let g=(c.tBreakEnd-c.t0)/Math.max(c.t1-c.t0,1e-6),y=c.keep?r(m):i(m,g);h+=c.pitch*y,d+=c.z*y}return{yaw:u,pitch:h,z:d}}let n=l=>t.driftYaw*l,o=l=>t.idleYaw*Math.sin(2*Math.PI*l/9);return function(l){let u=a(l),h=t.driftSway*Math.sin(2*Math.PI*l/11);return{yaw:u.yaw+n(l)+o(l),pitch:u.pitch+h,z:u.z+.0875*t.driftSway*Math.sin(2*Math.PI*l/11)}}}var Tce=(e,t)=>e{let c=a(d);return new si().setFromEuler(new cn(c.pitch*Math.PI/180,c.yaw*Math.PI/180,0,"YXZ"))},l=s?new si:o(e),u=s||i===0?new si:o((i===1?t.form1:t.form2)+2.8).invert(),h=new F(0,.05,s?0:n.z);return{rotation:l,facing:u,position:h,matrix:new We().compose(h,l.clone().multiply(u),new F(1,1,1))}}var{lerp:Sh}=Bt,us=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];for(let e=0;e<256;e++)us[256+e]=us[e];function m2(e){return e*e*e*(e*(e*6-15)+10)}function tu(e,t,r,i){let s=e&15,a=s<8?t:r,n=s<4?r:s==12||s==14?t:i;return((s&1)==0?a:-a)+((s&2)==0?n:-n)}var _ce=class{noise(e,t,r){let i=Math.floor(e),s=Math.floor(t),a=Math.floor(r),n=i&255,o=s&255,l=a&255;e-=i,t-=s,r-=a;let u=e-1,h=t-1,d=r-1,c=m2(e),m=m2(t),g=m2(r),y=us[n]+o,b=us[y]+l,v=us[y+1]+l,S=us[n+1]+o,T=us[S]+l,w=us[S+1]+l;return Sh(Sh(Sh(tu(us[b],e,t,r),tu(us[T],u,t,r),c),Sh(tu(us[v],e,h,r),tu(us[w],u,h,r),c),m),Sh(Sh(tu(us[b+1],e,t,d),tu(us[T+1],u,t,d),c),Sh(tu(us[v+1],e,h,d),tu(us[w+1],u,h,d),c),m),g)}},wce=Io.textMeshDetail;function f2(e){return typeof e=="number"&&Number.isFinite(e)?Math.max(1,Math.min(4,Math.round(e))):wce}function Mce(e,t){let r=f2(t);return{maxEdge:e/(2*r),extraTriangles:16e4*r}}function Nce(e,t,r,i){let s=[],a=new Map,n=[],o=r*r,l=t.length/3+i,u=t.length/3,h=(v,S)=>vv.length2>S.length2||v.length2===S.length2&&(v.a0;){let T=S-1>>1;if(!d(v,n[T]))break;n[S]=n[T],S=T}n[S]=v}function m(){let v=n[0],S=n.pop();if(n.length){let T=0;for(;T*2+1o&&c(E)}E.faces.add(w)}}function y(v){let S=s[v];s[v]=null;for(let T=0;T<3;T++){let w=h(S[T],S[(T+1)%3]),N=a.get(w);N.faces.delete(v),N.faces.size||a.delete(w)}}for(let v=0;vl)continue;let T=e.length/3;e.push((e[v.a*3]+e[v.b*3])/2,(e[v.a*3+1]+e[v.b*3+1])/2,(e[v.a*3+2]+e[v.b*3+2])/2);let w=S.map(N=>s[N]);for(let N of S)y(N);for(let N of w){let C=N.findIndex((I,O)=>h(I,N[(O+1)%3])===h(v.a,v.b)),R=N[C],E=N[(C+1)%3],P=N[(C+2)%3];g(R,T,P),g(T,E,P)}u+=S.length}let b=[];for(let v of s)v&&b.push(v[0],v[1],v[2]);return b}function Ace(e,t){let r=[];for(let u=0;uh-d)){let h=e[u*3],d=e[u*3+1],c=e[u*3+2],m=Math.floor(h/a),g=Math.floor(d/a),y=Math.floor(c/a),b=u;for(let v=-1;v<=1;v++)for(let S=-1;S<=1;S++)for(let T=-1;T<=1;T++)for(let w of n.get(`${m+v}:${g+S}:${y+T}`)||[])Math.hypot(h-e[w*3],d-e[w*3+1],c-e[w*3+2])<=a&&(b=Math.min(b,w));if(o.set(u,b),b===u){let v=`${m}:${g}:${y}`,S=n.get(v)||[];S.push(u),n.set(v,S)}}let l=[];for(let u=0;uo.get(m)??m);h!==d&&d!==c&&c!==h&&l.push(h,d,c)}return l}var Cce=Io.logoMeshDetail;function g2(e){return typeof e=="number"&&Number.isFinite(e)?Math.max(1,Math.min(4,Math.round(e))):Cce}function Rce(e,t){e.computeBoundingBox();let r=e.boundingBox,i=Math.max(r.max.x-r.min.x,r.max.y-r.min.y,r.max.z-r.min.z,.001),s=g2(t);return{maxEdge:i/(32*s),extraTriangles:16e4*s}}var ZF=Object.freeze({strength:Io.deformStrength,scale:Io.deformScale,seed:Io.deformSeed});function JF(e){if(!Number.isFinite(e)||e<.001||e>.5)throw new RangeError(`Noise feature size ${e} is outside 0.001\u20130.5. Edit this value to load the preset; other settings have not been changed.`);return e}function Nx(e){let t=(r,i,s)=>{let a=e?.[r];return typeof a=="number"&&Number.isFinite(a)?Math.max(i,Math.min(s,a)):ZF[r]};return{strength:t("strength",0,.08),scale:JF(e?.scale??ZF.scale),seed:Math.round(t("seed",0,65535))}}function Ece(e){let{strength:t,scale:r,seed:i}=Nx(e),s=new _ce,a=Lm(i),n=Array.from({length:3},()=>[a()*256,a()*256,a()*256]);function o(l,u,h){let d=n[h],c=l/r+d[0],m=u/r+d[1],g=d[2],y=0,b=1;for(let v=0;v<3;v++)y+=b*s.noise(c,m,g),c=c*2+17.3,m=m*2+9.1,g=g*2+31.7,b*=.5;return y/1.75}return(l,u,h)=>t===0?[l,u,h]:(l+=t*o(u,h,0),u+=t*o(h,l,1),h+=t*o(l,u,2),[l,u,h])}function Pce(e,t,r){let i=t,s=t.length/3+6e3,a=r*r,n=(o,l)=>oa&&(l.set(n(y,b),-1),u++)}}if(!l.size||i.length/3+u>s)break;for(let[d]of l){let[c,m]=d.split(":").map(Number),g=e.length/3;e.push((e[c*3]+e[m*3])/2,(e[c*3+1]+e[m*3+1])/2,(e[c*3+2]+e[m*3+2])/2),l.set(d,g)}let h=[];for(let d=0;de.fadeOut+QF;function Fce(e,t){let r=.3+t+.6,i=e.logoBreak,s=Math.max(e.form1,i+r),a=Math.max(e.break1,s+2.8+.65),n=Math.max(e.form2,a+r),o=Math.max(e.break2,n+2.8+.65),l=Math.max(e.fadeOut,o+r);return{logoBreak:i,form1:s,break1:a,form2:n,break2:o,fadeOut:l}}String.prototype.codePointAt||(function(){var e=(function(){try{var r={},i=Object.defineProperty,s=i(r,r,r)&&i}catch{}return s})(),t=function(r){if(this==null)throw TypeError();var i=String(this),s=i.length,a=r?Number(r):0;if(a!=a&&(a=0),!(a<0||a>=s)){var n=i.charCodeAt(a),o;return n>=55296&&n<=56319&&s>a+1&&(o=i.charCodeAt(a+1),o>=56320&&o<=57343)?(n-55296)*1024+o-56320+65536:n}};e?e(String.prototype,"codePointAt",{value:t,configurable:!0,writable:!0}):String.prototype.codePointAt=t})();var x2=0,KF=-3;function sf(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function Lce(e,t){this.source=e,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new sf,this.dtree=new sf}var eL=new sf,tL=new sf,v2=new Uint8Array(30),b2=new Uint16Array(30),rL=new Uint8Array(30),iL=new Uint16Array(30),kce=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sL=new sf,qn=new Uint8Array(320);function aL(e,t,r,i){var s,a;for(s=0;s>>=1,t}function Yn(e,t,r){if(!t)return r;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>16-t;return e.tag>>>=t,e.bitcount-=t,i+r}function S2(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>=1,++s,r+=t.table[s],i-=t.table[s];while(i>=0);return e.tag=a,e.bitcount-=s,t.trans[r+i]}function Uce(e,t,r){var i,s,a,n,o,l;for(i=Yn(e,5,257),s=Yn(e,5,1),a=Yn(e,4,4),n=0;n<19;++n)qn[n]=0;for(n=0;n8;)e.sourceIndex--,e.bitcount-=8;if(t=e.source[e.sourceIndex+1],t=256*t+e.source[e.sourceIndex],r=e.source[e.sourceIndex+3],r=256*r+e.source[e.sourceIndex+2],t!==(~r&65535))return KF;for(e.sourceIndex+=4,i=t;i;--i)e.dest[e.destLen++]=e.source[e.sourceIndex++];return e.bitcount=0,x2}function Vce(e,t){var r=new Lce(e,t),i,s,a;do{switch(i=Oce(r),s=Yn(r,2,0),s){case 0:a=zce(r);break;case 1:a=oL(r,eL,tL);break;case 2:Uce(r,r.ltree,r.dtree),a=oL(r,r.ltree,r.dtree);break;default:a=KF}if(a!==x2)throw new Error("Data error")}while(!i);return r.destLenthis.x2&&(this.x2=e)),typeof t=="number"&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),tthis.y2&&(this.y2=t))},$o.prototype.addX=function(e){this.addPoint(e,null)},$o.prototype.addY=function(e){this.addPoint(null,e)},$o.prototype.addBezier=function(e,t,r,i,s,a,n,o){var l=[e,t],u=[r,i],h=[s,a],d=[n,o];this.addPoint(e,t),this.addPoint(n,o);for(var c=0;c<=1;c++){var m=6*l[c]-12*u[c]+6*h[c],g=-3*l[c]+9*u[c]-9*h[c]+3*d[c],y=3*u[c]-3*l[c];if(g===0){if(m===0)continue;var b=-y/m;0=0&&l>0&&(o+=" "),o+=t(u)}return o}for(var i="",s=0;s=0&&e<=255,"Byte value should be between 0 and 255."),[e]},wt.BYTE=rn(1),He.CHAR=function(e){return[e.charCodeAt(0)]},wt.CHAR=rn(1),He.CHARARRAY=function(e){typeof e>"u"&&(e="",console.warn("Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name."));for(var t=[],r=0;r"u"?0:e.length},He.USHORT=function(e){return[e>>8&255,e&255]},wt.USHORT=rn(2),He.SHORT=function(e){return e>=hL&&(e=-(2*hL-e)),[e>>8&255,e&255]},wt.SHORT=rn(2),He.UINT24=function(e){return[e>>16&255,e>>8&255,e&255]},wt.UINT24=rn(3),He.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]},wt.ULONG=rn(4),He.LONG=function(e){return e>=dL&&(e=-(2*dL-e)),[e>>24&255,e>>16&255,e>>8&255,e&255]},wt.LONG=rn(4),He.FIXED=He.ULONG,wt.FIXED=wt.ULONG,He.FWORD=He.SHORT,wt.FWORD=wt.SHORT,He.UFWORD=He.USHORT,wt.UFWORD=wt.USHORT,He.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,e&255]},wt.LONGDATETIME=rn(8),He.TAG=function(e){return bt.argument(e.length===4,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},wt.TAG=rn(4),He.Card8=He.BYTE,wt.Card8=wt.BYTE,He.Card16=He.USHORT,wt.Card16=wt.USHORT,He.OffSize=He.BYTE,wt.OffSize=wt.BYTE,He.SID=He.USHORT,wt.SID=wt.USHORT,He.NUMBER=function(e){return e>=-107&&e<=107?[e+139]:e>=108&&e<=1131?(e=e-108,[(e>>8)+247,e&255]):e>=-1131&&e<=-108?(e=-e-108,[(e>>8)+251,e&255]):e>=-32768&&e<=32767?He.NUMBER16(e):He.NUMBER32(e)},wt.NUMBER=function(e){return He.NUMBER(e).length},He.NUMBER16=function(e){return[28,e>>8&255,e&255]},wt.NUMBER16=rn(3),He.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,e&255]},wt.NUMBER32=rn(5),He.REAL=function(e){var t=e.toString(),r=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(r){var i=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*i)/i).toString()}for(var s="",a=0,n=t.length;a>8&255,t[t.length]=i&255}return t},wt.UTF16=function(e){return e.length*2};var _2={"x-mac-croatian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u03A9\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uF8FF\xA9\u2044\u20AC\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7","x-mac-cyrillic":"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E","x-mac-gaelic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u1E02\xB1\u2264\u2265\u1E03\u010A\u010B\u1E0A\u1E0B\u1E1E\u1E1F\u0120\u0121\u1E40\xE6\xF8\u1E41\u1E56\u1E57\u027C\u0192\u017F\u1E60\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u1E61\u1E9B\xFF\u0178\u1E6A\u20AC\u2039\u203A\u0176\u0177\u1E6B\xB7\u1EF2\u1EF3\u204A\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u2663\xD2\xDA\xDB\xD9\u0131\xDD\xFD\u0174\u0175\u1E84\u1E85\u1E80\u1E81\u1E82\u1E83","x-mac-greek":"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\u20AC\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\xB7\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\xAD","x-mac-icelandic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-inuit":"\u1403\u1404\u1405\u1406\u140A\u140B\u1431\u1432\u1433\u1434\u1438\u1439\u1449\u144E\u144F\u1450\u1451\u1455\u1456\u1466\u146D\u146E\u146F\u1470\u1472\u1473\u1483\u148B\u148C\u148D\u148E\u1490\u1491\xB0\u14A1\u14A5\u14A6\u2022\xB6\u14A7\xAE\xA9\u2122\u14A8\u14AA\u14AB\u14BB\u14C2\u14C3\u14C4\u14C5\u14C7\u14C8\u14D0\u14EF\u14F0\u14F1\u14F2\u14F4\u14F5\u1505\u14D5\u14D6\u14D7\u14D8\u14DA\u14DB\u14EA\u1528\u1529\u152A\u152B\u152D\u2026\xA0\u152E\u153E\u1555\u1556\u1557\u2013\u2014\u201C\u201D\u2018\u2019\u1558\u1559\u155A\u155D\u1546\u1547\u1548\u1549\u154B\u154C\u1550\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u157C\u0141\u0142","x-mac-ce":"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7",macintosh:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-romanian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u0218\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\u0103\u0219\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\u021A\u021B\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-turkish":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\uF8A0\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"};Ec.MACSTRING=function(e,t,r,i){var s=_2[i];if(s!==void 0){for(var a="",n=0;n=128&&(a=r[a],a===void 0))return;i[s]=a}return i}},wt.MACSTRING=function(e,t){var r=He.MACSTRING(e,t);return r!==void 0?r.length:0};function w2(e){return e>=-128&&e<=127}function jce(e,t,r){for(var i=0,s=e.length;t>8&255,l+256&255)}return a}He.VARDELTAS=function(e){for(var t=0,r=[];t=-128&&i<=127?t=Hce(e,t,r):t=Xce(e,t,r)}return r},He.INDEX=function(e){for(var t=1,r=[t],i=[],s=0;s>8,t[d+1]=c&255,t=t.concat(i[h])}return t},wt.TABLE=function(e){for(var t=0,r=e.fields.length,i=0;i0)return new ve(this.data,this.offset+t).parseStruct(e)},ve.prototype.parsePointer32=function(e){var t=this.parseOffset32();if(t>0)return new ve(this.data,this.offset+t).parseStruct(e)},ve.prototype.parseListOfLists=function(e){for(var t=this.parseOffset16List(),r=t.length,i=this.relativeOffset,s=new Array(r),a=0;a>1,t.skip("uShort",3),e.glyphIndexMap={};for(var n=new ot.Parser(r,i+s+14),o=new ot.Parser(r,i+s+16+a*2),l=new ot.Parser(r,i+s+16+a*4),u=new ot.Parser(r,i+s+16+a*6),h=i+s+16+a*8,d=0;d=0;s-=1){var a=ot.getUShort(e,t+4+s*8),n=ot.getUShort(e,t+4+s*8+2);if(a===3&&(n===0||n===1||n===10)||a===0&&(n===0||n===1||n===2||n===3||n===4)){i=ot.getULong(e,t+4+s*8+4);break}}if(i===-1)throw new Error("No valid cmap sub-tables found.");var o=new ot.Parser(e,t+i);if(r.format=o.parseUShort(),r.format===12)Kce(r,o);else if(r.format===4)epe(r,o,e,t,i);else throw new Error("Only format 4 and 12 cmap tables are supported (found format "+r.format+").");return r}function rpe(e,t,r){e.segments.push({end:t,start:t,delta:-(t-r),offset:0,glyphIndex:r})}function ipe(e){e.segments.push({end:65535,start:65535,delta:1,offset:0})}function spe(e){var t=!0,r;for(r=e.length-1;r>0;r-=1){var i=e.get(r);if(i.unicode>65535){console.log("Adding CMAP format 12 (needed!)"),t=!1;break}}var s=[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:t?1:2},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:t?12:20}];t||(s=s.concat([{name:"cmap12PlatformID",type:"USHORT",value:3},{name:"cmap12EncodingID",type:"USHORT",value:10},{name:"cmap12Offset",type:"ULONG",value:0}])),s=s.concat([{name:"format",type:"USHORT",value:4},{name:"cmap4Length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);var a=new rt.Table("cmap",s);for(a.segments=[],r=0;r>4,n=s&15;if(a===r||(t+=i[a],n===r))break;t+=i[n]}return parseFloat(t)}function xpe(e,t){var r,i,s,a;if(t===28)return r=e.parseByte(),i=e.parseByte(),r<<8|i;if(t===29)return r=e.parseByte(),i=e.parseByte(),s=e.parseByte(),a=e.parseByte(),r<<24|i<<16|s<<8|a;if(t===30)return ype(e);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return r=e.parseByte(),(t-247)*256+r+108;if(t>=251&&t<=254)return r=e.parseByte(),-(t-251)*256-r-108;throw new Error("Invalid b0 "+t)}function vpe(e){for(var t={},r=0;r>1,l.length=0,h=!0}function R(E){for(var P,I,O,L,X,z,H,ue,ne,re,ce,ge,ye=0;ye1&&!h&&(w=l.shift()+v,h=!0),m+=l.pop(),N(c,m);break;case 5:for(;l.length>0;)c+=l.shift(),m+=l.shift(),o.lineTo(c,m);break;case 6:for(;l.length>0&&(c+=l.shift(),o.lineTo(c,m),l.length!==0);)m+=l.shift(),o.lineTo(c,m);break;case 7:for(;l.length>0&&(m+=l.shift(),o.lineTo(c,m),l.length!==0);)c+=l.shift(),o.lineTo(c,m);break;case 8:for(;l.length>0;)i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 10:X=l.pop()+y,z=g[X],z&&R(z);break;case 11:return;case 12:switch(oe=E[ye],ye+=1,oe){case 35:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n+l.shift(),ne=H+l.shift(),re=ue+l.shift(),ce=ne+l.shift(),ge=re+l.shift(),c=ce+l.shift(),m=ge+l.shift(),l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 34:i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n,ne=H+l.shift(),re=n,ce=ne+l.shift(),ge=m,c=ce+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 36:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n,ne=H+l.shift(),re=n,ce=ne+l.shift(),ge=re+l.shift(),c=ce+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 37:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n+l.shift(),ne=H+l.shift(),re=ue+l.shift(),ce=ne+l.shift(),ge=re+l.shift(),Math.abs(ce-c)>Math.abs(ge-m)?c=ce+l.shift():m=ge+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;default:console.log("Glyph "+t.index+": unknown operator 1200"+oe),l.length=0}break;case 14:l.length>0&&!h&&(w=l.shift()+v,h=!0),d&&(o.closePath(),d=!1);break;case 18:C();break;case 19:case 20:C(),ye+=u+7>>3;break;case 21:l.length>2&&!h&&(w=l.shift()+v,h=!0),m+=l.pop(),c+=l.pop(),N(c,m);break;case 22:l.length>1&&!h&&(w=l.shift()+v,h=!0),c+=l.pop(),N(c,m);break;case 23:C();break;case 24:for(;l.length>2;)i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);c+=l.shift(),m+=l.shift(),o.lineTo(c,m);break;case 25:for(;l.length>6;)c+=l.shift(),m+=l.shift(),o.lineTo(c,m);i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 26:for(l.length%2&&(c+=l.shift());l.length>0;)i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a,m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 27:for(l.length%2&&(m+=l.shift());l.length>0;)i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n,o.curveTo(i,s,a,n,c,m);break;case 28:P=E[ye],I=E[ye+1],l.push((P<<24|I<<16)>>16),ye+=2;break;case 29:X=l.pop()+e.gsubrsBias,z=e.gsubrs[X],z&&R(z);break;case 30:for(;l.length>0&&(i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m),l.length!==0);)i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),m=n+l.shift(),c=a+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m);break;case 31:for(;l.length>0&&(i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),m=n+l.shift(),c=a+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m),l.length!==0);)i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m);break;default:oe<32?console.log("Glyph "+t.index+": unknown operator "+oe):oe<247?l.push(oe-139):oe<251?(P=E[ye],ye+=1,l.push((oe-247)*256+P+108)):oe<255?(P=E[ye],ye+=1,l.push(-(oe-251)*256-P-108)):(P=E[ye],I=E[ye+1],O=E[ye+2],L=E[ye+3],ye+=4,l.push((P<<24|I<<16|O<<8|L)/65536))}}}return R(r),t.advanceWidth=w,o}function wpe(e,t,r,i){var s=[],a,n=new ot.Parser(e,t),o=n.parseCard8();if(o===0)for(var l=0;l=i)throw new Error("CFF table CID Font FDSelect has bad FD index value "+a+" (FD count "+i+")");s.push(a)}else if(o===3){var u=n.parseCard16(),h=n.parseCard16();if(h!==0)throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID "+h);for(var d,c=0;c=i)throw new Error("CFF table CID Font FDSelect has bad FD index value "+a+" (FD count "+i+")");if(d>r)throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID "+d);for(;h=0&&(r=i),i=t.indexOf(e),i>=0?r=i+Lx.length:(r=Lx.length+t.length,t.push(e)),r}function Npe(){return new rt.Record("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function Ape(e){var t=new rt.Record("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);t.names=[];for(var r=0;r=r.begin&&e=1&&(r.ulCodePageRange1=i.parseULong(),r.ulCodePageRange2=i.parseULong()),r.version>=2&&(r.sxHeight=i.parseShort(),r.sCapHeight=i.parseShort(),r.usDefaultChar=i.parseUShort(),r.usBreakChar=i.parseUShort(),r.usMaxContent=i.parseUShort()),r}function rme(e){return new rt.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],e)}var I2={parse:tme,make:rme,unicodeRanges:B2,getUnicodeRange:eme};function ime(e,t){var r={},i=new ot.Parser(e,t);switch(r.version=i.parseVersion(),r.italicAngle=i.parseFixed(),r.underlinePosition=i.parseShort(),r.underlineThickness=i.parseShort(),r.isFixedPitch=i.parseULong(),r.minMemType42=i.parseULong(),r.maxMemType42=i.parseULong(),r.minMemType1=i.parseULong(),r.maxMemType1=i.parseULong(),r.version){case 1:r.names=_h.slice();break;case 2:r.numberOfGlyphs=i.parseUShort(),r.glyphNameIndex=new Array(r.numberOfGlyphs);for(var s=0;s=_h.length){var n=i.parseChar();r.names.push(i.parseString(n))}break;case 2.5:r.numberOfGlyphs=i.parseUShort(),r.offset=new Array(r.numberOfGlyphs);for(var o=0;od.value.tag?1:-1}),t.fields=t.fields.concat(i),t.fields=t.fields.concat(s),t}function YL(e,t,r){for(var i=0;i0){var a=e.glyphs.get(s);return a.getMetrics()}}return r}function ume(e){for(var t=0,r=0;rb||l===void 0)&&b>0&&(l=b),u 123 are reserved for internal usage");if(y.name!==".notdef"){var S=y.getMetrics();t.push(S.xMin),r.push(S.yMin),i.push(S.xMax),s.push(S.yMax),n.push(S.leftSideBearing),o.push(S.rightSideBearing),a.push(y.advanceWidth)}}var T={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,r),xMax:Math.max.apply(null,i),yMax:Math.max.apply(null,s),advanceWidthMax:Math.max.apply(null,a),advanceWidthAvg:ume(a),minLeftSideBearing:Math.min.apply(null,n),maxLeftSideBearing:Math.max.apply(null,n),minRightSideBearing:Math.min.apply(null,o)};T.ascender=e.ascender,T.descender=e.descender;var w=PL.make({flags:3,unitsPerEm:e.unitsPerEm,xMin:T.xMin,yMin:T.yMin,xMax:T.xMax,yMax:T.yMax,lowestRecPPEM:3,createdTimestamp:e.createdTimestamp}),N=BL.make({ascender:T.ascender,descender:T.descender,advanceWidthMax:T.advanceWidthMax,minLeftSideBearing:T.minLeftSideBearing,minRightSideBearing:T.minRightSideBearing,xMaxExtent:T.maxLeftSideBearing+(T.xMax-T.xMin),numberOfHMetrics:e.glyphs.length}),C=LL.make(e.glyphs.length),R=I2.make(Object.assign({xAvgCharWidth:Math.round(T.advanceWidthAvg),usFirstCharIndex:l,usLastCharIndex:u,ulUnicodeRange1:h,ulUnicodeRange2:d,ulUnicodeRange3:c,ulUnicodeRange4:m,sTypoAscender:T.ascender,sTypoDescender:T.descender,sTypoLineGap:0,usWinAscent:T.yMax,usWinDescent:Math.abs(T.yMin),ulCodePageRange1:1,sxHeight:YL(e,"xyvw",{yMax:Math.round(T.ascender/2)}).yMax,sCapHeight:YL(e,"HIKLEFJMNTZBDPRAGOQSUVWXY",T).yMax,usDefaultChar:e.hasChar(" ")?32:0,usBreakChar:e.hasChar(" ")?32:0},e.tables.os2)),E=IL.make(e.glyphs),P=fL.make(e.glyphs),I=e.getEnglishName("fontFamily"),O=e.getEnglishName("fontSubfamily"),L=I+" "+O,X=e.getEnglishName("postScriptName");X||(X=I.replace(/\s/g,"")+"-"+O);var z={};for(var H in e.names)z[H]=e.names[H];z.uniqueID||(z.uniqueID={en:e.getEnglishName("manufacturer")+":"+L}),z.postScriptName||(z.postScriptName={en:X}),z.preferredFamily||(z.preferredFamily=e.names.fontFamily),z.preferredSubfamily||(z.preferredSubfamily=e.names.fontSubfamily);var ue=[],ne=GL.make(z,ue),re=ue.length>0?FL.make(ue):void 0,ce=WL.make(),ge=EL.make(e.glyphs,{version:e.getEnglishName("version"),fullName:L,familyName:I,weightName:O,postScriptName:X,unitsPerEm:e.unitsPerEm,fontBBox:[0,T.yMin,T.ascender,T.advanceWidthMax]}),ye=e.metas&&Object.keys(e.metas).length>0?HL.make(e.metas):void 0,oe=[w,N,C,R,ne,P,ce,ge,E];re&&oe.push(re),e.tables.gsub&&oe.push(jL.make(e.tables.gsub)),ye&&oe.push(ye);for(var Ae=qL(oe),Ie=Ae.encode(),Xe=F2(Ie),at=Ae.fields,W=!1,j=0;j>>1,a=e[s].tag;if(a===t)return s;a>>1,a=e[s];if(a===t)return s;a>>1;r=e[a];var n=r.start;if(n===t)return r;n0)return r=e[i-1],t>r.end?0:r}function lf(e,t){this.font=e,this.tableName=t}lf.prototype={searchTag:L2,binSearch:ZL,getTable:function(e){var t=this.font.tables[this.tableName];return!t&&e&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var e=this.getTable();return e?e.scripts.map(function(t){return t.tag}):[]},getDefaultScriptName:function(){var e=this.getTable();if(e){for(var t=!1,r=0;r=0)return i[s].script;if(t){var a={tag:e,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return i.splice(-1-s,0,a),a.script}}},getLangSysTable:function(e,t,r){var i=this.getScriptTable(e,r);if(i){if(!t||t==="dflt"||t==="DFLT")return i.defaultLangSys;var s=L2(i.langSysRecords,t);if(s>=0)return i.langSysRecords[s].langSys;if(r){var a={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return i.langSysRecords.splice(-1-s,0,a),a.langSys}}},getFeatureTable:function(e,t,r,i){var s=this.getLangSysTable(e,t,i);if(s){for(var a,n=s.featureIndexes,o=this.font.tables[this.tableName].features,l=0;l=o[u-1].tag,"Features must be added in alphabetical order."),a={tag:r,feature:{params:0,lookupListIndexes:[]}},o.push(a),n.push(u),a.feature}}},getLookupTables:function(e,t,r,i,s){var a=this.getFeatureTable(e,t,r,s),n=[];if(a){for(var o,l=a.lookupListIndexes,u=this.font.tables[this.tableName].lookups,h=0;h=0?r:-1;case 2:var i=JL(e.ranges,t);return i?i.index+t-i.start:-1}},expandCoverage:function(e){if(e.format===1)return e.glyphs;for(var t=[],r=e.ranges,i=0;i1,'Multiple: "by" must be an array of two or more ids');var s=this.getLookupTables(r,i,e,2,!0)[0],a=k2(s,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});bt.assert(a.coverage.format===1,"Multiple: unable to modify coverage table format "+a.coverage.format);var n=t.sub,o=this.binSearch(a.coverage.glyphs,n);o<0&&(o=-1-o,a.coverage.glyphs.splice(o,0,n),a.sequences.splice(o,0,0)),a.sequences[o]=t.by},sa.prototype.addAlternate=function(e,t,r,i){var s=this.getLookupTables(r,i,e,3,!0)[0],a=k2(s,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});bt.assert(a.coverage.format===1,"Alternate: unable to modify coverage table format "+a.coverage.format);var n=t.sub,o=this.binSearch(a.coverage.glyphs,n);o<0&&(o=-1-o,a.coverage.glyphs.splice(o,0,n),a.alternateSets.splice(o,0,0)),a.alternateSets[o]=t.by},sa.prototype.addLigature=function(e,t,r,i){var s=this.getLookupTables(r,i,e,4,!0)[0],a=s.subtables[0];a||(a={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},s.subtables[0]=a),bt.assert(a.coverage.format===1,"Ligature: unable to modify coverage table format "+a.coverage.format);var n=t.sub[0],o=t.sub.slice(1),l={ligGlyph:t.by,components:o},u=this.binSearch(a.coverage.glyphs,n);if(u>=0){for(var h=a.ligatureSets[u],d=0;d0?(a=e.parseByte(),(t&s)===0&&(a=-a),a=r+a):(t&s)>0?a=r:a=r+e.parseShort(),a}function ek(e,t,r){var i=new ot.Parser(t,r);e.numberOfContours=i.parseShort(),e._xMin=i.parseShort(),e._yMin=i.parseShort(),e._xMax=i.parseShort(),e._yMax=i.parseShort();var s,a;if(e.numberOfContours>0){for(var n=e.endPointIndices=[],o=0;o0)for(var d=i.parseByte(),c=0;c0){var m=[],g;if(u>0){for(var y=0;y=0,m.push(g);for(var b=0,v=0;v0?(s&2)>0?(N.dx=i.parseShort(),N.dy=i.parseShort()):N.matchedPoints=[i.parseUShort(),i.parseUShort()]:(s&2)>0?(N.dx=i.parseChar(),N.dy=i.parseChar()):N.matchedPoints=[i.parseByte(),i.parseByte()],(s&8)>0?N.xScale=N.yScale=i.parseF2Dot14():(s&64)>0?(N.xScale=i.parseF2Dot14(),N.yScale=i.parseF2Dot14()):(s&128)>0&&(N.xScale=i.parseF2Dot14(),N.scale01=i.parseF2Dot14(),N.scale10=i.parseF2Dot14(),N.yScale=i.parseF2Dot14()),e.components.push(N),w=!!(s&32)}if(s&256){e.instructionLength=i.parseUShort(),e.instructions=[];for(var C=0;Ct.points.length-1||i.matchedPoints[1]>s.points.length-1)throw Error("Matched points out of range in "+t.name);var n=t.points[i.matchedPoints[0]],o=s.points[i.matchedPoints[1]],l={xScale:i.xScale,scale01:i.scale01,scale10:i.scale10,yScale:i.yScale,dx:0,dy:0};o=D2([o],l)[0],l.dx=n.x-o.x,l.dy=n.y-o.y,a=D2(s.points,l)}t.points=t.points.concat(a)}}return tk(t.points)}function gme(e,t,r,i){for(var s=new Zn.GlyphSet(i),a=0;a2)){var r=this.font,i=this._prepState;if(!i||i.ppem!==t){var s=this._fpgmState;if(!s){iu.prototype=wme,s=this._fpgmState=new iu("fpgm",r.tables.fpgm),s.funcs=[],s.font=r,exports.DEBUG&&(console.log("---EXEC FPGM---"),s.step=-1);try{Mh(s)}catch(u){console.log("Hinting error in FPGM:"+u),this._errorState=3;return}}iu.prototype=s,i=this._prepState=new iu("prep",r.tables.prep),i.ppem=t;var a=r.tables.cvt;if(a)for(var n=i.cvt=new Array(a.length),o=t/r.unitsPerEm,l=0;l1))try{return ak(e,i)}catch(u){this._errorState<1&&(console.log("Hinting error:"+u),console.log("Note: further hinting errors are silenced")),this._errorState=1;return}}},ak=function(e,t){var r=t.ppem/t.font.unitsPerEm,i=r,s=e.components,a,n,o;if(iu.prototype=t,!s)o=new iu("glyf",e.instructions),exports.DEBUG&&(console.log("---EXEC GLYPH---"),o.step=-1),O2(e,o,r,i),n=o.gZone;else{var l=t.font;n=[],a=[];for(var u=0;u=176&&a<=183)i+=a-176+1;else if(a>=184&&a<=191)i+=(a-184+1)*2;else if(t&&s===1&&a===27)break;while(s>0);e.ip=i}function hk(e,t){exports.DEBUG&&console.log(t.step,"SVTCA["+e.axis+"]"),t.fv=t.pv=t.dpv=e}function dk(e,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+e.axis+"]"),t.pv=t.dpv=e}function ck(e,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+e.axis+"]"),t.fv=e}function pk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log("SPVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.pv=t.dpv=cf(o,l)}function mk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log("SFVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.fv=cf(o,l)}function Mme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SPVFS[]",r,i),e.pv=e.dpv=cf(i,r)}function Nme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SPVFS[]",r,i),e.fv=cf(i,r)}function Ame(e){var t=e.stack,r=e.pv;exports.DEBUG&&console.log(e.step,"GPV[]"),t.push(r.x*16384),t.push(r.y*16384)}function Cme(e){var t=e.stack,r=e.fv;exports.DEBUG&&console.log(e.step,"GFV[]"),t.push(r.x*16384),t.push(r.y*16384)}function Rme(e){e.fv=e.pv,exports.DEBUG&&console.log(e.step,"SFVTPV[]")}function Eme(e){var t=e.stack,r=t.pop(),i=t.pop(),s=t.pop(),a=t.pop(),n=t.pop(),o=e.z0,l=e.z1,u=o[r],h=o[i],d=l[s],c=l[a],m=e.z2[n];exports.DEBUG&&console.log("ISECT[], ",r,i,s,a,n);var g=u.x,y=u.y,b=h.x,v=h.y,S=d.x,T=d.y,w=c.x,N=c.y,C=(g-b)*(T-N)-(y-v)*(S-w),R=g*v-y*b,E=S*N-T*w;m.x=(R*(S-w)-E*(g-b))/C,m.y=(R*(T-N)-E*(y-v))/C}function Pme(e){e.rp0=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP0[]",e.rp0)}function Bme(e){e.rp1=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP1[]",e.rp1)}function Ime(e){e.rp2=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP2[]",e.rp2)}function Fme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP0[]",t),e.zp0=t,t){case 0:e.tZone||Ox(e),e.z0=e.tZone;break;case 1:e.z0=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Lme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP1[]",t),e.zp1=t,t){case 0:e.tZone||Ox(e),e.z1=e.tZone;break;case 1:e.z1=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function kme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP2[]",t),e.zp2=t,t){case 0:e.tZone||Ox(e),e.z2=e.tZone;break;case 1:e.z2=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Dme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZPS[]",t),e.zp0=e.zp1=e.zp2=t,t){case 0:e.tZone||Ox(e),e.z0=e.z1=e.z2=e.tZone;break;case 1:e.z0=e.z1=e.z2=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Ome(e){e.loop=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SLOOP[]",e.loop)}function Ume(e){exports.DEBUG&&console.log(e.step,"RTG[]"),e.round=ok}function zme(e){exports.DEBUG&&console.log(e.step,"RTHG[]"),e.round=Tme}function Vme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SMD[]",t),e.minDis=t/64}function Gme(e){exports.DEBUG&&console.log(e.step,"ELSE[]"),uk(e,!1)}function Wme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"JMPR[]",t),e.ip+=t-1}function jme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCVTCI[]",t),e.cvCutIn=t/64}function Hme(e){var t=e.stack;exports.DEBUG&&console.log(e.step,"DUP[]"),t.push(t[t.length-1])}function U2(e){exports.DEBUG&&console.log(e.step,"POP[]"),e.stack.pop()}function Xme(e){exports.DEBUG&&console.log(e.step,"CLEAR[]"),e.stack.length=0}function $me(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SWAP[]"),t.push(r),t.push(i)}function qme(e){var t=e.stack;exports.DEBUG&&console.log(e.step,"DEPTH[]"),t.push(t.length)}function Yme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"LOOPCALL[]",r,i);var s=e.ip,a=e.prog;e.prog=e.funcs[r];for(var n=0;n1?"loop "+(t.loop-o)+": ":"")+"SHP["+(e?"rp1":"rp2")+"]",u)}t.loop=1}function xk(e,t){var r=t.stack,i=e?t.rp1:t.rp2,s=(e?t.z0:t.z1)[i],a=t.fv,n=t.pv,o=r.pop(),l=t.z2[t.contours[o]],u=l;exports.DEBUG&&console.log(t.step,"SHC["+e+"]",o);var h=n.distance(s,s,!1,!0);do u!==s&&a.setRelative(u,u,h,n),u=u.nextPointOnContour;while(u!==l)}function vk(e,t){var r=t.stack,i=e?t.rp1:t.rp2,s=(e?t.z0:t.z1)[i],a=t.fv,n=t.pv,o=r.pop();exports.DEBUG&&console.log(t.step,"SHZ["+e+"]",o);var l;switch(o){case 0:l=t.tZone;break;case 1:l=t.gZone;break;default:throw new Error("Invalid zone")}for(var u,h=n.distance(s,s,!1,!0),d=l.length-2,c=0;c1?"loop "+(e.loop-r)+": ":"")+"SHPIX[]",n,s),i.setRelative(o,o,s),i.touch(o)}e.loop=1}function tfe(e){for(var t=e.stack,r=e.rp1,i=e.rp2,s=e.loop,a=e.z0[r],n=e.z1[i],o=e.fv,l=e.dpv,u=e.z2;s--;){var h=t.pop(),d=u[h];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-s)+": ":"")+"IP[]",h,r,"<->",i),o.interpolate(d,a,n,l),o.touch(d)}e.loop=1}function bk(e,t){var r=t.stack,i=r.pop()/64,s=r.pop(),a=t.z1[s],n=t.z0[t.rp0],o=t.fv,l=t.pv;o.setRelative(a,n,i,l),o.touch(a),exports.DEBUG&&console.log(t.step,"MSIRP["+e+"]",i,s),t.rp1=t.rp0,t.rp2=s,e&&(t.rp0=s)}function rfe(e){for(var t=e.stack,r=e.rp0,i=e.z0[r],s=e.loop,a=e.fv,n=e.pv,o=e.z1;s--;){var l=t.pop(),u=o[l];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-s)+": ":"")+"ALIGNRP[]",l),a.setRelative(u,i,0,n),a.touch(u)}e.loop=1}function ife(e){exports.DEBUG&&console.log(e.step,"RTDG[]"),e.round=bme}function Tk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z0[s],n=t.fv,o=t.pv,l=t.cvt[i];exports.DEBUG&&console.log(t.step,"MIAP["+e+"]",i,"(",l,")",s);var u=o.distance(a,pf);e&&(Math.abs(u-l)",o),t.stack.push(Math.round(o*64))}function hfe(e){exports.DEBUG&&console.log(e.step,"MPPEM[]"),e.stack.push(e.ppem)}function dfe(e){exports.DEBUG&&console.log(e.step,"FLIPON[]"),e.autoFlip=!0}function cfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"LT[]",r,i),t.push(ir?1:0)}function ffe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"GTEQ[]",r,i),t.push(i>=r?1:0)}function gfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"EQ[]",r,i),t.push(r===i?1:0)}function yfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"NEQ[]",r,i),t.push(r!==i?1:0)}function xfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"ODD[]",r),t.push(Math.trunc(r)%2?1:0)}function vfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"EVEN[]",r),t.push(Math.trunc(r)%2?0:1)}function bfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"IF[]",t),t||(uk(e,!0),exports.DEBUG&&console.log(e.step,"EIF[]"))}function Tfe(e){exports.DEBUG&&console.log(e.step,"EIF[]")}function Sfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"AND[]",r,i),t.push(r&&i?1:0)}function _fe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"OR[]",r,i),t.push(r||i?1:0)}function wfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"NOT[]",r),t.push(r?0:1)}function z2(e,t){var r=t.stack,i=r.pop(),s=t.fv,a=t.pv,n=t.ppem,o=t.deltaBase+(e-1)*16,l=t.deltaShift,u=t.z0;exports.DEBUG&&console.log(t.step,"DELTAP["+e+"]",i,r);for(var h=0;h>4);if(m===n){var g=(c&15)-8;g>=0&&g++,exports.DEBUG&&console.log(t.step,"DELTAPFIX",d,"by",g*l);var y=u[d];s.setRelative(y,y,g*l,a)}}}function Mfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"SDB[]",r),e.deltaBase=r}function Nfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"SDS[]",r),e.deltaShift=Math.pow(.5,r)}function Afe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"ADD[]",r,i),t.push(i+r)}function Cfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SUB[]",r,i),t.push(i-r)}function Rfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"DIV[]",r,i),t.push(i*64/r)}function Efe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MUL[]",r,i),t.push(i*r/64)}function Pfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"ABS[]",r),t.push(Math.abs(r))}function Bfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"NEG[]",r),t.push(-r)}function Ife(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"FLOOR[]",r),t.push(Math.floor(r/64)*64)}function Ffe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"CEILING[]",r),t.push(Math.ceil(r/64)*64)}function Ux(e,t){var r=t.stack,i=r.pop();exports.DEBUG&&console.log(t.step,"ROUND[]"),r.push(t.round(i/64)*64)}function Lfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"WCVTF[]",r,i),e.cvt[i]=r*e.ppem/e.font.unitsPerEm}function V2(e,t){var r=t.stack,i=r.pop(),s=t.ppem,a=t.deltaBase+(e-1)*16,n=t.deltaShift;exports.DEBUG&&console.log(t.step,"DELTAC["+e+"]",i,r);for(var o=0;o>4);if(h===s){var d=(u&15)-8;d>=0&&d++;var c=d*n;exports.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",c),t.cvt[l]+=c}}}function kfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SROUND[]",t),e.round=lk;var r;switch(t&192){case 0:r=.5;break;case 64:r=1;break;case 128:r=2;break;default:throw new Error("invalid SROUND value")}switch(e.srPeriod=r,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*r;break;case 32:e.srPhase=.5*r;break;case 48:e.srPhase=.75*r;break;default:throw new Error("invalid SROUND value")}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*r}function Dfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"S45ROUND[]",t),e.round=lk;var r;switch(t&192){case 0:r=Math.sqrt(2)/2;break;case 64:r=Math.sqrt(2);break;case 128:r=2*Math.sqrt(2);break;default:throw new Error("invalid S45ROUND value")}switch(e.srPeriod=r,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*r;break;case 32:e.srPhase=.5*r;break;case 48:e.srPhase=.75*r;break;default:throw new Error("invalid S45ROUND value")}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*r}function Ofe(e){exports.DEBUG&&console.log(e.step,"ROFF[]"),e.round=vme}function Ufe(e){exports.DEBUG&&console.log(e.step,"RUTG[]"),e.round=Sme}function zfe(e){exports.DEBUG&&console.log(e.step,"RDTG[]"),e.round=_me}function Vfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANCTRL[]",t)}function wk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log(t.step,"SDPVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.dpv=cf(o,l)}function Gfe(e){var t=e.stack,r=t.pop(),i=0;exports.DEBUG&&console.log(e.step,"GETINFO[]",r),r&1&&(i=35),r&32&&(i|=4096),t.push(i)}function Wfe(e){var t=e.stack,r=t.pop(),i=t.pop(),s=t.pop();exports.DEBUG&&console.log(e.step,"ROLL[]"),t.push(i),t.push(r),t.push(s)}function jfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MAX[]",r,i),t.push(Math.max(i,r))}function Hfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MIN[]",r,i),t.push(Math.min(i,r))}function Xfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANTYPE[]",t)}function $fe(e){var t=e.stack.pop(),r=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"INSTCTRL[]",t,r),t){case 1:e.inhibitGridFit=!!r;return;case 2:e.ignoreCvt=!!r;return;default:throw new Error("invalid INSTCTRL[] selector")}}function su(e,t){var r=t.stack,i=t.prog,s=t.ip;exports.DEBUG&&console.log(t.step,"PUSHB["+e+"]");for(var a=0;a=0?1:-1,b=Math.abs(b),e&&(S=a.cvt[o],i&&Math.abs(b-S)":"_")+(i?"R":"_")+(s===0?"Gr":s===1?"Bl":s===2?"Wh":"")+"]",e?o+"("+a.cvt[o]+","+S+")":"",l,"(d =",y,"->",v*b,")"),a.rp1=a.rp0,a.rp2=l,t&&(a.rp0=l)}sk=[hk.bind(void 0,qo),hk.bind(void 0,Jn),dk.bind(void 0,qo),dk.bind(void 0,Jn),ck.bind(void 0,qo),ck.bind(void 0,Jn),pk.bind(void 0,0),pk.bind(void 0,1),mk.bind(void 0,0),mk.bind(void 0,1),Mme,Nme,Ame,Cme,Rme,Eme,Pme,Bme,Ime,Fme,Lme,kme,Dme,Ome,Ume,zme,Vme,Gme,Wme,jme,void 0,void 0,Hme,U2,Xme,$me,qme,Jme,Qme,void 0,void 0,void 0,Yme,Zme,Kme,void 0,fk.bind(void 0,0),fk.bind(void 0,1),gk.bind(void 0,qo),gk.bind(void 0,Jn),yk.bind(void 0,0),yk.bind(void 0,1),xk.bind(void 0,0),xk.bind(void 0,1),vk.bind(void 0,0),vk.bind(void 0,1),efe,tfe,bk.bind(void 0,0),bk.bind(void 0,1),rfe,ife,Tk.bind(void 0,0),Tk.bind(void 0,1),sfe,afe,nfe,ofe,lfe,ufe,Sk.bind(void 0,0),Sk.bind(void 0,1),void 0,_k.bind(void 0,0),_k.bind(void 0,1),hfe,void 0,dfe,void 0,void 0,cfe,pfe,mfe,ffe,gfe,yfe,xfe,vfe,bfe,Tfe,Sfe,_fe,wfe,z2.bind(void 0,1),Mfe,Nfe,Afe,Cfe,Rfe,Efe,Pfe,Bfe,Ife,Ffe,Ux.bind(void 0,0),Ux.bind(void 0,1),Ux.bind(void 0,2),Ux.bind(void 0,3),void 0,void 0,void 0,void 0,Lfe,z2.bind(void 0,2),z2.bind(void 0,3),V2.bind(void 0,1),V2.bind(void 0,2),V2.bind(void 0,3),kfe,Dfe,void 0,void 0,Ofe,void 0,Ufe,zfe,U2,U2,void 0,void 0,void 0,void 0,void 0,Vfe,wk.bind(void 0,0),wk.bind(void 0,1),Gfe,void 0,Wfe,jfe,Hfe,Xfe,$fe,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,su.bind(void 0,1),su.bind(void 0,2),su.bind(void 0,3),su.bind(void 0,4),su.bind(void 0,5),su.bind(void 0,6),su.bind(void 0,7),su.bind(void 0,8),au.bind(void 0,1),au.bind(void 0,2),au.bind(void 0,3),au.bind(void 0,4),au.bind(void 0,5),au.bind(void 0,6),au.bind(void 0,7),au.bind(void 0,8),lt.bind(void 0,0,0,0,0,0),lt.bind(void 0,0,0,0,0,1),lt.bind(void 0,0,0,0,0,2),lt.bind(void 0,0,0,0,0,3),lt.bind(void 0,0,0,0,1,0),lt.bind(void 0,0,0,0,1,1),lt.bind(void 0,0,0,0,1,2),lt.bind(void 0,0,0,0,1,3),lt.bind(void 0,0,0,1,0,0),lt.bind(void 0,0,0,1,0,1),lt.bind(void 0,0,0,1,0,2),lt.bind(void 0,0,0,1,0,3),lt.bind(void 0,0,0,1,1,0),lt.bind(void 0,0,0,1,1,1),lt.bind(void 0,0,0,1,1,2),lt.bind(void 0,0,0,1,1,3),lt.bind(void 0,0,1,0,0,0),lt.bind(void 0,0,1,0,0,1),lt.bind(void 0,0,1,0,0,2),lt.bind(void 0,0,1,0,0,3),lt.bind(void 0,0,1,0,1,0),lt.bind(void 0,0,1,0,1,1),lt.bind(void 0,0,1,0,1,2),lt.bind(void 0,0,1,0,1,3),lt.bind(void 0,0,1,1,0,0),lt.bind(void 0,0,1,1,0,1),lt.bind(void 0,0,1,1,0,2),lt.bind(void 0,0,1,1,0,3),lt.bind(void 0,0,1,1,1,0),lt.bind(void 0,0,1,1,1,1),lt.bind(void 0,0,1,1,1,2),lt.bind(void 0,0,1,1,1,3),lt.bind(void 0,1,0,0,0,0),lt.bind(void 0,1,0,0,0,1),lt.bind(void 0,1,0,0,0,2),lt.bind(void 0,1,0,0,0,3),lt.bind(void 0,1,0,0,1,0),lt.bind(void 0,1,0,0,1,1),lt.bind(void 0,1,0,0,1,2),lt.bind(void 0,1,0,0,1,3),lt.bind(void 0,1,0,1,0,0),lt.bind(void 0,1,0,1,0,1),lt.bind(void 0,1,0,1,0,2),lt.bind(void 0,1,0,1,0,3),lt.bind(void 0,1,0,1,1,0),lt.bind(void 0,1,0,1,1,1),lt.bind(void 0,1,0,1,1,2),lt.bind(void 0,1,0,1,1,3),lt.bind(void 0,1,1,0,0,0),lt.bind(void 0,1,1,0,0,1),lt.bind(void 0,1,1,0,0,2),lt.bind(void 0,1,1,0,0,3),lt.bind(void 0,1,1,0,1,0),lt.bind(void 0,1,1,0,1,1),lt.bind(void 0,1,1,0,1,2),lt.bind(void 0,1,1,0,1,3),lt.bind(void 0,1,1,1,0,0),lt.bind(void 0,1,1,1,0,1),lt.bind(void 0,1,1,1,0,2),lt.bind(void 0,1,1,1,0,3),lt.bind(void 0,1,1,1,1,0),lt.bind(void 0,1,1,1,1,1),lt.bind(void 0,1,1,1,1,2),lt.bind(void 0,1,1,1,1,3)];function Ic(e){this.char=e,this.state={},this.activeState=null}function G2(e,t,r){this.contextName=r,this.startIndex=e,this.endOffset=t}function qfe(e,t,r){this.contextName=e,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=r}function an(e,t){this.context=e,this.index=t,this.length=e.length,this.current=e[t],this.backtrack=e.slice(0,t),this.lookahead=e.slice(t+1)}function zx(e){this.eventId=e,this.subscribers=[]}function Yfe(e){var t=this,r=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];r.forEach(function(s){Object.defineProperty(t.events,s,{value:new zx(s)})}),e&&r.forEach(function(s){var a=e[s];typeof a=="function"&&t.events[s].subscribe(a)});var i=["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"];i.forEach(function(s){t.events[s].subscribe(t.updateContextsRanges)})}function Xr(e){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],Yfe.call(this,e)}Ic.prototype.setState=function(e,t){return this.state[e]=t,this.activeState={key:e,value:this.state[e]},this.activeState},Ic.prototype.getState=function(e){return this.state[e]||null},Xr.prototype.inboundIndex=function(e){return e>=0&&e0&&e<=this.lookahead.length):return this.lookahead[e-1];default:return null}},Xr.prototype.rangeToText=function(e){if(e instanceof G2)return this.getRangeTokens(e).map(function(t){return t.char}).join("")},Xr.prototype.getText=function(){return this.tokens.map(function(e){return e.char}).join("")},Xr.prototype.getContext=function(e){var t=this.registeredContexts[e];return t||null},Xr.prototype.on=function(e,t){var r=this.events[e];return r?r.subscribe(t):null},Xr.prototype.dispatch=function(e,t){var r=this,i=this.events[e];i instanceof zx&&i.subscribers.forEach(function(s){s.apply(r,t||[])})},Xr.prototype.registerContextChecker=function(e,t,r){if(this.getContext(e))return{FAIL:"context name '"+e+"' is already registered."};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof r!="function")return{FAIL:"missing context end check."};var i=new qfe(e,t,r);return this.registeredContexts[e]=i,this.contextCheckers.push(i),i},Xr.prototype.getRangeTokens=function(e){var t=e.startIndex+e.endOffset;return[].concat(this.tokens.slice(e.startIndex,t))},Xr.prototype.getContextRanges=function(e){var t=this.getContext(e);return t?t.ranges:{FAIL:"context checker '"+e+"' is not registered."}},Xr.prototype.resetContextsRanges=function(){var e=this.registeredContexts;for(var t in e)if(e.hasOwnProperty(t)){var r=e[t];r.ranges=[]}},Xr.prototype.updateContextsRanges=function(){this.resetContextsRanges();for(var e=this.tokens.map(function(i){return i.char}),t=0;t=s.start&&e<=s.end){var a=e-s.start;return s.index+a}}break;default:return-1}return-1}function Jfe(e,t){var r=mf(e,t.coverage);return r===-1?null:e+t.deltaGlyphId}function Qfe(e,t){var r=mf(e,t.coverage);return r===-1?null:t.substitute[r]}function W2(e,t){for(var r=[],i=0;i=0;r--){var i=t[r],s=Mk(i),a=ou(i);if(!s&&!a)return!0;if(s)return!1}return!1}function pge(e){if(Mk(e.current))return!1;for(var t=0;t0}r("fontFamily"),r("weightName"),r("manufacturer"),r("copyright"),r("version"),this.unitsPerEm>0},dr.prototype.toTables=function(){return dme.fontToTable(this)},dr.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()},dr.prototype.toArrayBuffer=function(){for(var e=this.toTables(),t=e.encode(),r=new ArrayBuffer(t.length),i=new Uint8Array(r),s=0;s=1.2&&(s.markGlyphSets=r.parsePointer(kge)),s}var Oge={parse:Dge},on=new Array(10);on[1]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{posFormat:1,coverage:this.parsePointer(ve.coverage),value:this.parseValueRecord()};if(t===2)return{posFormat:2,coverage:this.parsePointer(ve.coverage),values:this.parseValueRecordList()};bt.assert(!1,"0x"+e.toString(16)+": GPOS lookup type 1 format must be 1 or 2.")},on[2]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();bt.assert(t===1||t===2,"0x"+e.toString(16)+": GPOS lookup type 2 format must be 1 or 2.");var r=this.parsePointer(ve.coverage),i=this.parseUShort(),s=this.parseUShort();if(t===1)return{posFormat:t,coverage:r,valueFormat1:i,valueFormat2:s,pairSets:this.parseList(ve.pointer(ve.list(function(){return{secondGlyph:this.parseUShort(),value1:this.parseValueRecord(i),value2:this.parseValueRecord(s)}})))};if(t===2){var a=this.parsePointer(ve.classDef),n=this.parsePointer(ve.classDef),o=this.parseUShort(),l=this.parseUShort();return{posFormat:t,coverage:r,valueFormat1:i,valueFormat2:s,classDef1:a,classDef2:n,class1Count:o,class2Count:l,classRecords:this.parseList(o,ve.list(l,function(){return{value1:this.parseValueRecord(i),value2:this.parseValueRecord(s)}}))}}},on[3]=function(){return{error:"GPOS Lookup 3 not supported"}},on[4]=function(){return{error:"GPOS Lookup 4 not supported"}},on[5]=function(){return{error:"GPOS Lookup 5 not supported"}},on[6]=function(){return{error:"GPOS Lookup 6 not supported"}},on[7]=function(){return{error:"GPOS Lookup 7 not supported"}},on[8]=function(){return{error:"GPOS Lookup 8 not supported"}},on[9]=function(){return{error:"GPOS Lookup 9 not supported"}};function Uge(e,t){t=t||0;var r=new ve(e,t),i=r.parseVersion(1);return bt.argument(i===1||i===1.1,"Unsupported GPOS table version "+i),i===1?{version:i,scripts:r.parseScriptList(),features:r.parseFeatureList(),lookups:r.parseLookupList(on)}:{version:i,scripts:r.parseScriptList(),features:r.parseFeatureList(),lookups:r.parseLookupList(on),variations:r.parseFeatureVariationsList()}}var zge=new Array(10);function Vge(e){return new rt.Table("GPOS",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new rt.ScriptList(e.scripts)},{name:"features",type:"TABLE",value:new rt.FeatureList(e.features)},{name:"lookups",type:"TABLE",value:new rt.LookupList(e.lookups,zge)}])}var Gge={parse:Uge,make:Vge};function Wge(e){var t={};e.skip("uShort");var r=e.parseUShort();bt.argument(r===0,"Unsupported kern sub-table version."),e.skip("uShort",2);var i=e.parseUShort();e.skip("uShort",3);for(var s=0;s1&&console.warn("Only the first kern subtable is supported."),e.skip("uLong");var i=e.parseUShort(),s=i&255;if(e.skip("uShort"),s===0){var a=e.parseUShort();e.skip("uShort",3);for(var n=0;n"u",s=i&&!r.isUrl?Yge:Zge;return new Promise(function(a,n){s(e,function(o,l){if(o){if(t)return t(o);n(o)}var u;try{u=$2(l,r)}catch(h){if(t)return t(h,null);n(h)}if(t)return t(null,u);a(u)})})}function Kge(e,t){var r=ev(),i=r.readFileSync(e);return $2(QL(i),t)}var e0e=Object.freeze({__proto__:null,Font:dr,Glyph:ia,Path:di,BoundingBox:$o,_parse:ot,parse:$2,load:Qge,loadSync:Kge}),t0e=e0e,Pk=new Map;function r0e(e){let t=Pk.get(e);return t||(t=fetch(e).then(r=>{if(!r.ok)throw new Error(`typeface: ${r.status}`);return r.arrayBuffer()}).then(r=>t0e.parse(r)),Pk.set(e,t)),t}function i0e(e,t,r=0){return e.getAdvanceWidth(t,1,{kerning:!0,letterSpacing:r})}function s0e(e,t,r,i,s=0){let a=r/e.unitsPerEm,n=(e.tables?.os2?.sCapHeight??e.ascender*.72)*a,o=i*r,l=o*(t.length-1)+n,u=[];return t.forEach((h,d)=>{let c=e.getAdvanceWidth(h,r,{kerning:!0,letterSpacing:s}),m=l/2-n-d*o,g=e.getPath(h,-c/2,0,r,{kerning:!0,letterSpacing:s}),y=new nl,b=v=>m-v;for(let v of g.commands)v.type==="M"?y.moveTo(v.x,b(v.y)):v.type==="L"?y.lineTo(v.x,b(v.y)):v.type==="Q"?y.quadraticCurveTo(v.x1,b(v.y1),v.x,b(v.y)):v.type==="C"?y.bezierCurveTo(v.x1,b(v.y1),v.x2,b(v.y2),v.x,b(v.y)):v.type==="Z"&&y.currentPath?.closePath();u.push(...k5.createShapes(y))}),u}var a0e="frost-build-cache",ff="builds",n0e=1,o0e="frost-build-10-planar-cap-normals";function Bk(){return new Promise(e=>{try{if(typeof indexedDB>"u")return e(null);let t=indexedDB.open(a0e,n0e);t.onupgradeneeded=()=>{t.result.createObjectStore(ff)},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}catch{e(null)}})}async function l0e(e){let t=await Bk();return t?new Promise(r=>{try{let i=t.transaction(ff,"readonly").objectStore(ff).get(e);i.onsuccess=()=>r(i.result??null),i.onerror=()=>r(null)}catch{r(null)}}):null}async function u0e(e,t){let r=await Bk();r&&await new Promise(i=>{try{let s=r.transaction(ff,"readwrite"),a=s.objectStore(ff);a.clear(),a.put(t,e),s.oncomplete=()=>i(),s.onerror=()=>i()}catch{i()}})}function h0e(e){let t=r=>e.attributes[r]?e.attributes[r].array:null;return{position:t("position"),normal:t("normal"),uv:t("uv"),index:e.index?new Uint32Array(e.index.array):null}}function d0e(e){let t=new ps;return t.setAttribute("position",new tr(e.position,3)),t.setAttribute("normal",new tr(e.normal,3)),e.uv&&t.setAttribute("uv",new tr(e.uv,2)),e.index&&t.setIndex(new _i(e.index,1)),t.computeBoundingBox(),t}var Ah=1/60,c0e=y2(Ice),p0e="frost-ice-textured-r1-reference-optics",Ik=12,Gx={turbulenceScale:{path:["powder","turbulenceScale"],replay:!0},clumpCohesion:{path:["powder","clumpCohesion"],replay:!0},repelStrength:{path:["powder","repelStrength"],replay:!0},repelRange:{path:["powder","repelRange"],replay:!0},repelRadial:{path:["powder","repelRadial"],replay:!0},repelRadialRange:{path:["powder","repelRadialRange"],replay:!0},wrap:{path:["powder","wrap"],replay:!1},turbulenceDecay:{path:["powder","turbulenceDecay"],replay:!0},settledDrift:{path:["powder","settledDrift"],replay:!0},tumble:{path:["powder","tumble"],replay:!1},assemblyFrontDuration:{path:["healing","assemblyFrontDuration"],replay:!0},assemblyOriginX:{path:["healing","assemblyOriginX"],replay:!0},assemblyOriginY:{path:["healing","assemblyOriginY"],replay:!0},assemblyAngle:{path:["healing","assemblyAngle"],replay:!0},assemblySpread:{path:["healing","assemblySpread"],replay:!0},assemblyFrontNoise:{path:["healing","assemblyFrontNoise"],replay:!0},assemblySpeedVariation:{path:["healing","assemblySpeedVariation"],replay:!0},assemblyBend:{path:["healing","assemblyBend"],replay:!0},assemblySwirl:{path:["healing","assemblySwirl"],replay:!0},assemblyLandingVariation:{path:["healing","assemblyLandingVariation"],replay:!0},returnNoiseAmount:{path:["healing","returnNoiseAmount"],replay:!0},returnGroupStagger:{path:["healing","returnGroupStagger"],replay:!0},returnGroupScale:{path:["healing","returnGroupScale"],replay:!0},returnGroupSeed:{path:["healing","returnGroupSeed"],replay:!0},formJitter:{path:["healing","waveJitter"],replay:!0},waveReach:{path:["healing","waveReach"],replay:!0},alignToSurface:{path:["healing","alignToSurface"],replay:!1},alignCurve:{path:["healing","alignCurve"],replay:!1},rimAzimuth:{path:["lighting","rimAzimuth"],replay:!1},rimAngle:{path:["lighting","rimAngle"],replay:!1},rimSize:{path:["lighting","rimSize"],replay:!1},fillReflectionStrength:{path:["lighting","fillReflectionStrength"],replay:!1},accentCoolIntensity:{path:["lighting","accentCool","intensity"],replay:!1},accentCoolReflection:{path:["lighting","accentCool","reflection"],replay:!1},accentCoolElevation:{path:["lighting","accentCool","elevation"],replay:!1},accentCoolAzimuth:{path:["lighting","accentCool","azimuth"],replay:!1},accentCoolSize:{path:["lighting","accentCool","size"],replay:!1},accentCoolColor:{path:["lighting","accentCool","color"],replay:!1},accentWarmIntensity:{path:["lighting","accentWarm","intensity"],replay:!1},accentWarmReflection:{path:["lighting","accentWarm","reflection"],replay:!1},accentWarmElevation:{path:["lighting","accentWarm","elevation"],replay:!1},accentWarmAzimuth:{path:["lighting","accentWarm","azimuth"],replay:!1},accentWarmSize:{path:["lighting","accentWarm","size"],replay:!1},accentWarmColor:{path:["lighting","accentWarm","color"],replay:!1},keyColor:{path:["lighting","key","color"],replay:!1},keyIntensity:{path:["lighting","key","intensity"],replay:!1},keyElevation:{path:["lighting","key","elevation"],replay:!1},keyAzimuth:{path:["lighting","key","azimuth"],replay:!1},keySize:{path:["lighting","key","size"],replay:!1},fill:{path:["lighting","fill"],replay:!1},fillColor:{path:["lighting","fillColor"],replay:!1},fillGroundColor:{path:["lighting","fillGroundColor"],replay:!1},rim:{path:["lighting","rim"],replay:!1},rimColor:{path:["lighting","rimColor"],replay:!1},rimElevation:{path:["lighting","rimElevation"],replay:!1},swayAmplitude:{path:["lighting","sway","amplitude"],replay:!1},swayPeriod:{path:["lighting","sway","period"],replay:!1},envSoftbox:{path:["lighting","envSoftbox"],replay:!1},envRim:{path:["lighting","envRim"],replay:!1},envFill:{path:["lighting","envFill"],replay:!1},backdropTop:{path:["lighting","backdrop","top"],replay:!1},backdropMid:{path:["lighting","backdrop","mid"],replay:!1},backdropBottom:{path:["lighting","backdrop","bottom"],replay:!1},backdropCenterX:{path:["lighting","backdrop","centerX"],replay:!1},backdropCenterY:{path:["lighting","backdrop","centerY"],replay:!1},backdropRadius:{path:["lighting","backdrop","radius"],replay:!1},backdropFalloff:{path:["lighting","backdrop","falloff"],replay:!1},backdropNoise:{path:["lighting","backdrop","noise"],replay:!1},...Object.fromEntries(Object.keys(Qd).map(e=>[$ie(e),{path:["ice","features",e],replay:!1}])),materialBacklight:{path:["ice","backlight"],replay:!1},materialInclusionAmount:{path:["ice","inclusionAmount"],replay:!1},materialInclusionScale:{path:["ice","inclusionScale"],replay:!1},materialBaseColor:{path:["ice","baseColor"],replay:!1},materialInteriorFrost:{path:["erosion","interiorFrost"],replay:!1},materialGrainAmount:{path:["erosion","edgeBump"],replay:!1},materialGrainScale:{path:["erosion","edgeBumpScale"],replay:!1},ior:{path:["ice","ior"],replay:!1},dispersion:{path:["ice","dispersion"],replay:!1},thicknessScale:{path:["ice","thicknessScale"],replay:!1},attenuationDistance:{path:["ice","attenuationDistance"],replay:!1},attenuationColor:{path:["ice","attenuationColor"],replay:!1},baseRoughness:{path:["ice","baseRoughness"],replay:!1},crumbleGlow:{path:["ice","crumbleGlow"],replay:!1},edgeWhiteness:{path:["ice","edgeWhiteness"],replay:!1},clearcoat:{path:["ice","clearcoat"],replay:!1},clearcoatRoughness:{path:["ice","clearcoatRoughness"],replay:!1},envIntensity:{path:["ice","envIntensity"],replay:!1},specularIntensity:{path:["ice","specularIntensity"],replay:!1},interiorScatter:{path:["ice","interiorScatter"],replay:!1},frostScale:{path:["ice","frost","scale"],replay:!1},frostThreshold:{path:["ice","frost","threshold"],replay:!1},frostSoftness:{path:["ice","frost","softness"],replay:!1},frostRoughness:{path:["ice","frost","roughness"],replay:!1},frostDiffuse:{path:["ice","frost","diffuse"],replay:!1},crystalBump:{path:["ice","frost","crystalBump"],replay:!1},crystalScale:{path:["ice","frost","crystalScale"],replay:!1},crackLargeScale:{path:["ice","cracks","largeScale"],replay:!1},crackWarp:{path:["ice","cracks","warp"],replay:!1},crackWarpScale:{path:["ice","cracks","warpScale"],replay:!1},crackCoverage:{path:["ice","cracks","coverage"],replay:!1},crackRegionScale:{path:["ice","cracks","regionScale"],replay:!1},crackRegionCoverage:{path:["ice","cracks","regionCoverage"],replay:!1},veinScale:{path:["ice","cracks","veinScale"],replay:!1},veinContrast:{path:["ice","cracks","veinContrast"],replay:!1},crackWidth:{path:["ice","cracks","width"],replay:!1},crackBrightness:{path:["ice","cracks","brightness"],replay:!1},crackDarkness:{path:["ice","cracks","darkness"],replay:!1},crackRefraction:{path:["ice","cracks","refraction"],replay:!1},crackSurfaceStrength:{path:["ice","cracks","surfaceStrength"],replay:!1},fineScale:{path:["ice","cracks","fineScale"],replay:!1},fineAmount:{path:["ice","cracks","fineAmount"],replay:!1},fineCoverage:{path:["ice","cracks","fineCoverage"],replay:!1},smudgeAmount:{path:["ice","smudges","amount"],replay:!1},smudgeCoverage:{path:["ice","smudges","coverage"],replay:!1},smudgeMaskScale:{path:["ice","smudges","maskScale"],replay:!1},smudgeAnisotropy:{path:["ice","smudges","anisotropy"],replay:!1},smudgeRoughness:{path:["ice","smudges","roughness"],replay:!1},smudgeWhiteness:{path:["ice","smudges","whiteness"],replay:!1},smudgeScale:{path:["ice","smudges","scale"],replay:!1},microBump:{path:["ice","bumps","microBump"],replay:!1},microScale:{path:["ice","bumps","microScale"],replay:!1},microCoverage:{path:["ice","bumps","microCoverage"],replay:!1},rippleBump:{path:["ice","bumps","rippleBump"],replay:!1},rippleScale:{path:["ice","bumps","rippleScale"],replay:!1},bumpMaskScale:{path:["ice","bumps","maskScale"],replay:!1},baseTone:{path:["powder","baseTone"],replay:!1},fragTranslucency:{path:["powder","fragments","translucency"],replay:!1},fragThroughTint:{path:["powder","fragments","throughTint"],replay:!1},fragFresnelPower:{path:["powder","fragments","fresnelPower"],replay:!1},fragRoughness:{path:["powder","fragments","roughness"],replay:!1},fragClearcoat:{path:["powder","fragments","clearcoat"],replay:!1},fragSpecular:{path:["powder","fragments","specular"],replay:!1},sparkle:{path:["powder","fragments","sparkle"],replay:!1},sparkleFraction:{path:["powder","fragments","sparkleFraction"],replay:!1},spriteTilt:{path:["powder","sprites","tilt"],replay:!1},spriteNormal:{path:["powder","sprites","normalStrength"],replay:!1},spriteFrost:{path:["powder","sprites","frostFromAtlas"],replay:!1},spriteFrostBoost:{path:["powder","sprites","frostBoost"],replay:!1},spriteFrostRoughness:{path:["powder","sprites","frostRoughness"],replay:!1},spriteEdgeLight:{path:["powder","sprites","edgeLight"],replay:!1},spriteAlphaCut:{path:["powder","sprites","alphaCut"],replay:!1},spriteSeeThrough:{path:["powder","sprites","seeThrough"],replay:!1},bloomThreshold:{path:["post","bloom","threshold"],replay:!1},bloomIntensity:{path:["post","bloom","intensity"],replay:!1},bloomRadius:{path:["post","bloom","radius"],replay:!1},monochrome:{path:["post","monochrome"],replay:!1},tonemap:{path:["post","tonemap"],replay:!1},exposure:{path:["post","exposure"],replay:!1},contrast:{path:["post","contrast"],replay:!1},blackLift:{path:["post","blackLift"],replay:!1},vignetteStrength:{path:["post","vignette","strength"],replay:!1},vignetteSoftness:{path:["post","vignette","softness"],replay:!1},vignetteRadius:{path:["post","vignette","radius"],replay:!1},grainStrength:{path:["post","grain","strength"],replay:!1},cutThreshold:{path:["erosion","cutThreshold"],replay:!1},cutSoftness:{path:["erosion","cutSoftness"],replay:!1},edgeWidth:{path:["erosion","edgeWidth"],replay:!1},edgeInset:{path:["erosion","edgeInset"],replay:!1},brushSoftness:{path:["erosion","brushSoftness"],replay:!0},brushNoise:{path:["erosion","brushNoise"],replay:!0},crumbleRate:{path:["erosion","crumbleRate"],replay:!0},crumbleCrackBias:{path:["erosion","crumbleCrackBias"],replay:!0},crumbleDuration:{path:["erosion","crumbleDuration"],replay:!0},ejectSpeed:{path:["powder","ejectSpeed"],replay:!0},ejectSpread:{path:["powder","ejectSpread"],replay:!0},ejectTurbulence:{path:["powder","ejectTurbulence"],replay:!0},drag:{path:["powder","drag"],replay:!0},gravity:{path:["powder","gravity"],replay:!0},turbulence:{path:["powder","turbulence"],replay:!0},settleTime:{path:["powder","settleTime"],replay:!0},maxSpeed:{path:["powder","maxSpeed"],replay:!0},minPixelSize:{path:["powder","minPixelSize"],replay:!1},grainSizeMultiplier:{path:["powder","grainSizeMultiplier"],replay:!1},spriteSize:{path:["powder","sprites","sizeScale"],replay:!1},returnSpring:{path:["healing","returnSpring"],replay:!0},returnDamping:{path:["healing","returnDamping"],replay:!0},returnRamp:{path:["healing","returnRamp"],replay:!0},returnMaxSpeed:{path:["healing","returnMaxSpeed"],replay:!0},healRate:{path:["healing","healRate"],replay:!0},cellRestore:{path:["healing","cellRestore"],replay:!0},landedFade:{path:["healing","landedFade"],replay:!0},refrostTime:{path:["healing","refrostTime"],replay:!0}},q2=Object.freeze(Object.fromEntries(Object.entries(Gx).filter(([e,t])=>e.startsWith("material")||["ice","lighting","post"].includes(t.path[0])||["baseTone","wrap","sparkle","sparkleFraction"].includes(e)||e.startsWith("frag")||e.startsWith("sprite")).map(([e])=>[e,Io[e]]))),gf=[-1,.3,0],yf=[1,-.3,0];function Fk(e){return JSON.stringify([e.headlines,{...e.text,meshDetail:f2(e.text.meshDetail)},Nx(e.deformation),e.quality,e.upscaler,e.renderScale,e.shapeResolution??"256",e.erosionResolution,e.particleCount,e.logoUrl,g2(e.logoMeshDetail),e.shards.strayDust,Number(e.tune.spriteSeeThrough??q2.spriteSeeThrough)>0])}function m0e(e){e={...e,logoMeshDetail:g2(e.logoMeshDetail),text:{...e.text,meshDetail:f2(e.text.meshDetail)}};let t=null,r=null,i=!1,s=-1,a=-1,n=0,o=null,l=0,u=null,h=U=>{th.stages.push([U,performance.now()-th.start]),e.onProgress?.(U)},d=e.schedule,c=e.pose,m=e.shards,g=c2(e.cameraTrack),y=()=>e.cameraMode==="authored"&&g.keys.length>0,b=()=>y()&&g.objectMotion==="stationary";function v(){t&&(t.onCameraTransform=y()?U=>{t&&vce(t.camera,g,U,t.objectGroup.matrixWorld,t.rig.lookAt)}:null,y()||(t.camera.zoom=1,t.camera.updateProjectionMatrix()))}let S=Fk(e),T=[],w=[],N=[],C=null,R=-1,E=null,P=(U,J)=>{let q=le;for(let se=0;se{if(await new Promise(Fe=>setTimeout(Fe,250)),i)return;let U=navigator;if(!U.gpu)throw new Error("Frost: navigator.gpu is unavailable (WebGPU required)");if(!await U.gpu.requestAdapter().catch(()=>null))throw new Error("Frost: no WebGPU adapter");h("webgpu adapter"),O();let J=new qX({canvas:e.canvas,antialias:!1,forceWebGL:!1,powerPreference:"high-performance",trackTimestamp:!1});if(await J.init(),J.backend?.isWebGLBackend)throw new Error("Frost: WebGPU backend unavailable, WebGL fallback is not supported");J.toneMapping=eo,J.outputColorSpace=ds,J.shadowMap.enabled=le.lighting.shadow.intensity>0,J.shadowMap.type=Lh,J.setPixelRatio(1),J.setSize(e.width,e.height,!1),r=J,h("renderer");let q=new bg,se=new gs(30,e.width/e.height,.5,80);se.position.set(0,1.2,13.5);let pe=le.shape.logo,Te=le.powder,we={"100k":1e5,"250k":25e4,"500k":5e5,"1M":1e6}[Te.particleCount]??1e5,ie=Nx(e.deformation),V=!!e.rig&&!e.rig.sequence,Oe=JSON.stringify([o0e,V,ie,e.headlines,e.text,e.logoUrl,e.logoMeshDetail,pe,we,Te.nearSurfaceFraction,Te.nearSurfaceDepth,le.shape.seed,le.shape.size]),tt=await new tb().loadAsync(a2("textures/bluenoise64.png")).then(Fe=>(Fe.wrapS=Fe.wrapT=to,Fe.minFilter=Fe.magFilter=or,Fe.generateMipmaps=!1,Fe.colorSpace=Fa,Fe)),Je=await new tb().loadAsync("https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/frost-sequence-camera-orbit/textures/ice-inclusions-generated.png").then(Fe=>(Fe.wrapS=Fe.wrapT=Qo,Fe.minFilter=Ia,Fe.magFilter=lr,Fe.generateMipmaps=!0,Fe.colorSpace=Fa,Fe)),ct=0,_e=new URLSearchParams(location.search).has("fresh")?null:await l0e(Oe).catch(()=>null);if(_e&&_e.geometries.length===(V?1:3)&&_e.sdfs.length===(V?1:3)&&_e.rests.length===(V?0:2)){for(let Fe of _e.geometries)T.push(d0e(Fe));for(let Fe of _e.sdfs)w.push(F1(Fe.data,Fe.res,Fe.bound,Fe.thickness,Fe.sampleBound));ct=_e.sdfs[0].bound,h("shapes (cached)")}else{let Fe=e.fontUrl.replace(/Geist-[A-Za-z]+\.ttf$/,`Geist-${e.text.weight===400?"Regular":e.text.weight===600?"SemiBold":"Bold"}.ttf`),[it,Rt]=await Promise.all([Qae(e.logoUrl,pe),V?Promise.resolve(null):r0e(Fe)]);if(i)return;if(!it.length)throw new Error("Frost: the logo SVG produced no shapes");h("assets"),T.push(G5(it,pe,pe.width));let Ft={...pe,depth:e.text.depth,bevelThickness:e.text.bevel,bevelSize:e.text.bevel*.8,bevelOffset:0,cornerRadius:e.text.corner,curveSegments:10,bevelSegments:4};for(let Ze of V?[]:e.headlines){let ht=Ze.map(Gi=>Gi.trim()).filter(Boolean);ht.length||ht.push(" ");let Yt=Math.max(.001,...ht.map(Gi=>i0e(Rt,Gi,e.text.letterSpacing))),Tr=e.text.width/Yt;T.push(G5(s0e(Rt,ht,Tr,e.text.lineHeight,e.text.letterSpacing),Ft,Tr))}for(let Ze=0;ZesetTimeout(Yt,0)),i)return;T[Ze]=Bce(ht,ie,pe.creaseAngle,Ze===0?void 0:e.text.meshDetail,Ze===0?e.logoMeshDetail:void 0),Ze>0&&h(`text mesh ${Ze}/2 \xB7 ${T[Ze].getAttribute("position").count/3} triangles`),await new Promise(Yt=>setTimeout(Yt,0)),T[Ze]!==ht&&ht.dispose()}for(let Ze of T){let ht=Fm(Ze);ct=Math.max(ct,ht.x,ht.y,ht.z)}ct*=1.15;for(let Ze of T){let ht=Fm(Ze),Yt=Math.max(ht.x,ht.y,ht.z)*1.15;w.push(qa.gpu?await nne(J,Ze,ct,pe.sdfRes,Yt):Kae(Ze,ct,pe.sdfRes,Yt)),await new Promise(Tr=>setTimeout(Tr,0))}if(i)return;h("shapes")}C=F1(w[0].data.slice(),w[0].res,ct,w[0].thickness,w[0].sampleDomain.value),hx.extraShell=2*ct/pe.sdfRes*2;let nt=le.shape.size,dt=T.slice();for(let Fe=0;Fe{if(!t)return;if(E){E.pose(Fe);return}let it=Sce(Fe,d,c,R,b());t.motionGroup.quaternion.copy(it.rotation),t.motionGroup.position.copy(it.position),t.objectGroup.quaternion.copy(it.facing)},R=0,v();let ft=t.powder;if(N.push(ft.restInit.slice()),_e&&_e.rests.length===2)for(let Fe of _e.rests){let it=ft.restInit.slice();it.set(Fe.subarray(0,ft.count*4)),N.push(it)}else{for(let Fe=1;FesetTimeout(ht,0))}new URLSearchParams(location.search).has("fresh")||u0e(Oe,{geometries:dt.map(h0e),sdfs:w.map(Fe=>({data:Fe.data,res:Fe.res,bound:Fe.bound,thickness:Fe.thickness,sampleBound:Fe.sampleDomain.value})),rests:N.slice(1).map(Fe=>Fe.slice(0,ft.count*4))}).catch(()=>{})}e.rig&&(E=new Tse(t,{...e.rig,retarget:Fe=>ge(Fe,!0)})),window.__fb={world:t,renderer:J,D:le,sim:pt,clock:ta},h("world")})(),H=p2(d,c);function ue(){H=p2(d,c)}let ne=U=>{let J=H(U);return new si().setFromEuler(new cn(Bt.degToRad(J.pitch),Bt.degToRad(J.yaw),0,"YXZ"))},re=new si;function ce(U){if(U===0||b())return new si;let J=U===1?d.form1+2.8:d.form2+2.8;return ne(J).invert()}function ge(U,J){if(!t||!r||!C)return;let q=w[U];U!==R&&(C.data.set(q.data),C.sampleDomain.value=q.sampleDomain.value,C.sampleBoundNode&&(C.sampleBoundNode.value=q.sampleDomain.value),C.texture.needsUpdate=!0,C.thickness=q.thickness,t.shape=cw("logo",le.shape.size,le.shape.tubeRatio,C),t.mesh.geometry=T[U],R=U),re.copy(e.rig?new si:ce(U)),t.objectGroup.quaternion.copy(re),t.motionGroup.updateMatrixWorld(!0),t.powder.syncModel(),t.erosion.rebake(r,J),t.powder.retarget(r,N[U])}function ye(U=!1){if(!t||!r)return;L(),t.erosion.u.reconstruct.value=0,le.powder.repelFromObject=!0;let J=U?m.finalEjectBoost:1;le.powder.ejectSpeed=Number(e.tune.ejectSpeed)*J,le.powder.maxSpeed=Number(e.tune.maxSpeed)*J,le.powder.minEjectSpeed=.66*J,le.version++,t.powder.restoreThresholds(r),t.interaction.sweep({from:gf,to:yf,duration:.7,radius:m.sliceRadius,strength:m.sliceStrength})}function oe(){if(!t)return;let U=t.shape.bound,J=yf[0]-gf[0],q=yf[1]-gf[1],se=Math.hypot(J,q),pe=-q/se,Te=J/se,we=Math.max(.15,m.shatterRadius*1.7)/U,ie=Math.max(1,Math.ceil(1.25/we)),V=m.breakDuration/(ie*2),Oe=0;for(let tt=1;tt<=ie;tt++)for(let Je of[1,-1]){let ct=Je*tt*we;t.interaction.sweep({from:[gf[0]+pe*ct,gf[1]+Te*ct,0],to:[yf[0]+pe*ct,yf[1]+Te*ct,0],duration:.5,delay:Oe*V,radius:m.shatterRadius,strength:m.shatterStrength}),Oe++}}function Ae(){!t||!r||(r.compute(t.erosion.fillNode),le.powder.repelFromObject=!1,le.version++)}function Ie(U){t&&(t.powder.u.assemblyEnd.value=(U===1?d.break1:d.break2)-.65,ge(U,!0),pt.lastStrokeT=ta.t,X())}function Xe(){t&&(L(),t.mesh.visible=!1,le.healing.resetFade=QF*1e3,pt.resetRequestedAt=ta.t)}function at(){t&&(a=-1,le.powder.repelFromObject=!0,t.resetSim(),t.interaction.clearScripted(),re.identity(),ge(0,!1),e.rig?.sequence&&r&&t.powder.reset(r),L(),le.healing.resetFade=50,Ui.inside=!1,Ui.x=0,Ui.y=0,Ui.lastMoveT=0,Ui.moved=!1,E?.reset(),s=0)}function W(U,J){if(!t)return;let q=U*Ah;if(E){s2(U),t.frame(q,Ah,J);return}ta.t=q;let se=pe=>Math.round(pe/Ah)===U;for(let pe of[d.logoBreak,d.break1,d.break2])se(pe)&&ye(pe===d.break2),se(pe+.3)&&oe(),se(pe+.3+m.breakDuration+.5)&&Ae();se(d.form1)&&Ie(1),se(d.form2)&&Ie(2),se(d.fadeOut)&&Xe(),s2(U),t.frame(q,Ah,J)}async function j(){let U=-1,J=0;for(;!i&&t&&r;){let q=l;(s<0||q60?q-Ik:q,U=q);let se=Math.min(q,s+8);if(q===s&&a!==q){s2(q);let Te=e.rig&&q===0&&a<0?Ik:1;for(let we=0;weJ;W(s,Te),Te&&(a=s)}let pe=r.backend?.device?.queue;if(pe?.onSubmittedWorkDone&&await pe.onSubmittedWorkDone(),i||s===l&&a===l)return;await new Promise(Te=>setTimeout(Te,0))}}function G(U){i||(n=Number.isFinite(U)?Math.max(0,Math.min(e.rig?.duration??y2(d),U)):0,l=Math.round(n/Ah),!(!t||!r||o)&&(u=null,o=Promise.resolve().then(j).catch(J=>{u=J,console.error("Frost seek failed",J)}).finally(()=>{o=null})))}function ae(){a=-1,G(n)}function be(U,J){if(J!==S)return"rebuild";let q=!1,se=(Te,we)=>JSON.stringify(Te)===JSON.stringify(we);(!se(U.schedule,d)||!se(U.pose,c))&&(q=!0);let pe=b();g=c2(U.cameraTrack),e.cameraTrack=g,e.cameraMode=U.cameraMode,pe!==b()&&(q=!0),v(),se(U.shards,m)||(q=!0);for(let[Te,we]of Object.entries(U.tune))if(e.tune[Te]!==we){let ie=Gx[Te];ie&&(P(ie.path,we),ie.replay&&(q=!0))}return e.schedule=d=U.schedule,e.pose=c=U.pose,e.shards=m=U.shards,e.tune={...U.tune},le.powder.amount=m.amount,le.powder.inheritTime=m.followObject*1e3,le.version++,ue(),t&&(q?(s=-1,a=-1,G(n)):ae()),"live"}async function Be(){for(await z;o;)await o;if(u)throw u}function $(){i=!0,t?.dispose(),t=null,E?.dispose();for(let U of w)U.texture.dispose();C?.texture.dispose(),C=null;for(let U of T)U.dispose();r&&(r.dispose(),r=null),Ht.enabled=!1,Ht.shape=null,Ht.cameraOverride=null,delete window.__fb}return{ready:z,renderAt:G,redraw:ae,invalidate:()=>{s=-1,a=-1},waitForGpu:Be,poseAt:U=>H(U),applyOptions:be,structuralKey:S,get world(){return t},get shape(){return R},dispose:$}}return xD(gM)})(); +${t}`}},hh=koe;function Pw(e,t=0){let r=3735928559^t,i=1103547991^t;if(Array.isArray(e))for(let s=0,a;s>>16,2246822507),r^=Math.imul(i^i>>>13,3266489909),i=Math.imul(i^i>>>16,2246822507),i^=Math.imul(r^r>>>13,3266489909),4294967296*(2097151&i)+(r>>>0)}var Doe=e=>Pw(e),Ooe=e=>Pw(e),Uoe=(...e)=>Pw(e);function Bw(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?"node":t==="number"?"float":t==="boolean"?"bool":t==="string"?"string":t==="function"?"shader":e.isVector2===!0?"vec2":e.isVector3===!0?"vec3":e.isVector4===!0?"vec4":e.isMatrix2===!0?"mat2":e.isMatrix3===!0?"mat3":e.isMatrix4===!0?"mat4":e.isColor===!0?"color":e instanceof ArrayBuffer?"ArrayBuffer":null}function CI(e,...t){let r=e?e.slice(-4):void 0;return t.length===1&&(r==="vec2"?t=[t[0],t[0]]:r==="vec3"?t=[t[0],t[0],t[0]]:r==="vec4"&&(t=[t[0],t[0],t[0],t[0]])),e==="color"?new Rw(...t):r==="vec2"?new Boe(...t):r==="vec3"?new Zl(...t):r==="vec4"?new Ioe(...t):r==="mat2"?new Coe(...t):r==="mat3"?new X1(...t):r==="mat4"?new AI(...t):e==="bool"?t[0]||!1:e==="float"||e==="int"||e==="uint"?t[0]||0:e==="string"?t[0]||"":e==="ArrayBuffer"?Voe(t[0]):null}function zoe(e){let t="",r=new Uint8Array(e);for(let i=0;it.charCodeAt(0)).buffer}var Goe=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let r=this._listeners;r[e]===void 0&&(r[e]=[]),r[e].indexOf(t)===-1&&r[e].push(t)}hasEventListener(e,t){let r=this._listeners;return r===void 0?!1:r[e]!==void 0&&r[e].indexOf(t)!==-1}removeEventListener(e,t){let r=this._listeners;if(r===void 0)return;let i=r[e];if(i!==void 0){let s=i.indexOf(t);s!==-1&&i.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let r=t[e.type];if(r!==void 0){e.target=this;let i=r.slice(0);for(let s=0,a=i.length;s0&&(t.inputNodes=i)}deserialize(t){if(t.inputNodes!==void 0){let r=t.meta.nodes;for(let i in t.inputNodes)if(Array.isArray(t.inputNodes[i])){let s=[];for(let a of t.inputNodes[i])s.push(r[a]);this[i]=s}else if(typeof t.inputNodes[i]=="object"){let s={};for(let a in t.inputNodes[i]){let n=t.inputNodes[i][a];s[a]=r[n]}this[i]=s}else{let s=t.inputNodes[i];this[i]=r[s]}}}toJSON(t){let{uuid:r,type:i}=this,s=t===void 0||typeof t=="string";s&&(t={textures:{},images:{},nodes:{}});let a=t.nodes[r];a===void 0&&(a={uuid:r,type:i,meta:t,metadata:{version:4.7,type:"Node",generator:"Node.toJSON"}},s!==!0&&(t.nodes[a.uuid]=a),this.serialize(a),delete a.meta);function n(o){let l=[];for(let u in o){let h=o[u];delete h.metadata,l.push(h)}return l}if(s){let o=n(t.textures),l=n(t.images),u=n(t.nodes);o.length>0&&(a.textures=o),l.length>0&&(a.images=l),u.length>0&&(a.nodes=u)}return a}};RI.captureStackTrace=!1;var Hr=RI,Hoe=class extends Hr{static get type(){return"TempNode"}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){if(e.getBuildStage()==="generate"){let r=e.getVectorType(this.getNodeType(e,t)),i=e.getDataFromNode(this);if(i.propertyName!==void 0)return e.format(i.propertyName,r,t);if(r!=="void"&&t!=="void"&&this.hasDependencies(e)){let s=super.build(e,r),a=e.getVarFromNode(this,null,r),n=e.getPropertyName(a);return e.addLineFlowCode(`${n} = ${s}`,this),i.snippet=s,i.propertyName=n,e.format(i.propertyName,r,t)}}return super.build(e,t)}},Um=Hoe,Xoe=class extends Hr{static get type(){return"ArrayElementNode"}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}generateNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){let t=this.indexNode.getNodeType(e),r=this.node.build(e),i=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:"uint");return`${r}[ ${i} ]`}},EI=Xoe,$oe=class extends Hr{static get type(){return"ConvertNode"}constructor(e,t){super(),this.node=e,this.convertTo=t}generateNodeType(e){let t=this.node.getNodeType(e),r=null;for(let i of this.convertTo.split("|"))(r===null||e.getTypeLength(t)===e.getTypeLength(i))&&(r=i);return r}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){let r=this.node,i=this.getNodeType(e),s=r.build(e,i);return e.format(s,i,t)}},PI=$oe,qoe=class extends Um{static get type(){return"JoinNode"}constructor(e=[],t=null){super(t),this.nodes=e}generateNodeType(e){return this.nodeType!==null?e.getVectorType(this.nodeType):e.getTypeFromLength(this.nodes.reduce((t,r)=>t+e.getTypeLength(r.getNodeType(e)),0))}generate(e,t){let r=this.getNodeType(e),i=e.getTypeLength(r),s=this.nodes,a=e.getComponentType(r),n=[],o=0;for(let u of s){if(o>=i){Uo(`TSL: Length of parameters exceeds maximum length of function '${r}()' type.`,this.stackTrace);break}let h=u.getNodeType(e),d=e.getTypeLength(h),c;if(o+d>i&&(Uo(`TSL: Length of '${r}()' data exceeds maximum length of output type.`,this.stackTrace),d=i-o,h=e.getTypeFromLength(d)),o+=d,c=u.build(e,h),e.getComponentType(h)!==a){let m=e.getTypeFromLength(d,a);c=e.format(c,h,m)}n.push(c)}let l=`${e.getType(r)}( ${n.join(", ")} )`;return e.format(l,r,t)}},Yoe=qoe,Zoe=j1.join(""),Joe=class extends Hr{static get type(){return"SplitNode"}constructor(e,t="x"){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(let t of this.components)e=Math.max(j1.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}generateNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){let r=this.node,i=e.getTypeLength(r.getNodeType(e)),s=null;if(i>1){let a=null;this.getVectorLength()>=i&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let n=r.build(e,a);this.components.length===i&&this.components===Zoe.slice(0,this.components.length)?s=e.format(n,a,t):s=e.format(`${n}.${this.components}`,this.getNodeType(e),t)}else s=r.build(e,t);return s}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},Qoe=Joe,Koe=class extends Um{static get type(){return"SetNode"}constructor(e,t,r){super(),this.sourceNode=e,this.components=t,this.targetNode=r}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:r,targetNode:i}=this,s=this.getNodeType(e),a=e.getComponentType(i.getNodeType(e)),n=e.getTypeFromLength(r.length,a),o=i.build(e,n),l=t.build(e,s),u=e.getTypeLength(s),h=[];for(let d=0;de.replace(/r|s/g,"x").replace(/g|t/g,"y").replace(/b|p/g,"z").replace(/a|q/g,"w"),II=e=>lle(e).split("").sort().join("");Hr.prototype.assign=function(...e){if(this.isStackNode!==!0)return Y1!==null?Y1.assign(this,...e):Uo("TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().",new hh),this;{let t=Iw.get("assign");return this.addToStack(t(...e))}},Hr.prototype.toVarIntent=function(){return this},Hr.prototype.get=function(e){return new ole(this,e)};var zm={};function Z1(e,t,r){zm[e]=zm[t]=zm[r]={get(){this._cache=this._cache||{};let n=this._cache[e];return n===void 0&&(n=new Qoe(this,e),this._cache[e]=n),n},set(n){this[e].assign(zi(n))}};let i=e.toUpperCase(),s=t.toUpperCase(),a=r.toUpperCase();Hr.prototype["set"+i]=Hr.prototype["set"+s]=Hr.prototype["set"+a]=function(n){let o=II(e);return new ele(this,o,zi(n))},Hr.prototype["flip"+i]=Hr.prototype["flip"+s]=Hr.prototype["flip"+a]=function(){let n=II(e);return new rle(this,n)}}var Gn=["x","y","z","w"],Wn=["r","g","b","a"],jn=["s","t","p","q"];for(let e=0;e<4;e++){let t=Gn[e],r=Wn[e],i=jn[e];Z1(t,r,i);for(let s=0;s<4;s++){t=Gn[e]+Gn[s],r=Wn[e]+Wn[s],i=jn[e]+jn[s],Z1(t,r,i);for(let a=0;a<4;a++){t=Gn[e]+Gn[s]+Gn[a],r=Wn[e]+Wn[s]+Wn[a],i=jn[e]+jn[s]+jn[a],Z1(t,r,i);for(let n=0;n<4;n++)t=Gn[e]+Gn[s]+Gn[a]+Gn[n],r=Wn[e]+Wn[s]+Wn[a]+Wn[n],i=jn[e]+jn[s]+jn[a]+jn[n],Z1(t,r,i)}}}for(let e=0;e<32;e++)zm[e]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new EI(this,new Vn(e,"uint")),this._cache[e]=t),t},set(t){this[e].assign(zi(t))}};Object.defineProperties(Hr.prototype,zm);var ule=function(e,t=null){let r=Bw(e);return r==="node"?e:t===null&&(r==="float"||r==="boolean")||r&&r!=="shader"&&r!=="string"?zi(Dw(e,t)):r==="shader"?e.isFn?e:dh(e):e},hle=function(e,t=null){for(let r in e)e[r]=zi(e[r],t);return e},dle=function(e,t=null){let r=e.length;for(let i=0;il?(Uo(`TSL: "${d}" parameter length exceeds limit.`,new hh),h.slice(0,l)):h}return t===null?a=(...h)=>s(new e(...Ow(u(h)))):r!==null?(r=zi(r),a=(...h)=>s(new e(t,...Ow(u(h)),r))):a=(...h)=>s(new e(t,...Ow(u(h)))),a.setParameterLength=(...h)=>(h.length===1?o=l=h[0]:h.length===2&&([o,l]=h),a),a.setName=h=>(n=h,a),a},cle=class extends Hr{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}generateNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getElementType(e){return this.getOutputNode(e).getElementType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){let{shaderNode:t,rawInputs:r}=this,i=e.getNodeProperties(t),s=e.getClosestSubBuild(t.subBuilds)||"",a=s||"default";if(i[a])return i[a];let n=e.subBuildFn,o=e.fnCall;e.subBuildFn=s,e.fnCall=this;let l=null;if(t.layout){if(r){let d=t.layout.inputs;if(LI(r)){let c=r;for(let m=0;m{let v;return Symbol.iterator===y?v=function*(){yield void 0}:v=Reflect.get(g,y,b),v}}),h=r?mle(r):null,d=Array.isArray(r)?r.length>0:r!==null,c=t.jsFunc,m=d||c.length>1?c(h,u):c(u);l=zi(m)}return e.subBuildFn=n,e.fnCall=o,t.once&&(i[a]=l),l}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let t=e.getNodeProperties(this),r=e.getSubBuildOutput(this);return t[r]=t[r]||this.setupOutput(e),t[r].subBuild=e.getClosestSubBuild(this),t[r]}build(e,t=null){let r=null,i=e.getBuildStage(),s=e.getNodeProperties(this),a=e.getSubBuildOutput(this),n=this.getOutputNode(e),o=e.fnCall;if(e.fnCall=this,i==="setup"){let l=e.getSubBuildProperty("initialized",this);if(s[l]!==!0&&(s[l]=!0,s[a]=this.getOutputNode(e),s[a].build(e),this.shaderNode.subBuilds))for(let u of e.chaining){let h=e.getDataFromNode(u,"any");h.subBuilds=h.subBuilds||new Set;for(let d of this.shaderNode.subBuilds)h.subBuilds.add(d)}r=s[a]}else i==="analyze"?n.build(e,t):i==="generate"&&(r=n.build(e,t)||"");return e.fnCall=o,r}};function LI(e){return e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype)}function ple(e){let t;return OI(e),LI(e)?t=[...e]:t=e[0],t}function mle(e){let t=0;return OI(e),new Proxy(e,{get:(r,i,s)=>{let a;if(i==="length")return a=e.length,a;if(Symbol.iterator===i)a=function*(){for(let n of e)yield zi(n)};else{if(e.length>0)if(Object.getPrototypeOf(e[0])===Object.prototype){let n=e[0];n[i]===void 0?a=n[t++]:a=Reflect.get(n,i,s)}else e[0]instanceof Hr&&(e[i]===void 0?a=e[t++]:a=Reflect.get(e,i,s));else a=Reflect.get(r,i,s);a=zi(a)}return a}})}var fle=class extends Hr{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}getLayout(){return this.layout}call(e=null){return new cle(this,e)}setup(){return this.call()}},gle=[!1,!0],yle=[0,1,2,3],xle=[-1,-2],kI=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],Fw=new Map;for(let e of gle)Fw.set(e,new Vn(e));var Lw=new Map;for(let e of yle)Lw.set(e,new Vn(e,"uint"));var kw=new Map([...Lw].map(e=>new Vn(e.value,"int")));for(let e of xle)kw.set(e,new Vn(e,"int"));var J1=new Map([...kw].map(e=>new Vn(e.value)));for(let e of kI)J1.set(e,new Vn(e));for(let e of kI)J1.set(-e,new Vn(-e));var Q1={bool:Fw,uint:Lw,ints:kw,float:J1},DI=new Map([...Fw,...J1]),Dw=(e,t)=>DI.has(e)?DI.get(e):e.isNode===!0?e:new Vn(e,t),hi=function(e,t=null){return(...r)=>{for(let s of r)if(s===void 0)return Uo(`TSL: Invalid parameter for the type "${e}".`,new hh),new Vn(0,e);if((r.length===0||!["bool","float","int","uint"].includes(e)&&r.every(s=>{let a=typeof s;return a!=="object"&&a!=="function"}))&&(r=[CI(e,...r)]),r.length===1&&t!==null&&t.has(r[0]))return K1(t.get(r[0]));if(r.length===1){let s=Dw(r[0],e);return s.nodeType===e?K1(s):K1(new PI(s,e))}let i=r.map(s=>Dw(s));return K1(new Yoe(i,e))}};function vle(e,t){return new fle(e,t)}var zi=(e,t=null)=>ule(e,t),K1=(e,t=null)=>zi(e,t).toVarIntent(),OI=(e,t=null)=>new hle(e,t),Ow=(e,t=null)=>new dle(e,t),ble=(e,t=null,r=null,i=null)=>new FI(e,t,r,i),qe=(e,t=null,r=null,i={})=>new FI(e,t,r,{...i,intent:!0}),Tle=0,Sle=class extends Hr{constructor(e,t=null){super();let r=null;t!==null&&(typeof t=="object"?r=t.return:(typeof t=="string"?r=t:Uo("TSL: Invalid layout type.",new hh),t=null)),this.shaderNode=new vle(e,r),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){let t=this.shaderNode.nodeType;if(typeof e.inputs!="object"){let r={name:"fn"+Tle++,type:t,inputs:[]};for(let i in e)i!=="return"&&r.inputs.push({name:i,type:e[i]});e=r}return this.shaderNode.setLayout(e),this}generateNodeType(e){return this.shaderNode.getNodeType(e)||"float"}call(...e){let t=this.shaderNode.call(e);return this.shaderNode.nodeType==="void"&&t.toStack(),t.toVarIntent()}once(e=null){return this.shaderNode.once=!0,this.shaderNode.subBuilds=e,this}generate(e){let t=this.getNodeType(e);return Uo('TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".',this.stackTrace),e.generateConst(t)}};function dh(e,t=null){let r=new Sle(e,t);return new Proxy(()=>{},{apply(i,s,a){return r.call(...a)},get(i,s,a){return Reflect.get(r,s,a)},set(i,s,a,n){return Reflect.set(r,s,a,n)}})}function UI(e){return Y1&&Y1.addToStack(e),e}Re("toStack",UI);var _le=new hi("color"),Vm=new hi("float",Q1.float),Uw=new hi("int",Q1.ints),wle=new hi("uint",Q1.uint),Mle=new hi("bool",Q1.bool),zI=new hi("vec2"),Nle=new hi("ivec2"),Ale=new hi("uvec2"),Cle=new hi("bvec2"),ex=new hi("vec3"),Rle=new hi("ivec3"),Ele=new hi("uvec3"),Ple=new hi("bvec3"),tx=new hi("vec4"),Ble=new hi("ivec4"),Ile=new hi("uvec4"),Fle=new hi("bvec4"),Lle=new hi("mat2"),kle=new hi("mat3"),Dle=new hi("mat4");Re("toColor",_le),Re("toFloat",Vm),Re("toInt",Uw),Re("toUint",wle),Re("toBool",Mle),Re("toVec2",zI),Re("toIVec2",Nle),Re("toUVec2",Ale),Re("toBVec2",Cle),Re("toVec3",ex),Re("toIVec3",Rle),Re("toUVec3",Ele),Re("toBVec3",Ple),Re("toVec4",tx),Re("toIVec4",Ble),Re("toUVec4",Ile),Re("toBVec4",Fle),Re("toMat2",Lle),Re("toMat3",kle),Re("toMat4",Dle);var Ole=ble(EI).setParameterLength(2),Ule=(e,t)=>new PI(zi(e),t);Re("element",Ole),Re("convert",Ule),Re("append",e=>(ns("TSL: .append() has been renamed to .toStack().",new hh),UI(e)));var zle={"==":"equal","!=":"notEqual","<":"lessThan",">":"greaterThan","<=":"lessThanEqual",">=":"greaterThanEqual","%":"mod"},Kr=class cM extends Um{static get type(){return"OperatorNode"}constructor(t,r,i,...s){if(super(),s.length>0){let a=new cM(t,r,i);for(let n=0;n>"||i==="<<")return t.getIntegerType(n);if(i==="&&"||i==="||"||i==="^^")return"bool";if(i==="!"){let l=t.getTypeLength(n);return l>1?`bvec${l}`:"bool"}else if(i==="=="||i==="!="||i==="<"||i===">"||i==="<="||i===">="){let l=Math.max(t.getTypeLength(n),t.getTypeLength(o));return l>1?`bvec${l}`:"bool"}else{if(t.isMatrix(n)){if(o==="float")return n;if(t.isVector(o))return t.getVectorFromMatrix(n);if(t.isMatrix(o))return n}else if(t.isMatrix(o)){if(n==="float")return o;if(t.isVector(n))return t.getVectorFromMatrix(o)}return t.getTypeLength(o)>t.getTypeLength(n)?o:n}}generate(t,r){let i=this.op,{aNode:s,bNode:a}=this,n=this.getNodeType(t,r),o=null,l=null;n!=="void"?(o=s.getNodeType(t),l=a?a.getNodeType(t):null,i==="<"||i===">"||i==="<="||i===">="||i==="=="||i==="!="?t.isVector(o)?l=o:t.isVector(l)?o=l:o!==l&&(o=l="float"):i===">>"||i==="<<"?(o=n,l=t.changeComponentType(l,"uint")):i==="%"?(o=n,l=t.isInteger(o)&&t.isInteger(l)?l:o):t.isMatrix(o)?l==="float"?l="float":t.isVector(l)?l=t.getVectorFromMatrix(o):t.isMatrix(l)||(o=l=n):t.isMatrix(l)?o==="float"?o="float":t.isVector(o)?o=t.getVectorFromMatrix(l):o=l=n:o=l=n):o=l=n;let u=s.build(t,o),h=a?a.build(t,l):null,d=t.getFunctionOperator(i);if(r!=="void"){let c=t.renderer.coordinateSystem===uh;if(i==="=="||i==="!="||i==="<"||i===">"||i==="<="||i===">=")return c?t.isVector(o)?t.format(`${this.getOperatorMethod(t,r)}( ${u}, ${h} )`,n,r):t.format(`( ${u} ${i} ${h} )`,n,r):t.format(`( ${u} ${i} ${h} )`,n,r);if(i==="%")return t.isInteger(l)?t.format(`( ${u} % ${h} )`,n,r):t.format(`${this.getOperatorMethod(t,n)}( ${u}, ${h} )`,n,r);if(i==="!")return c&&t.isVector(o)?t.format(`not( ${u} )`,r):t.format(`( ${i} ${u} )`,o,r);if(i==="~")return t.format(`( ${i} ${u} )`,o,r);if(d)return t.format(`${d}( ${u}, ${h} )`,n,r);if(t.isMatrix(o)&&l==="float")return t.format(`( ${h} ${i} ${u} )`,n,r);if(o==="float"&&t.isMatrix(l))return t.format(`${u} ${i} ${h}`,n,r);{let m=`( ${u} ${i} ${h} )`;return!c&&n==="bool"&&t.isVector(o)&&t.isVector(l)&&(m=`all${m}`),t.format(m,n,r)}}else if(o!=="void")return d?t.format(`${d}( ${u}, ${h} )`,n,r):t.isMatrix(o)&&l==="float"?t.format(`${h} ${i} ${u}`,n,r):t.format(`${u} ${i} ${h}`,n,r)}serialize(t){super.serialize(t),t.op=this.op}deserialize(t){super.deserialize(t),this.op=t.op}},Vle=qe(Kr,"+").setParameterLength(2,1/0).setName("add"),zw=qe(Kr,"-").setParameterLength(2,1/0).setName("sub"),ch=qe(Kr,"*").setParameterLength(2,1/0).setName("mul"),VI=qe(Kr,"/").setParameterLength(2,1/0).setName("div"),GI=qe(Kr,"%").setParameterLength(2).setName("mod"),Gle=qe(Kr,"==").setParameterLength(2).setName("equal"),Wle=qe(Kr,"!=").setParameterLength(2).setName("notEqual"),jle=qe(Kr,"<").setParameterLength(2).setName("lessThan"),Hle=qe(Kr,">").setParameterLength(2).setName("greaterThan"),Xle=qe(Kr,"<=").setParameterLength(2).setName("lessThanEqual"),$le=qe(Kr,">=").setParameterLength(2).setName("greaterThanEqual"),qle=qe(Kr,"&&").setParameterLength(2,1/0).setName("and"),Yle=qe(Kr,"||").setParameterLength(2,1/0).setName("or"),Zle=qe(Kr,"!").setParameterLength(1).setName("not"),Jle=qe(Kr,"^^").setParameterLength(2).setName("xor"),Qle=qe(Kr,"&").setParameterLength(2).setName("bitAnd"),Kle=qe(Kr,"~").setParameterLength(1).setName("bitNot"),eue=qe(Kr,"|").setParameterLength(2).setName("bitOr"),tue=qe(Kr,"^").setParameterLength(2).setName("bitXor"),rue=qe(Kr,"<<").setParameterLength(2).setName("shiftLeft"),iue=qe(Kr,">>").setParameterLength(2).setName("shiftRight"),sue=dh(([e])=>(e.addAssign(1),e)),aue=dh(([e])=>(e.subAssign(1),e)),nue=dh(([e])=>{let t=Uw(e).toConst();return e.addAssign(1),t}),oue=dh(([e])=>{let t=Uw(e).toConst();return e.subAssign(1),t});Re("add",Vle),Re("sub",zw),Re("mul",ch),Re("div",VI),Re("mod",GI),Re("equal",Gle),Re("notEqual",Wle),Re("lessThan",jle),Re("greaterThan",Hle),Re("lessThanEqual",Xle),Re("greaterThanEqual",$le),Re("and",qle),Re("or",Yle),Re("not",Zle),Re("xor",Jle),Re("bitAnd",Qle),Re("bitNot",Kle),Re("bitOr",eue),Re("bitXor",tue),Re("shiftLeft",rue),Re("shiftRight",iue),Re("incrementBefore",sue),Re("decrementBefore",aue),Re("increment",nue),Re("decrement",oue);var de=class _r extends Um{static get type(){return"MathNode"}constructor(t,r,i=null,s=null){if(super(),(t===_r.MAX||t===_r.MIN)&&arguments.length>3){let a=new _r(t,r,i);for(let n=3;nn&&a>o?r:n>o?i:o>a?s:r}generateNodeType(t){let r=this.method;return r===_r.LENGTH||r===_r.DISTANCE||r===_r.DOT?"float":r===_r.CROSS?"vec3":r===_r.ALL||r===_r.ANY?"bool":r===_r.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),"bool"):this.getInputType(t)}setup(t){let{aNode:r,bNode:i,method:s}=this,a=null;if(s===_r.ONE_MINUS)a=zw(1,r);else if(s===_r.RECIPROCAL)a=VI(1,r);else if(s===_r.DIFFERENCE)a=Vw(zw(r,i));else if(s===_r.TRANSFORM_DIRECTION){let n,o;t.isMatrix(r.getNodeType(t))?(n=r,o=i):(n=i,o=r),a=rx(ch(n,tx(ex(o),0)).xyz)}return a!==null?a:super.setup(t)}generate(t,r){if(t.getNodeProperties(this).outputNode)return super.generate(t,r);let i=this.method,s=this.getNodeType(t),a=this.getInputType(t),n=this.aNode,o=this.bNode,l=this.cNode,u=t.renderer.coordinateSystem;if(i===_r.NEGATE)return t.format("( - "+n.build(t,a)+" )",s,r);{let h=[];return i===_r.CROSS?h.push(n.build(t,s),o.build(t,s)):u===uh&&i===_r.STEP?h.push(n.build(t,t.getTypeLength(n.getNodeType(t))===1?"float":a),o.build(t,a)):u===uh&&(i===_r.MIN||i===_r.MAX)?h.push(n.build(t,a),o.build(t,t.getTypeLength(o.getNodeType(t))===1?"float":a)):i===_r.REFRACT?h.push(n.build(t,a),o.build(t,a),l.build(t,"float")):i===_r.MIX?h.push(n.build(t,a),o.build(t,a),l.build(t,t.getTypeLength(l.getNodeType(t))===1?"float":a)):(u===Mw&&i===_r.ATAN&&o!==null&&(i="atan2"),t.shaderStage!=="fragment"&&(i===_r.DFDX||i===_r.DFDY)&&(ns(`TSL: '${i}' is not supported in the ${t.shaderStage} stage.`,this.stackTrace),i="/*"+i+"*/"),h.push(n.build(t,a)),o!==null&&h.push(o.build(t,a)),l!==null&&h.push(l.build(t,a))),t.format(`${t.getMethod(i,s)}( ${h.join(", ")} )`,s,r)}}serialize(t){super.serialize(t),t.method=this.method}deserialize(t){super.deserialize(t),this.method=t.method}};de.ALL="all",de.ANY="any",de.RADIANS="radians",de.DEGREES="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INVERSE_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SIN="sin",de.SINH="sinh",de.COS="cos",de.COSH="cosh",de.TAN="tan",de.TANH="tanh",de.ASIN="asin",de.ASINH="asinh",de.ACOS="acos",de.ACOSH="acosh",de.ATAN="atan",de.ATANH="atanh",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.ONE_MINUS="oneMinus",de.DFDX="dFdx",de.DFDY="dFdy",de.ROUND="round",de.RECIPROCAL="reciprocal",de.TRUNC="trunc",de.FWIDTH="fwidth",de.TRANSPOSE="transpose",de.DETERMINANT="determinant",de.INVERSE="inverse",de.EQUALS="equals",de.MIN="min",de.MAX="max",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DIFFERENCE="difference",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.TRANSFORM_DIRECTION="transformDirection",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var lue=Vm(Math.PI),X0e=Vm(Math.PI*2),$0e=Vm(Math.PI*2),q0e=Vm(Math.PI*.5),uue=qe(de,de.ALL).setParameterLength(1),hue=qe(de,de.ANY).setParameterLength(1),due=qe(de,de.RADIANS).setParameterLength(1),cue=qe(de,de.DEGREES).setParameterLength(1),pue=qe(de,de.EXP).setParameterLength(1),mue=qe(de,de.EXP2).setParameterLength(1),fue=qe(de,de.LOG).setParameterLength(1),gue=qe(de,de.LOG2).setParameterLength(1),yue=qe(de,de.SQRT).setParameterLength(1),xue=qe(de,de.INVERSE_SQRT).setParameterLength(1),vue=qe(de,de.FLOOR).setParameterLength(1),bue=qe(de,de.CEIL).setParameterLength(1),rx=qe(de,de.NORMALIZE).setParameterLength(1),WI=qe(de,de.FRACT).setParameterLength(1),jI=qe(de,de.SIN).setParameterLength(1),Tue=qe(de,de.SINH).setParameterLength(1),Sue=qe(de,de.COS).setParameterLength(1),_ue=qe(de,de.COSH).setParameterLength(1),wue=qe(de,de.TAN).setParameterLength(1),Mue=qe(de,de.TANH).setParameterLength(1),Nue=qe(de,de.ASIN).setParameterLength(1),Aue=qe(de,de.ASINH).setParameterLength(1),Cue=qe(de,de.ACOS).setParameterLength(1),Rue=qe(de,de.ACOSH).setParameterLength(1),Eue=qe(de,de.ATAN).setParameterLength(1,2),Pue=qe(de,de.ATANH).setParameterLength(1),Vw=qe(de,de.ABS).setParameterLength(1),HI=qe(de,de.SIGN).setParameterLength(1),Bue=qe(de,de.LENGTH).setParameterLength(1),Iue=qe(de,de.NEGATE).setParameterLength(1),Fue=qe(de,de.ONE_MINUS).setParameterLength(1),Lue=qe(de,de.DFDX).setParameterLength(1),kue=qe(de,de.DFDY).setParameterLength(1),Due=qe(de,de.ROUND).setParameterLength(1),Oue=qe(de,de.RECIPROCAL).setParameterLength(1),Uue=qe(de,de.TRUNC).setParameterLength(1),zue=qe(de,de.FWIDTH).setParameterLength(1),Vue=qe(de,de.TRANSPOSE).setParameterLength(1),Gue=qe(de,de.DETERMINANT).setParameterLength(1),Wue=qe(de,de.INVERSE).setParameterLength(1),jue=qe(de,de.MIN).setParameterLength(2,1/0),Hue=qe(de,de.MAX).setParameterLength(2,1/0),Xue=qe(de,de.STEP).setParameterLength(2),$ue=qe(de,de.REFLECT).setParameterLength(2),que=qe(de,de.DISTANCE).setParameterLength(2),Yue=qe(de,de.DIFFERENCE).setParameterLength(2),Gw=qe(de,de.DOT).setParameterLength(2),Zue=qe(de,de.CROSS).setParameterLength(2),XI=qe(de,de.POW).setParameterLength(2),Jue=e=>ch(e,e),Que=e=>ch(e,e,e),Kue=e=>ch(e,e,e,e),ehe=qe(de,de.TRANSFORM_DIRECTION).setParameterLength(2),the=(e,t)=>rx(ch(t,tx(ex(e),0)).xyz),rhe=(e,t)=>rx(tx(ex(e),0).mul(t).xyz),ihe=e=>ch(HI(e),XI(Vw(e),1/3)),she=e=>Gw(e,e),$I=qe(de,de.MIX).setParameterLength(3),qI=(e,t=0,r=1)=>new de(de.CLAMP,zi(e),zi(t),zi(r)),ahe=e=>qI(e),nhe=qe(de,de.REFRACT).setParameterLength(3),ohe=qe(de,de.SMOOTHSTEP).setParameterLength(3),lhe=qe(de,de.FACEFORWARD).setParameterLength(3),uhe=dh(([e])=>{let t=43758.5453,r=Gw(e.xy,zI(12.9898,78.233)),i=GI(r,lue);return WI(jI(i).mul(t))}),hhe=(e,t,r)=>$I(t,r,e),dhe=(e,t,r)=>ohe(t,r,e),che=(e,t)=>Xue(t,e);Re("all",uue),Re("any",hue),Re("radians",due),Re("degrees",cue),Re("exp",pue),Re("exp2",mue),Re("log",fue),Re("log2",gue),Re("sqrt",yue),Re("inverseSqrt",xue),Re("floor",vue),Re("ceil",bue),Re("normalize",rx),Re("fract",WI),Re("sin",jI),Re("sinh",Tue),Re("cos",Sue),Re("cosh",_ue),Re("tan",wue),Re("tanh",Mue),Re("asin",Nue),Re("asinh",Aue),Re("acos",Cue),Re("acosh",Rue),Re("atan",Eue),Re("atanh",Pue),Re("abs",Vw),Re("sign",HI),Re("length",Bue),Re("lengthSq",she),Re("negate",Iue),Re("oneMinus",Fue),Re("dFdx",Lue),Re("dFdy",kue),Re("round",Due),Re("reciprocal",Oue),Re("trunc",Uue),Re("fwidth",zue),Re("min",jue),Re("max",Hue),Re("step",che),Re("reflect",$ue),Re("distance",que),Re("dot",Gw),Re("cross",Zue),Re("pow",XI),Re("pow2",Jue),Re("pow3",Que),Re("pow4",Kue),Re("transformDirection",ehe),Re("transformNormalByViewMatrix",the),Re("transformNormalByInverseViewMatrix",rhe),Re("mix",hhe),Re("clamp",qI),Re("refract",nhe),Re("smoothstep",dhe),Re("faceForward",lhe),Re("difference",Yue),Re("saturate",ahe),Re("cbrt",ihe),Re("transpose",Vue),Re("determinant",Gue),Re("inverse",Wue),Re("rand",uhe);var phe=dh(([e])=>{let t=e.pow(.41666).mul(1.055).sub(.055),r=e.mul(12.92),i=e.lessThanEqual(.0031308);return $I(t,r,i)}).setLayout({name:"sRGBTransferOETF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),{rtt:YI,Fn:mhe,pass:fhe,mrt:ghe,output:yhe,velocity:xhe,vec2:ix,vec3:zo,vec4:vhe,float:yc,uniform:Lr,texture:sx,screenUV:ZI,screenCoordinate:ax,screenSize:JI,mix:Ww,luminance:QI,smoothstep:jw,length:bhe,max:KI,clamp:Hw,agxToneMapping:The,acesFilmicToneMapping:She,neutralToneMapping:_he,linearToneMapping:whe,floor:eF,step:Mhe}=Jr;function Nhe(e){let t={exposure:Lr(1),contrast:Lr(1.08),blackLift:Lr(.02),monochrome:Lr(1),vignette:Lr(.2),vignetteSoft:Lr(.7),vignetteRadius:Lr(.85),grain:Lr(.03),grainSize:Lr(1),grainSeed:Lr(new fe),grainShadow:Lr(.8),bgGrain:Lr(0),bgGrainSize:Lr(2),bgGrainSeed:Lr(new fe),dither:Lr(1),focus:Lr(12.4),focusRange:Lr(3),aperture:Lr(.9),bloomStrength:Lr(.15),bloomRadius:Lr(.15),bloomThreshold:Lr(1.2),sceneFade:Lr(1),hazeIntensity:Lr(.22),upscaleSharpness:Lr(.2)},r=new(TB??YX)(e.renderer);r.outputColorTransform=!1;let i={aa:"",tonemap:"",dof:!0,haze:!1,upscaler:"",sharpen:!1},s=null,a=null,n=-1,o=null,l=1,u=-1,h=[];function d(v){i={...v};let S=h,T=[],w=L=>(L&&typeof L.dispose=="function"&&T.push(L),L);s=w(fhe(e.scene,e.camera,{type:Dt,samples:0})),s.setMRT(ghe({output:yhe,velocity:xhe}));let N=s.getTextureNode("output"),C=s.getTextureNode("depth"),R=s.getTextureNode("velocity"),E=s.getViewZNode(),P;a=null,v.upscaler==="taau"?P=a=w(jne(N,C,R,e.camera)):(P=v.aa==="traa"?a=w(Vne(N,C,R,e.camera)):N,v.upscaler==="fsr1"?P=w(Xne(P,yc(2).sub(t.upscaleSharpness.mul(2)),!0)):v.upscaler==="bilinear"&&(P=w(YI(P)))),v.sharpen&&(v.upscaler==="taau"||v.upscaler==="bilinear")&&(P=w(qne(P,yc(2).sub(t.upscaleSharpness.mul(2)),!0))),o=null,e.haze&&v.haze&&(o=w(YI(e.haze(C,E))),o.setResolutionScale(l),P=P.add(o.mul(t.hazeIntensity))),v.dof&&(P=w(Qne(P,E,t.focus,t.focusRange,t.aperture)));let I=w(soe(P,t.bloomStrength,t.bloomRadius,t.bloomThreshold));I.smoothWidth.value=.35,P=P.add(I);let O=mhe(()=>{let L=zo(P).mul(t.sceneFade).toVar(),X=QI(L);L.assign(Ww(L,zo(X),t.monochrome));let z=v.tonemap==="aces"?She(L,t.exposure):v.tonemap==="neutral"?_he(L,t.exposure):v.tonemap==="linear"?whe(L,t.exposure):The(L,t.exposure),H=Hw(zo(z),0,1).toVar(),ue=yc(.18);H.assign(Hw(ue.add(H.sub(ue).mul(t.contrast)),0,1));let ne=H.mul(H).mul(yc(3).sub(H.mul(2)));H.assign(Ww(H,ne,Hw(t.contrast.sub(1).mul(1.5),0,.6))),H.assign(H.mul(t.blackLift.oneMinus()).add(t.blackLift));let re=JI.x.div(JI.y),ce=ix(ZI.x.sub(.5).mul(re),ZI.y.sub(.5)),ge=bhe(ce).div(t.vignetteRadius),ye=jw(yc(1).sub(t.vignetteSoft),1.0001,ge).mul(t.vignette);H.assign(H.mul(ye.oneMinus()));let oe=zo(phe(H)).toVar(),Ae=eF(ax.xy.div(t.grainSize)).div(64).add(t.grainSeed),Ie=sx(e.blueNoise,Ae).r.sub(.5),Xe=sx(e.blueNoise,Ae.add(ix(.37,.61))).r.sub(.5),at=Ie.add(Xe),W=QI(oe),j=Ww(yc(1),jw(1,.05,W),t.grainShadow),G=t.grain.mul(j).mul(jw(0,.08,W).mul(.85).add(.15));oe.addAssign(zo(at.mul(G)));let ae=Mhe(.9999995,C.r),be=eF(ax.xy.div(KI(t.bgGrainSize,1))),Be=Po(zo(be,t.bgGrainSeed.x.mul(97))),$=Po(zo(be.add(ix(17.3,5.1)),t.bgGrainSeed.y.mul(53)));oe.addAssign(zo(Be.add($).sub(1).mul(t.bgGrain).mul(ae)));let U=sx(e.blueNoise,ax.xy.div(64).add(t.grainSeed.yx)).r.sub(.5),J=sx(e.blueNoise,ax.xy.div(64).add(ix(.5,.25)).add(t.grainSeed)).r.sub(.5);return oe.addAssign(zo(U.add(J).mul(t.dither).div(255))),vhe(KI(oe,0),1)})();r.outputNode=O,r.needsUpdate=!0,h=T;for(let L of S)L.dispose()}d({aa:e.initial?.aaMode??"traa",tonemap:e.initial?.tonemap??"agx",dof:e.initial?.dof.enabled??!0,haze:!!e.haze&&(e.initialHaze??!0),upscaler:e.initialPerformance?.nativePostEffects?e.initialPerformance.upscaler:"native",sharpen:!!e.initialPerformance?.nativePostEffects&&!!e.initialPerformance.upscaleSharpness&&(e.initialPerformance.upscaler==="taau"||e.initialPerformance.upscaler==="bilinear")});function c(v,S,T,w,N,C,R){let E=!!e.haze&&N!==0,P=S.nativePostEffects?S.upscaler:"native",I=S.nativePostEffects&&S.upscaleSharpness>0&&(P==="taau"||P==="bilinear");(R!==u||E!==i.haze)&&(u=R,(v.aaMode!==i.aa||v.tonemap!==i.tonemap||v.dof.enabled!==i.dof||E!==i.haze||P!==i.upscaler||I!==i.sharpen)&&d({aa:v.aaMode,tonemap:v.tonemap,dof:v.dof.enabled,haze:E,upscaler:P,sharpen:I}),t.exposure.value=v.exposure,t.contrast.value=v.contrast,t.blackLift.value=v.blackLift,t.monochrome.value=v.monochrome,t.vignette.value=v.vignette.strength,t.vignetteSoft.value=v.vignette.softness,t.vignetteRadius.value=v.vignette.radius,t.grain.value=v.grain.strength,t.grainSize.value=v.grain.size,t.grainShadow.value=v.grain.shadowWeight,t.bgGrain.value=v.grain.backgroundStrength,t.bgGrainSize.value=v.grain.backgroundSize,t.dither.value=v.dither?1:0,t.focusRange.value=v.dof.range,t.aperture.value=v.dof.aperture,t.bloomStrength.value=v.bloom.intensity,t.bloomRadius.value=v.bloom.radius,t.bloomThreshold.value=v.bloom.threshold,t.upscaleSharpness.value=S.upscaleSharpness);let O=v.grain.backgroundSpeed>0?Math.floor(C*24*v.grain.backgroundSpeed):0;t.bgGrainSeed.value.set(O*.7548776662%1+.1,O*.5698402909%1+.1);let L=v.grain.speed>0?Math.floor(C*24*v.grain.speed):0;t.grainSeed.value.set(L*.7548776662%1,L*.5698402909%1),t.focus.value=T+v.dof.focusBias,t.sceneFade.value=w,t.hazeIntensity.value=N}function m(v){v!==l&&(l=v,o&&o.setResolutionScale(v))}function g(v){s&&s.setResolutionScale(v)}function y(v){a&&(a._jitterIndex=(v%31+31)%31,v!==n+1&&a._historyRenderTarget.setSize(1,1)),n=v}function b(){for(let v of h)v.dispose();h=[],r.dispose()}return{post:r,uniforms:t,update:c,setHazeResolution:m,setSceneResolution:g,setFrame:y,dispose:b,get scenePass(){return s}}}var{normalize:Xw,cross:tF,select:Ahe,abs:Che,vec3:rF,texture:Rhe,equirectUV:Ehe,pmremTexture:Phe}=Jr;function $w(e,t,r,i){if(qa.environment)return Phe(e,r,i).rgb.mul(t);let s=Xw(r),a=Xw(tF(s,Ahe(Che(s.y).lessThan(.95),rF(0,1,0),rF(1,0,0)))),n=tF(s,a),o=i.mul(i).mul(.32),l=u=>Rhe(e,Ehe(Xw(u))).level(0).rgb;return l(s).mul(.4).add(l(s.add(a.mul(o))).mul(.15)).add(l(s.sub(a.mul(o))).mul(.15)).add(l(s.add(n.mul(o))).mul(.15)).add(l(s.sub(n.mul(o))).mul(.15)).mul(t)}var{normalize:iF,mat3:Bhe,vec3:Ihe,float:nx,dot:sF,select:Fhe,pow:aF,clamp:Lhe,reflect:khe,refract:Dhe,exp:Ohe,log:Uhe,max:qw}=Jr;function zhe({ray:e,normal:t,environment:r,u:i,f:s,roughness:a,path:n}){let o=Fhe(sF(t,e).greaterThan(0),t.negate(),t),l=qw(i.ior,1.001),u=g=>iF(Bhe(i.model).mul(g)),h=g=>$w(r,i.envStrength,u(g),a),d=aF(l.sub(1).div(l.add(1)),2),c=d.add(nx(1).sub(d).mul(aF(nx(1).sub(Lhe(sF(o,e.negate()),0,1)),5))),m=Ohe(Uhe(qw(i.attColor,Ihe(.001))).mul(n.mul(i.thicknessScale).div(qw(i.attDist,.01))).mul(s.absorption));return{reflected:h(khe(e,o)).mul(c).mul(s.reflections),transmitted:h(iF(Dhe(e,o,nx(1).div(l)))).mul(nx(1).sub(c)).mul(i.backlight).mul(m)}}var{Fn:Hn,vec3:tn,vec4:Gm,float:Ns,uniform:mr,uniformArray:Vhe,instanceIndex:ox,texture3D:xc,textureStore:vc,uvec3:Ghe,ivec3:$t,int:nF,uint:kr,If:Vi,Loop:oF,max:Vo,min:ph,length:Whe,dot:lF,clamp:bc,smoothstep:lx,mix:uF,abs:Y0e,select:Wm,instancedArray:jhe,atomicAdd:hF,atomicMax:dF,atomicStore:jm,atomicLoad:ux}=Jr,Tc=12,hx=class Kx{constructor(t,r,i,s,a,n,o,l){if(this.renderer=t,this.shape=r,this.cellOffset=o,this.flightOffset=l,this.atomics=a,this.healOffset=n,!Number.isInteger(n))throw new Error("ErosionField: healOffset must be an integer");this.res=i,this.bound=r.bound,this.u.seed.value=s;let u=()=>{let h=new d_(i,i,i);return h.type=Dt,h.format=pi,h.minFilter=lr,h.magFilter=lr,h.wrapS=h.wrapT=h.wrapR=Ti,h.generateMipmaps=!1,h};this.tex=u(),this.scratch=u(),this.crackTex=u(),this.cellTex=u(),this.texNode=xc(this.tex),this.buildComputes()}static extraShell=0;res;bound;tex;scratch;crackTex;cellTex;u={reconstruct:mr(0),dt:mr(0),time:mr(0),heal:mr(0),healRate:mr(.6),healGap:mr(.12),fallbackHeal:mr(.04),fallbackOn:mr(0),refrostTime:mr(4),cellRestore:mr(30),growEdges:mr(1),breakup:mr(.7),breakupScale:mr(10),crumbleRate:mr(1.6),crumbleCrackBias:mr(2.5),crumbleUntil:mr(-1),brushNoise:mr(.55),brushNoiseScale:mr(9),brushSoftness:mr(.5),segCount:mr(0),seed:mr(0),crackScale:mr(2.2),crackWarp:mr(.45),crackWarpScale:mr(1.4),crackCoverage:mr(.55),breakScale:mr(3),cellSnap:mr(.85)};segments=Vhe(Array.from({length:Tc*2},()=>new Wt));stepNode;copyNode;cellClearNode;flightClearNode;clearNode;fillNode;healClearNode;bakeNode;statsNode;statsClearNode;statsBuf;statsPending=!1;stats={max:0,over50:0,over90:0,refrost:0};statsReadT=-1;statsIssuedT=-1;baked=!1;skipBake=!1;texNode;lastCrackSig="";settingsVersion=-1;atomics;healOffset;cellOffset;flightOffset;uvw(t){return tn(t).div(this.bound*2).add(.5)}sample(t){return this.texNode.sample(this.uvw(t)).level(0)}sampleCrack(t){return xc(this.crackTex).sample(this.uvw(t)).level(0)}static warpDomain(t,r,i,s){return tn(t).mul(i).add(tn(r).mul(s))}buildComputes(){let t=this.res,r=t*t*t,i=this.bound,s=this.u,a=i*2/t,n=Math.max(a*1.5,Kx.extraShell),o=ox,l=()=>{let g=o.mod(kr(t)),y=o.div(kr(t)).mod(kr(t)),b=o.div(kr(t*t));return Ghe(g,y,b)},u=g=>tn(g).add(.5).div(t).sub(.5).mul(i*2),h=xc(this.tex),d=xc(this.scratch),c=xc(this.crackTex),m=xc(this.cellTex);this.stepNode=Hn(()=>{let g=l(),y=u(g).toVar(),b=this.shape.sdfNode(y).toVar(),v=h.load($t(g)).level(0).toVar(),S=v.r.toVar(),T=v.g.toVar(),w=v.b.toVar(),N=Vo(0,v.a.sub(s.dt.div(.2))).toVar(),C=c.load($t(g)).level(0).w,R=ws(y.mul(s.breakupScale).add(s.seed.mul(1.7).add(11))).mul(.5).add(.5),E=uF(Ns(1),Ns(.15).add(gi(R).mul(1.7)),s.breakup).toVar();Vi(s.time.lessThan(s.crumbleUntil),()=>{let ne=Ns(0).toVar(),re=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let oe of re){let Ae=bc($t(g).add(oe),$t(0),$t(t-1));ne.assign(Vo(ne,h.load(Ae).level(0).r))}let ce=lx(.02,-.02,b),ge=s.crumbleRate.mul(Ns(1).add(C.mul(s.crumbleCrackBias))).mul(ce),ye=ne.mul(.92).sub(.06);Vi(ye.greaterThan(S),()=>{S.assign(ph(ye,S.add(ye.sub(S).mul(gi(ge.mul(s.dt))))))})});let P=m.load($t(g)).level(0).toVar();oF({start:nF(0),end:nF(s.segCount),type:"int",condition:"<"},({i:ne})=>{let re=this.segments.element(ne.mul(2)),ce=this.segments.element(ne.mul(2).add(1)),ge=re.xyz,ye=ce.xyz,oe=re.w,Ae=ce.w,Ie=ye.sub(ge),Xe=$=>{let U=bc(lF($.sub(ge),Ie).div(Vo(lF(Ie,Ie),1e-6)),0,1);return Whe($.sub(ge.add(Ie.mul(U))))},at=ws(y.mul(s.brushNoiseScale).add(s.seed)).mul(.5).add(ws(y.mul(s.brushNoiseScale.mul(2.7)).add(s.seed.add(3.1))).mul(.25)),W=oe.mul(Ns(1).add(at.mul(s.brushNoise))),j=W.mul(Ns(1).sub(s.brushSoftness)),G=lx(W,j,Xe(y)),ae=oe.mul(Ns(1).add(P.w.sub(.5).mul(s.brushNoise).mul(.6))),be=lx(ae,ae.mul(Ns(1).sub(s.brushSoftness)),Xe(P.xyz)),Be=uF(G,be,s.cellSnap);S.assign(ph(1,S.add(Be.mul(Ae).mul(s.dt)))),Vi(Be.greaterThan(.02),()=>{N.assign(1)})});let I=kr(this.healOffset).add(o),O=Ns(ux(this.atomics.element(I))).toVar(),L=kr(bc(P.w.mul(65535),0,65535)),X=ux(this.atomics.element(kr(this.flightOffset).add(L))).equal(kr(0));Vi(O.greaterThan(.5).and(X.or(s.reconstruct.greaterThan(.5))),()=>{jm(this.atomics.element(I),kr(0)),T.assign(ph(1,T.add(S.mul(2.5)))),S.assign(0),w.assign(1)});let z=kr(bc(P.w.mul(65535),0,65535)),H=Ns(ux(this.atomics.element(kr(this.cellOffset).add(z)))),ue=ux(this.atomics.element(kr(this.flightOffset).add(z))).equal(kr(0));Vi(H.greaterThan(.5).and(S.greaterThan(0)),()=>{w.assign(2)}),Vi(w.greaterThan(1.5).and(S.greaterThan(0)).and(ue).and(s.reconstruct.lessThan(.5)),()=>{let ne=Ns(1).toVar();Vi(s.growEdges.greaterThan(.5),()=>{ne.assign(0);let re=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let ce of re){let ge=bc($t(g).add(ce),$t(0),$t(t-1));Vi(h.load(ge).level(0).r.lessThan(.5),()=>{ne.assign(1)})}}),Vi(ne.greaterThan(.5),()=>{let re=S,ce=Vo(0,S.sub(s.cellRestore.mul(E).mul(s.dt)));T.assign(ph(1,T.add(re.sub(ce).mul(2.5)))),S.assign(ce)})}),Vi(s.heal.greaterThan(.5).and(ue.or(s.reconstruct.greaterThan(.5))),()=>{let ne=Ns(8).toVar(),re=Ns(0).toVar(),ce=[$t(1,0,0),$t(-1,0,0),$t(0,1,0),$t(0,-1,0),$t(0,0,1),$t(0,0,-1)];for(let oe of ce){let Ae=bc($t(g).add(oe),$t(0),$t(t-1)),Ie=h.load(Ae).level(0);Vi(Ie.b.greaterThan(.5),()=>{ne.assign(ph(ne,Ie.r)),re.assign(1)})}let ge=s.reconstruct.greaterThan(.5),ye=Wm(ge,Wm(ne.lessThan(.05),Ns(0),Ns(1)),ne.add(s.healGap));Vi(re.greaterThan(.5).and(ye.lessThan(S)),()=>{let oe=Wm(ge,Vo(s.cellRestore.mul(s.fallbackHeal),s.healRate),s.healRate),Ae=Vo(ye,S.sub(oe.mul(E).mul(s.dt)));T.assign(ph(1,T.add(S.sub(Ae).mul(3)))),S.assign(Ae),Vi(Ae.lessThanEqual(ye.add(.001)),()=>{w.assign(1)})}),Vi(s.fallbackOn.greaterThan(.5).and(ge.not()),()=>{let oe=Vo(0,S.sub(s.fallbackHeal.mul(E).mul(s.dt)));T.assign(ph(1,T.add(S.sub(oe).mul(3)))),S.assign(oe)})}),Vi(S.greaterThan(v.r.add(5e-4)),()=>{w.assign(0)}),T.assign(Vo(0,T.sub(s.dt.mul(E).div(Vo(s.refrostTime,.01))))),S.assign(Wm(b.greaterThan(n),0,S)),vc(this.scratch,g,Gm(S,T,w,N)).toWriteOnly()})().compute(r,[64]),this.cellClearNode=Hn(()=>{jm(this.atomics.element(kr(this.cellOffset).add(ox)),kr(0))})().compute(65536,[64]),this.flightClearNode=Hn(()=>{jm(this.atomics.element(kr(this.flightOffset).add(ox)),kr(0))})().compute(65536,[64]),this.copyNode=Hn(()=>{let g=l(),y=d.load($t(g)).level(0);vc(this.tex,g,y).toWriteOnly()})().compute(r,[64]),this.statsBuf=jhe(4,"uint").toAtomic(),this.statsClearNode=Hn(()=>{oF(4,({i:g})=>{jm(this.statsBuf.element(g),kr(0))})})().compute(1,[1]),this.statsNode=Hn(()=>{let g=l(),y=h.load($t(g)).level(0),b=y.r;dF(this.statsBuf.element(0),kr(b.mul(65535))),dF(this.statsBuf.element(3),kr(y.g.mul(65535))),Vi(b.greaterThan(.5),()=>{hF(this.statsBuf.element(1),kr(1))}),Vi(b.greaterThan(.9),()=>{hF(this.statsBuf.element(2),kr(1))})})().compute(r,[64]),this.clearNode=Hn(()=>{let g=l();vc(this.tex,g,Gm(0)).toWriteOnly()})().compute(r,[64]),this.fillNode=Hn(()=>{let g=l(),y=this.shape.sdfNode(u(g));vc(this.tex,g,Gm(Wm(y.greaterThan(n),0,1),0,0,0)).toWriteOnly()})().compute(r,[64]),this.healClearNode=Hn(()=>{jm(this.atomics.element(kr(this.healOffset).add(ox)),kr(0))})().compute(r,[64]),this.bakeNode=Hn(()=>{let g=l(),y=u(g).toVar(),b=y.mul(s.crackWarpScale).add(s.seed.mul(.11)),v=tn(ws(b).mul(.6).add(ws(b.mul(2.1).add(tn(7.3,1.9,4.4))).mul(.4)),ws(b.add(tn(13.7,5.1,9.9))).mul(.6).add(ws(b.mul(2.1).add(tn(2.2,8.8,6.1))).mul(.4)),ws(b.add(tn(3.3,17.1,12.5))).mul(.6).add(ws(b.mul(2.1).add(tn(9.7,4.4,1.1))).mul(.4))),S=Kx.warpDomain(y,v,s.crackScale,s.crackWarp),T=bm(S,s.seed,s.crackCoverage).w.div(s.crackScale),w=lx(a*2.5,0,T),N=Po(tn(g)).mul(.15);vc(this.crackTex,g,Gm(v,gi(w.add(N.mul(w))))).toWriteOnly();let C=Kx.warpDomain(y,v,s.breakScale,s.crackWarp),R=A_(C,s.seed.add(3)),E=R.xyz.sub(v.mul(s.crackWarp)).div(s.breakScale);vc(this.cellTex,g,Gm(E,Po(R.xyz.add(s.seed)))).toWriteOnly()})().compute(r,[64])}clear(t){t.compute(this.clearNode),t.compute(this.cellClearNode),t.compute(this.flightClearNode)}rebake(t,r){let i=this.u,s=le.erosion,a=le.ice.cracks;i.crackScale.value=a.largeScale,i.crackWarp.value=a.warp,i.crackWarpScale.value=a.warpScale,i.crackCoverage.value=a.coverage,i.breakScale.value=s.breakCellScale;let n=`${a.largeScale}|${a.warp}|${a.warpScale}|${a.coverage}|${s.breakCellScale}`;(!this.baked||n!==this.lastCrackSig)&&!this.skipBake&&t.compute(this.bakeNode),this.lastCrackSig=n,this.baked=!0,i.reconstruct.value=r?1:0,t.compute(r?this.fillNode:this.clearNode),t.compute(this.cellClearNode),t.compute(this.flightClearNode),t.compute(this.healClearNode),this.crumbleUntil=-1,i.crumbleUntil.value=-1}readStats(t,r=0){this.statsPending||(this.statsPending=!0,this.statsIssuedT=r,t.compute(this.statsClearNode),t.compute(this.statsNode),t.getArrayBufferAsync(this.statsBuf.value).then(i=>{let s=new Uint32Array(i);this.stats.max=s[0]/65535,this.stats.over50=s[1],this.stats.over90=s[2],this.stats.refrost=s[3]/65535,this.statsReadT=this.statsIssuedT,this.statsPending=!1}).catch(()=>{this.statsPending=!1}))}crumbleUntil=-1;step(t,r,i,s,a,n=!0){let o=le.erosion,l=le.healing,u=this.u;if(u.dt.value=Math.min(i,1/30),u.time.value=r,le.version!==this.settingsVersion){this.settingsVersion=le.version;let d=le.ice.cracks,c=`${d.largeScale}|${d.warp}|${d.warpScale}|${d.coverage}|${o.breakCellScale}`;(!this.baked||c!==this.lastCrackSig)&&(u.crackScale.value=d.largeScale,u.crackWarp.value=d.warp,u.crackWarpScale.value=d.warpScale,u.crackCoverage.value=d.coverage,u.breakScale.value=o.breakCellScale,this.skipBake||t.compute(this.bakeNode),this.baked||t.compute(this.clearNode),this.baked=!0,this.lastCrackSig=c),u.healRate.value=l.healRate,u.healGap.value=l.healGap,u.fallbackHeal.value=l.fallbackHeal,u.refrostTime.value=l.refrostTime,u.cellRestore.value=l.cellRestore,u.growEdges.value=l.growFromEdges?1:0,u.breakup.value=l.breakup,u.breakupScale.value=l.breakupScale,u.crumbleRate.value=o.crumbleRate,u.crumbleCrackBias.value=o.crumbleCrackBias,u.brushNoise.value=o.brushNoise,u.brushNoiseScale.value=o.brushNoiseScale,u.cellSnap.value=o.cellSnap,u.brushSoftness.value=Math.max(o.brushSoftness,.02)}a>0&&(pt.lastStrokeT=r,u.crumbleUntil.value=r+o.crumbleDuration,this.crumbleUntil=r+o.crumbleDuration);let h=r-pt.lastStrokeT>l.healDelay;if(pt.healing=h,u.heal.value=h?1:0,u.fallbackOn.value=r-pt.lastStrokeT>l.healDelay+l.waveTime+l.waveJitter+Math.max(l.returnDuration,l.returnAfter)+1?1:0,u.segCount.value=a,a>0){let d=this.segments.array;for(let c=0;c.5||(t.compute(this.stepNode),t.compute(this.cellClearNode),t.compute(this.copyNode))}commitAssembly(t){t.compute(this.copyNode)}dispose(){this.tex.dispose(),this.scratch.dispose(),this.crackTex.dispose(),this.cellTex.dispose()}},Hm="photographic",{Fn:Hhe,vec2:Xhe,vec3:Xn,vec4:dx,float:Pa,int:Z0e,Loop:cF,If:Yw,Break:pF,normalize:Xm,length:mF,max:Sc,min:$he,abs:fF,dot:cx,pow:Zw,exp:qhe,log:Yhe,mix:J0e,clamp:px,refract:gF,reflect:Jw,select:mx,mat3:yF,texture:Q0e,equirectUV:K0e,cameraViewMatrix:xF,cameraProjectionMatrix:Zhe,cross:Jhe}=Jr;function Qhe(e){let{shape:t,erosion:r,p:i,ray:s,normal:a,environment:n,backdrop:o,u:l,f:u,roughness:h}=e,d=t.bound,c=Math.max(.001,d/1500),m=oe=>Xm(yF(l.model).mul(oe)),g=(oe,Ae)=>$w(n,l.envStrength,oe,Ae),y=oe=>{let Ae=t.voxelSize?t.voxelSize.mul(.75):Pa(d/240),Ie=Xn(t.sdfNode(oe.add(Xn(Ae,0,0))).sub(t.sdfNode(oe.sub(Xn(Ae,0,0)))),t.sdfNode(oe.add(Xn(0,Ae,0))).sub(t.sdfNode(oe.sub(Xn(0,Ae,0)))),t.sdfNode(oe.add(Xn(0,0,Ae))).sub(t.sdfNode(oe.sub(Xn(0,0,Ae)))));return Ie.div(Sc(mF(Ie),1e-5))},b=Sc(l.ior,1.001),v=mx(cx(a,s).greaterThan(0),a.negate(),a),S=Xm(gF(s,v,Pa(1).div(b))),T=Hhe(()=>{let oe=Pa(c*2).toVar(),Ae=Pa(0).toVar();return cF(64,()=>{let Ie=i.add(S.mul(oe)),Xe=t.sdfNode(Ie),at=r.sample(Ie).r;Yw(oe.greaterThan(c*4).and(Xe.greaterThan(0).or(at.greaterThan(l.cutThreshold))),()=>{pF()}),Ae.assign(oe),oe.addAssign(px(fF(Xe).mul(.7),c,d/12)),Yw(oe.greaterThan(d*2),()=>{pF()})}),cF(5,()=>{let Ie=Ae.add(oe).mul(.5),Xe=i.add(S.mul(Ie));Yw(t.sdfNode(Xe).lessThan(0).and(r.sample(Xe).r.lessThan(l.cutThreshold)),()=>{Ae.assign(Ie)}).Else(()=>{oe.assign(Ie)})}),dx(i.add(S.mul(oe)),oe)})(),w=y(T.xyz),N=mx(cx(w,S).lessThan(0),w.negate(),w),C=gF(S,N.negate(),b),R=mF(C).lessThan(1e-4),E=mx(R,Jw(S,N),C),P=l.model.mul(dx(T.xyz,1)).xyz,I=oe=>{let Ae=m(oe),Ie=xF.mul(dx(P,1)).xyz,Xe=yF(xF).mul(Ae),at=Pa(-35).sub(Ie.z).div($he(Xe.z,-.001)),W=Ie.add(Xe.mul(px(at,0,150))),j=Zhe.mul(dx(W,1)),G=Xhe(j.x.div(Sc(j.w,.001)).mul(.5).add(.5),j.y.div(Sc(j.w,.001)).mul(-.5).add(.5));return z1(o,px(G,0,1)).add(g(Ae,h).mul(l.backlight))},O=l.dispersion.mul(u.dispersion).mul(.025),L=Xm(Jhe(S,N).add(Xn(1e-5,0,0))),X=Xn(I(Xm(E.add(L.mul(O)))).r,I(E).g,I(Xm(E.sub(L.mul(O)))).b),z=Zw(b.sub(1).div(b.add(1)),2),H=z.add(Pa(1).sub(z).mul(Zw(Pa(1).sub(px(cx(v,s.negate()),0,1)),5))).mul(u.reflections),ue=mx(R,Pa(1),z.add(Pa(1).sub(z).mul(Zw(Pa(1).sub(fF(cx(N,S))),5)))),ne=T.w.mul(l.thicknessScale),re=qhe(Yhe(Sc(l.attColor,Xn(.001))).mul(ne.div(Sc(l.attDist,.01))).mul(u.absorption)),ce=g(m(Jw(s,v)),h),ge=g(m(Jw(S,N)),h),ye=X.mul(Pa(1).sub(ue)).add(ge.mul(ue)).mul(re);return{reflected:ce.mul(H),transmitted:ye.mul(Pa(1).sub(H)),distance:ne}}var{Fn:Khe,Loop:ede,int:vF,exp:tde,clamp:rde,vec2:$m,vec3:ide,float:fx,texture:Qw,abs:sde,pow:Kw,max:ade,smoothstep:nde}=Jr;function e2(e,t,r,i,s=fx(0)){if(!e)return fx(0);let a=Kw(sde(r),ide(6)),n=a.div(ade(a.x.add(a.y).add(a.z),.001)),o=(l,u)=>$m(l.x.mul(.932).sub(l.y.mul(.362)),l.x.mul(.362).add(l.y.mul(.932))).mul(i).add(u).add($m(s.mul(.217),s.mul(.371)));return Qw(e,o(t.yz,$m(.317,.173))).r.mul(n.x).add(Qw(e,o(t.zx,$m(.619,.431))).r.mul(n.y)).add(Qw(e,o(t.xy,$m(0))).r.mul(n.z))}function ode(e,t,r,i,s){let a=Zy(Bo(e.mul(r).add(t.mul(2)),3).mul(.5).add(.5),i,s),n=Bo(e.mul(r.mul(32)).add(t.mul(3.1)),3).mul(.5).add(.5);return Kw(a,1.5).mul(nde(.3,.69,n))}function bF(e,t,r,i,s,a,n){return Khe(()=>{let o=fx(0).toVar();return ede({start:vF(0),end:vF(3),type:"int",condition:"<"},({i:l})=>{let u=fx(l).add(.5).div(3),h=t.add(i.mul(s).mul(u));o.addAssign(Kw(e2(e,h,r,a,u),1.6).mul(tde(u.mul(-.7))))}),rde(o.div(3).mul(n),0,.45)})()}var{Fn:lde,If:ude,vec3:TF,vec4:SF,float:Ql,dot:hde,smoothstep:_c,normalize:dde,clamp:cde,dFdx:pde,dFdy:mde,length:_F,max:fde}=Jr;function wF(e){let t=Lm(e+11);return[0,1,2].map(()=>{let r=new F(t()*2-1,t()*2-1,t()*2-1).normalize();return TF(r.x,r.y,r.z)})}function MF(e,t,r,i,s,a,n,o=!1){let l=ne=>o?Ql(1).sub(_c(.35,1.25,fde(_F(pde(e.mul(ne))),_F(mde(e.mul(ne)))))):Ql(1),u=ode(e,r,a.frostScale,a.frostThreshold,a.frostSoftness),h=gi(u.add(a.interiorFrost)).mul(n.frost),d=(ne,re)=>ne.sub(re.mul(hde(ne,re)).mul(Ql(1).sub(Ql(1).div(a.smudgeAniso)))),c=SF(ws(d(e.mul(a.smudgeScale),i[0]).add(r.mul(3))),ws(d(e.mul(a.smudgeScale),i[1]).add(r.mul(4))),ws(d(e.mul(a.smudgeScale),i[2]).add(r.mul(5))),ws(e.mul(a.smudgeScale.mul(1.7)).add(r.mul(7)))),m=_c(.45,.85,c.x.mul(.5).add(.5)).add(_c(.45,.85,c.y.mul(.5).add(.5))).add(_c(.45,.85,c.z.mul(.5).add(.5))),g=_c(.6,.72,c.w.mul(.5).add(.5)),y=TF(Bo(e.mul(a.smudgeMaskScale).add(r.mul(21)),2).mul(.5).add(.5),Bo(e.mul(a.bumpMaskScale).add(r.mul(27)),2).mul(.5).add(.5),Bo(e.mul(a.regionScale).add(r.mul(33)),2).mul(.5).add(.5)),b=Zy(y.x,Ql(1).sub(a.smudgeCoverage),.35),v=Zy(y.y,Ql(1).sub(a.microCoverage),.35),S=Zy(y.z,Ql(1).sub(a.regionCoverage),.45),T=gi(m.div(3).add(g.mul(.6)).mul(a.smudgeAmount).mul(b)).mul(n.smudges),w=s.sampleCrack(e),N=hx.warpDomain(e,w.xyz,a.crackLarge,a.crackWarp).add(r.mul(.37)),C=lde(()=>{let ne=SF(0,0,1,1).toVar();return ude(n.cracks.greaterThan(.5),()=>{ne.assign(s.materialPlanes?s.materialPlanes.sample(N):bm(N,a.seed,a.crackCoverage))}),ne})(),R=C.w.div(a.crackLarge),E=Ql(1).sub(a.veinContrast.mul(Bo(e.mul(a.veinScale).add(r.mul(41)),2).mul(.5).add(.5))),P=_c(a.crackWidth.mul(5),0,R).mul(a.surfaceCrack).mul(S).mul(E).mul(n.cracks),I=gi(t.y.mul(.5).add(.5)),O=Na(e.mul(a.crystalScale).add(r)).mul(a.crystalBump).mul(.6).mul(n.crystals).mul(l(a.crystalScale)),L=Na(e.mul(a.edgeBumpScale).add(r.mul(13))).mul(a.edgeBump).mul(.5).mul(n.grain).mul(l(a.edgeBumpScale)),X=Na(e.mul(a.microScale).add(r.mul(5))).mul(a.microBump).mul(v).mul(n.micro).mul(l(a.microScale)),z=Na(e.mul(a.rippleScale).add(r.mul(9))).mul(a.rippleBump).mul(I).mul(n.ripples).mul(l(a.rippleScale)),H=O.add(L).sub(X).sub(z).sub(C.xyz.mul(P).mul(.6)),ue=dde(t.add(H.mul(n.surfaceBumps)));return{frost:h,smudge:T,surfCrack:P,nSurface:ue,regionMask:S,roughness:cde(a.baseRough.add(h.mul(a.frostRough)).add(T.mul(a.smudgeRough)).add(P.mul(.12)),.015,.8)}}var{Fn:Kl,vec3:ei,vec4:$n,float:yi,uniform:je,varying:gde,texture:yde,vec2:gx,positionLocal:xde,normalLocal:NF,cameraPosition:vde,transformNormalToView:AF,normalize:yx,dot:bde,length:wc,max:As,min:xx,abs:CF,pow:eye,exp:Tde,mix:vx,smoothstep:mh,clamp:qm,reflect:tye,select:RF,If:fh,Loop:EF,Break:PF,int:BF,output:t2,screenUV:r2}=Jr,Sde=0,i2=-1;function s2(e){i2=e}function _de({shape:e,erosion:t,seed:r,environment:i,fractureDetail:s,backdrop:a,meshEntry:n,glassMatcap:o,voronoiCells:l="27"}){let u=l==="8"?ase:A_,h=Lm(r+11),d={model:je(new We),envStrength:je(1),backlight:je(.4),inclusionAmount:je(.3),inclusionScale:je(.4),baseColor:je(new gt("#f8f8f8")),ior:je(1.36),dispersion:je(.02),thicknessScale:je(1),attDist:je(.9),attColor:je(new gt("#cfd2d4")),baseRough:je(.05),frostScale:je(1.6),frostThreshold:je(.5),frostSoftness:je(.28),frostRough:je(.65),frostDiffuse:je(.55),crystalBump:je(.12),crystalScale:je(28),crackLarge:je(1.6),crackWarp:je(.45),crackCoverage:je(.55),regionScale:je(.8),regionCoverage:je(.7),veinScale:je(5),veinContrast:je(.7),crackFine:je(5.5),crackFineAmount:je(.45),fineCoverage:je(.35),fineNearLarge:je(.75),crackWidth:je(.004),crackBright:je(.4),crackDark:je(.5),crackRefr:je(.02),surfaceCrack:je(.35),crackSteps:je(14),smudgeAmount:je(.6),smudgeCoverage:je(.55),smudgeMaskScale:je(1.2),smudgeAniso:je(6),smudgeRough:je(.35),smudgeWhite:je(.08),smudgeScale:je(3.2),microBump:je(.25),microScale:je(60),microCoverage:je(.6),rippleBump:je(.3),rippleScale:je(9),bumpMaskScale:je(1.5),clearcoat:je(.3),clearcoatRough:je(.08),specularIntensity:je(1),interiorScatter:je(.25),deformAmp:je(.045),deformFreq:je(1.1),seed:je(r),edgeWidth:je(.35),edgeInset:je(.06),edgeBump:je(.6),edgeBumpScale:je(55),refrostStrength:je(1),cutThreshold:je(.7),cutSoft:je(.04),interiorSteps:je(24),interiorFrost:je(0),crumbleGlow:je(.15),edgeWhite:je(.5),lightDir:je(new F(0,1,0)),modelInv:je(new We),jitter:je(new fe),adaptiveSteps:je(0),powderTone:je(new gt("#dcdcdc")),keyIntensity:je(3.2),keyColor:je(new gt("#ffffff")),hover:je(0)},c=Object.fromEntries(Object.keys(Qd).map(V=>[V,je(Number(Qd[V]))])),m=ei(r*.731,r*.137,r*.529),g=wF(r),y=qa.matcap?new Pd:new mS,b=new F,v=new si,S=-1;y.side=ii,y.transparent=!1,y.metalness=0,y.transmission=1;let T=V=>Bo(V.mul(d.deformFreq).add(m),3).mul(d.deformAmp),w=V=>mh(d.cutThreshold.sub(d.edgeWidth),d.cutThreshold.sub(d.edgeWidth.mul(.15)),V),N=Kl(()=>{let V=xde,Oe=NF,tt=T(V),Je=t.sample(V).r,ct=w(Je),_e=t.sampleCrack(V).w.mul(d.surfaceCrack).mul(c.cracks).mul(c.surfaceBumps).mul(.012);return V.add(Oe.mul(tt.sub(ct.mul(d.edgeInset)).sub(_e)))})();y.positionNode=N;let C=gde(N),R=d.modelInv.mul($n(vde,1)).xyz,E=yx(C.sub(R)),P=d.lightDir,I=n?.position.sample(r2),O=n?.normal.sample(r2).xyz,L=n?n.depth.sample(r2).r.lessThan(.999999).and(t.sample(I.xyz).r.lessThan(d.cutThreshold)):null,X=Kl(()=>{let V=R,Oe=it=>RF(it.greaterThanEqual(0),yi(1),yi(-1)).div(As(CF(it),1e-6)),tt=ei(Oe(E.x),Oe(E.y),Oe(E.z)),Je=ei(-e.bound).sub(V).mul(tt),ct=ei(e.bound).sub(V).mul(tt),_e=xx(Je,ct),nt=As(Je,ct),dt=As(As(_e.x,As(_e.y,_e.z)),0),ft=xx(xx(nt.x,xx(nt.y,nt.z)),wc(C.sub(R))),Fe=$n(C,-1).toVar();return n&&fh(L,()=>{Fe.assign($n(I.xyz,wc(I.xyz.sub(R))))}),fh(ft.greaterThan(dt).and(Fe.w.lessThan(0)),()=>{let it=yi(2*t.bound/t.res),Rt=e.voxelSize??it,Ft=Rt.mul(.4),Ze=dt.toVar();EF(192,()=>{fh(Ze.greaterThan(ft),()=>{PF()});let ht=V.add(E.mul(Ze)),Yt=e.sdfNode(ht);fh(Yt.lessThanEqual(.001).and(t.sample(ht).r.lessThan(d.cutThreshold)),()=>{Fe.assign($n(ht,Ze)),PF()}),Ze.addAssign(As(Yt.sub(Ft).mul(.7),Rt.mul(.35)))}),fh(Fe.w.lessThan(0).and(t.sample(C).r.lessThan(d.cutThreshold)),()=>{Fe.assign($n(C,ft))})}),Fe})(),z=X.w,H=X.xyz,ue=.02,ne=ei(t.sample(H.add(ei(ue,0,0))).r.sub(t.sample(H.sub(ei(ue,0,0))).r),t.sample(H.add(ei(0,ue,0))).r.sub(t.sample(H.sub(ei(0,ue,0))).r),t.sample(H.add(ei(0,0,ue))).r.sub(t.sample(H.sub(ei(0,0,ue))).r)),re=wc(ne),ce=e.voxelSize?e.voxelSize.mul(.75):yi(ue),ge=ei(e.sdfNode(H.add(ei(ce,0,0))).sub(e.sdfNode(H.sub(ei(ce,0,0)))),e.sdfNode(H.add(ei(0,ce,0))).sub(e.sdfNode(H.sub(ei(0,ce,0)))),e.sdfNode(H.add(ei(0,0,ce))).sub(e.sdfNode(H.sub(ei(0,0,ce))))),ye=()=>RF(wc(ge).greaterThan(1e-5),ge.div(As(wc(ge),1e-5)),NF.negate()),oe=n?Kl(()=>{let V=ei(0).toVar();return fh(L,()=>V.assign(yx(O))).Else(()=>V.assign(ye())),V})():ye(),Ae=yx(vx(oe,ne.div(As(re,1e-5)),mh(.02,.15,re).mul(c.cutNormals))),Ie=H,{frost:Xe,smudge:at,surfCrack:W,nSurface:j,regionMask:G,roughness:ae}=MF(Ie,Ae,m,g,t,d,c,qa.aa);y.normalNode=AF(j.negate());let be=wc(C.sub(H)),Be=Kl(()=>{let V=yi(0).toVar(),Oe=qm(d.crackSteps.div(4).floor(),2,6).toVar();EF({start:BF(0),end:BF(Oe),type:"int",condition:"<"},({i:Je})=>{let ct=yi(Je).add(.5).div(Oe),_e=H.add(E.mul(be).mul(ct)).toVar(),nt=t.sampleCrack(_e),dt=hx.warpDomain(_e,nt.xyz,d.crackLarge,d.crackWarp).add(m.mul(.37)),ft=t.materialPlanes?t.materialPlanes.sample(dt):bm(dt,d.seed,d.crackCoverage),Fe=As(d.crackWidth.mul(d.crackLarge),.001),it=yi(1).sub(mh(Fe,Fe.mul(2.5),ft.w)),Rt=yi(1).sub(d.veinContrast.mul(Bo(_e.mul(d.veinScale).add(m.mul(41)),2).mul(.5).add(.5))),Ft=t.materialPlanes?t.materialPlanes.sample(dt.mul(d.crackFine.div(d.crackLarge)).add(m),!0):bm(dt.mul(d.crackFine.div(d.crackLarge)).add(m),d.seed.add(7),d.fineCoverage),Ze=As(d.crackWidth.mul(d.crackFine).mul(.35),.001),ht=yi(1).sub(mh(Ze,Ze.mul(2.5),Ft.w)),Yt=vx(yi(1),yi(1).sub(mh(.03,.25,ft.w)),d.fineNearLarge),Tr=mh(.24,.68,Bo(_e.mul(38).add(m),2).mul(.5).add(.5)),Gi=it.mul(Tr).add(ht.mul(d.crackFineAmount).mul(Yt)),na=mh(.85,.35,t.sample(_e).r),lu=CF(bde(ft.xyz,P)).mul(.6).add(.4);V.addAssign(Gi.mul(Rt).mul(G).mul(na).mul(lu).mul(Tde(ct.mul(be).div(As(d.attDist,.01)).negate())))});let tt=qm(V.div(Oe),0,1);return $n(tt.mul(d.crackBright),yi(1).sub(tt.mul(d.crackDark).mul(.15)),0,0)})(),$=Kl(()=>{let V=$n(0,1,0,0).toVar();return fh(c.cracks.greaterThan(.5),()=>{V.assign(Be)}),V})(),U=As(be.mul(d.thicknessScale),.001),J=(V,Oe)=>e2(s,V,Ae,d.inclusionScale,Oe),q=Hm==="photographic"?bF(s,Ie,Ae,E,be,d.inclusionScale,d.inclusionAmount).mul(c.scatter):yi(0),se=qm(Xe.mul(d.frostDiffuse).add(at.mul(d.smudgeWhite)).add(q.mul(.65)),0,.65),pe=Hm==="photographic"?J(Ie,yi(0)).mul(c.frost):yi(0);y.roughnessNode=qm(ae.add(pe.mul(.22)),.015,.8),y.iorNode=d.ior,y.dispersionNode=d.dispersion.mul(c.dispersion),y.thicknessNode=U,y.attenuationDistanceNode=As(d.attDist,.01),y.attenuationColorNode=vx(ei(1),d.attColor,c.absorption),y.colorNode=d.baseColor,y.clearcoatNode=d.clearcoat.mul(c.clearcoat),y.clearcoatRoughnessNode=d.clearcoatRough,y.specularIntensityNode=d.specularIntensity.mul(c.reflections);let Te=$.x.add(W.mul(.3)).mul(d.keyIntensity).mul(.3),we=se.mul(d.interiorScatter).mul(c.scatter);if(y.emissiveNode=d.keyColor.mul(Te.add(we.mul(.3))),qa.matcap){let V=yx(AF(j)),Oe=V.xy.mul(.495).add(.5),tt=ae.mul(ae).mul(.06),Je=_e=>yde(o,qm(_e,.002,.998)).rgb,ct=Je(Oe).mul(.4).add(Je(Oe.add(gx(tt,0))).mul(.15)).add(Je(Oe.sub(gx(tt,0))).mul(.15)).add(Je(Oe.add(gx(0,tt))).mul(.15)).add(Je(Oe.sub(gx(0,tt))).mul(.15)).mul(d.envStrength);y.outputNode=Kl(()=>{z.lessThan(0).discard();let _e=As(se,yi(1).sub(c.transmission)),nt=d.baseColor.mul(ct.mul(.5).add(ei(.2)).mul(d.keyIntensity));return $n(vx(ct.mul($.y),nt,_e).add(d.keyColor.mul(Te)).add(d.keyColor.mul(q.mul(d.backlight).mul(.8))),1)})()}else if(Hm==="physical")y.transmissionNode=c.transmission.mul(yi(1).sub(se)),y.outputNode=Kl(()=>(z.lessThan(0).discard(),$n(t2.rgb.mul($.y),t2.a)))();else{let V=qa.fast?zhe({ray:E,normal:j,environment:i,u:d,f:c,roughness:ae,path:be}):Qhe({shape:e,erosion:t,p:Ie,ray:E,normal:j,environment:i,backdrop:a,u:d,f:c,roughness:ae});y.transmission=0,y.transmissionNode=null,y.outputNode=Kl(()=>{z.lessThan(0).discard();let Oe=V.reflected.add(V.transmitted.mul($.y)),tt=As(se,yi(1).sub(c.transmission)),Je=Oe.mul(yi(1).sub(tt)).add(t2.rgb.mul(tt)),ct=d.keyColor.mul(q.mul(d.backlight).mul(.8));return $n(Je.add(ct).add(d.keyColor.mul(Te)),1)})()}function ie(V,Oe,tt,Je){if(le.version!==S){S=le.version;let _e=le.ice,nt=le.erosion,dt=le.shape,ft=le.healing;for(let it of Object.keys(c))c[it].value=Number(_e.features?.[it]??Qd[it]);d.baseColor.value.set(_e.baseColor??"#ffffff"),d.envStrength.value=_e.envIntensity,d.backlight.value=_e.backlight??.4,d.inclusionAmount.value=_e.inclusionAmount??.3,d.inclusionScale.value=_e.inclusionScale??.4,d.ior.value=_e.ior,d.dispersion.value=_e.dispersion,d.thicknessScale.value=_e.thicknessScale,d.attDist.value=_e.attenuationDistance,d.attColor.value.set(_e.attenuationColor),d.baseRough.value=_e.baseRoughness,d.frostScale.value=_e.frost.scale,d.frostThreshold.value=_e.frost.threshold,d.frostSoftness.value=_e.frost.softness,d.frostRough.value=_e.frost.roughness,d.frostDiffuse.value=_e.frost.diffuse,d.crystalBump.value=_e.frost.crystalBump,d.crystalScale.value=_e.frost.crystalScale;let Fe=_e.cracks;d.crackLarge.value=Fe.largeScale,d.crackWarp.value=Fe.warp,d.crackCoverage.value=Fe.coverage,d.regionScale.value=Fe.regionScale,d.regionCoverage.value=Fe.regionCoverage,d.veinScale.value=Fe.veinScale,d.veinContrast.value=Fe.veinContrast,d.crackFine.value=Fe.fineScale,d.crackFineAmount.value=Fe.fineAmount,d.fineCoverage.value=Fe.fineCoverage,d.fineNearLarge.value=Fe.fineNearLarge,d.crackWidth.value=Fe.width,d.crackBright.value=Fe.brightness,d.crackDark.value=Fe.darkness,d.crackRefr.value=Fe.refraction,d.surfaceCrack.value=Fe.surfaceStrength,d.crackSteps.value=Fe.steps,d.adaptiveSteps.value=le.performance.adaptiveSteps?1:0,d.smudgeAmount.value=_e.smudges.amount,d.smudgeCoverage.value=_e.smudges.coverage,d.smudgeMaskScale.value=_e.smudges.maskScale,d.smudgeAniso.value=_e.smudges.anisotropy,d.smudgeRough.value=_e.smudges.roughness,d.smudgeWhite.value=_e.smudges.whiteness,d.smudgeScale.value=_e.smudges.scale,d.microBump.value=_e.bumps.microBump,d.microScale.value=_e.bumps.microScale,d.microCoverage.value=_e.bumps.microCoverage,d.rippleBump.value=_e.bumps.rippleBump,d.rippleScale.value=_e.bumps.rippleScale,d.bumpMaskScale.value=_e.bumps.maskScale,d.clearcoat.value=_e.clearcoat,d.clearcoatRough.value=_e.clearcoatRoughness,d.specularIntensity.value=_e.specularIntensity,d.interiorScatter.value=_e.interiorScatter,d.deformAmp.value=dt.deformAmplitude,d.deformFreq.value=dt.deformFrequency,d.edgeWidth.value=nt.edgeWidth,d.cutThreshold.value=nt.cutThreshold,d.cutSoft.value=nt.cutSoftness,d.edgeInset.value=nt.edgeInset,d.interiorSteps.value=nt.interiorSteps,d.interiorFrost.value=nt.interiorFrost,d.crumbleGlow.value=_e.crumbleGlow,d.edgeWhite.value=_e.edgeWhiteness,d.edgeBump.value=nt.edgeBump,d.edgeBumpScale.value=nt.edgeBumpScale,d.refrostStrength.value=ft.refrostStrength,d.powderTone.value.set(le.powder.baseTone),d.keyIntensity.value=le.lighting.key.intensity,d.keyColor.value.set(le.lighting.key.color)}b.copy(tt.position).sub(tt.target.position).normalize(),Je.getWorldQuaternion(v).invert(),d.lightDir.value.copy(b.applyQuaternion(v)),d.model.value.copy(Je.matrixWorld),d.modelInv.value.copy(Je.matrixWorld).invert();let ct=i2>=0?i2:++Sde;d.jitter.value.set(ct*.7548776662%1,ct*.5698402909%1)}return{material:y,uniforms:d,features:c,update:ie}}var wde=typeof window<"u"&&window.__frostAssetBase||"assets/",a2=e=>wde+e,Mde=a2("shards-atlas.png"),Ym=4,Nde=[[.8035,.94],[.94,.8055],[.7254,.94],[.94,.8764],[.94,.9233],[.7478,.94],[.94,.8079],[.6781,.94],[.94,.8965],[.94,.8612],[.7025,.94],[.8094,.94],[.94,.903],[.8238,.94],[.94,.7249],[.8374,.94]],{Fn:Zm,instancedArray:n2,instanceIndex:Ade,uint:Is,int:IF,float:Jm,ivec3:gh,vec3:FF,vec4:LF,If:Qm,Loop:Cde,atomicStore:Rde,atomicLoad:Ede,atomicMin:Pde,clamp:kF,floor:Bde,length:DF,dot:Ide,select:Fde,texture3D:Lde,textureStore:kde}=Jr,Km=32,OF=e=>4*e/Km,bx=4294967295,Dde=class{constructor(e,t,r,i){this.erosion=e;let s=Km,a=s**3,n=Ade,o=e.bound,l=(T,w)=>gh(T.mod(Is(w)),T.div(Is(w)).mod(Is(w)),T.div(Is(w*w))),u=T=>Is(T.x).add(Is(T.y).mul(Is(s))).add(Is(T.z).mul(Is(s*s))),h=T=>kF(gh(Bde(T.div(2*o).add(.5).mul(s))),gh(0),gh(s-1)),d=T=>FF(T).add(.5).div(s).sub(.5).mul(2*o),c=Zm(()=>{Rde(this.seeds.element(n),Is(bx))})().compute(a,[64]),m=Zm(()=>{let T=r.meta.element(n).x;Qm(T.greaterThan(.5).and(T.lessThan(2.5)),()=>{Pde(this.seeds.element(u(h(r.rest.element(n).xyz))),Is(n))})})().compute(t,[64]),g=Zm(()=>{this.owners[0].element(n).assign(Ede(this.seeds.element(n)))})().compute(a,[64]);this.prepareNodes=[c,m,g];let y=0;for(let T of[16,8,4,2,1,1]){let w=this.owners[y],N=this.owners[1-y];this.prepareNodes.push(Zm(()=>{let C=l(n,s).toVar(),R=d(C).toVar(),E=Is(bx).toVar(),P=Jm(1e30).toVar(),I={start:IF(-1),end:IF(1),condition:"<="};Cde(I,I,I,({i:O,j:L,k:X})=>{let z=kF(C.add(gh(O,L,X).mul(T)),gh(0),gh(s-1)),H=w.element(u(z)).toVar();Qm(H.notEqual(Is(bx)),()=>{let ue=r.rest.element(H).xyz.sub(R),ne=Ide(ue,ue).toVar();Qm(ne.lessThan(P).or(ne.equal(P).and(H.lessThan(E))),()=>{E.assign(H),P.assign(ne)})})}),N.element(n).assign(E)})().compute(a,[64])),y=1-y}let b=this.owners[y],v=e.res,S=Lde(e.tex);this.updateNode=Zm(()=>{let T=l(n,v).toVar(),w=FF(T).add(.5).div(v).sub(.5).mul(2*o).toVar(),N=b.element(u(h(w))).toVar(),C=S.load(T).level(0).toVar().r.toVar();Qm(N.notEqual(Is(bx)),()=>{let R=r.rest.element(N).xyz.toVar(),E=i.model.mul(LF(R,1)).xyz,P=DF(r.pos.element(N).xyz.sub(E)),I=r.meta.element(N).x,O=DF(w.sub(R)),L=i.landRadius.add(Jm(OF(o)).div(Jm(1).add(O.div(2*o/s)))),X=I.greaterThan(1.5).and(I.lessThan(2.5)).or(I.greaterThan(4.5)).or(I.lessThan(.5));Qm(X.and(P.lessThanEqual(L)),()=>{C.assign(0)})}),kde(e.scratch,T,LF(C,0,Fde(C.lessThan(.5),Jm(1),Jm(0)),0)).toWriteOnly()})().compute(v**3,[64])}seeds=n2(Km**3,"uint").toAtomic();owners=[n2(Km**3,"uint"),n2(Km**3,"uint")];prepareNodes;updateNode;prepare(e){for(let t of this.prepareNodes)e.compute(t)}update(e){e.compute(this.updateNode),this.erosion.commitAssembly(e)}dispose(){for(let e of[this.seeds,...this.owners])e.value.dispose?.()}},{refract:Ode,log:Ude,output:o2,attribute:zde,positionView:Vde,reflect:Gde,vec2:UF,Fn:Go,vec3:vr,vec4:xi,float:De,uniform:Se,instancedArray:Mc,storage:ef,instanceIndex:Tx,If:Nt,Loop:Sx,int:yh,uint:vt,uvec3:Wde,ivec3:br,atomicAdd:Nc,atomicSub:jde,atomicLoad:Hde,atomicStore:zF,max:Xt,min:Wo,abs:Ac,dot:xh,length:Bi,normalize:Fs,exp:vh,mix:ti,smoothstep:jo,clamp:Ls,select:qt,floor:bh,fract:rye,sin:tf,cos:l2,sqrt:VF,texture3D:u2,textureStore:Xde,positionLocal:h2,normalLocal:$de,transformNormalToView:GF,varying:eu,cameraPosition:qde,screenUV:_x,mat3:Cc,mat4:iye,pow:Th,Break:sye,Continue:aye,cross:rf,step:WF,negate:nye,uv:Yde,texture:Zde,uniformArray:Jde,cameraViewMatrix:Qde}=Jr,d2=null;function Kde(){if(!d2){let e=new tb().load(Mde);e.flipY=!1,e.colorSpace=Fa,e.wrapS=e.wrapT=Ti,e.minFilter=Ia,e.magFilter=lr,e.generateMipmaps=!0,e.anisotropy=4,d2=e}return d2}var Ho=0,ece=1,jF=2,tce=3,rce=4,HF=5,ice=class{constructor(e){this.o=e;let{count:t,strays:r,rand:i,shape:s}=e;this.total=t+r;let a=this.total,n=le.powder,o=rI(s,t,n.nearSurfaceFraction,n.nearSurfaceDepth,i),l=new Float32Array(a*4),u=new Float32Array(a*4),h=new Float32Array(a*4),d=new Float32Array(a*4),c=new Float32Array(a*4),m=[n.grainSizes.tinyDustRatio,n.grainSizes.smallGrainRatio,n.grainSizes.mediumClumpRatio,.01],g=m.reduce((R,E)=>R+E,0),y=[m[0]/g,(m[0]+m[1])/g,(m[0]+m[1]+m[2])/g],b=Math.cbrt(8*s.bound**3/Math.max(100,e.clumpCount)),v=Math.ceil(s.bound/b)+1,S=v*2+1,T=new Map;for(let R=0;R.2&&(H=2);let ue=Math.floor(I/b)+v,ne=Math.floor(O/b)+v,re=Math.floor(L/b)+v,ce=ue+ne*S+re*S*S,ge=T.get(ce);ge===void 0&&(ge=R,T.set(ce,R)),h[P]=I,h[P+1]=O,h[P+2]=L,h[P+3]=.35+i()*.4,l[P]=I,l[P+1]=O,l[P+2]=L,d[P]=Ho,d[P+1]=i(),d[P+2]=H,d[P+3]=ge}for(let R=0;Rn.atomics.element(vt(u).add(vt(I))),b=I=>n.atomics.element(I),v=I=>n.atomics.element(vt(h).add(I)),S=I=>qt(I.lessThan(.5),a.dustScale,qt(I.lessThan(1.5),a.grainScale,qt(I.lessThan(2.5),a.clumpScale,a.fragmentScale))),T=I=>qt(I.lessThan(.5),vt(1),qt(I.lessThan(1.5),vt(2),qt(I.lessThan(2.5),vt(5),vt(12))));this.nodes.snapshotLeaders=Go(()=>{n.leaders.element(l).assign(xi(n.pos.element(l).xyz,n.meta.element(l).x))})().compute(s,[64]);let w=I=>{let O=Ls(I,0,1);return qt(O.lessThan(.5),Th(2,O.mul(20).sub(10)).div(2),De(2).sub(Th(2,O.mul(-20).add(10))).div(2))};this.nodes.resetCounters=Go(()=>{Sx(8,({i:I})=>{zF(y(I),vt(0))})})().compute(1,[1]);let N=this.o.turbulence==="fast"?I=>rf(Na(I),Na(I.add(vr(31.7,11.3,57.9)))).mul(1.6):I=>sse(I),C=I=>I.div(Xt(Bi(I),1e-6)),R=(I,O)=>Go(()=>{let L=I,X=n.pos.element(L),z=n.vel.element(L),H=n.rest.element(L),ue=n.meta.element(L),ne=n.heal.element(L),re=ue.x.toVar(),ce=ue.y.toVar(),ge=ue.z.toVar(),ye=ue.w.toVar(),oe=X.xyz.toVar(),Ae=X.w.toVar(),Ie=z.xyz.toVar(),Xe=z.w.toVar(),at=H.xyz.toVar(),W=H.w.toVar(),j=ea(ce,1).toVar(),G=ea(ce,2).toVar(),ae=ea(ce,3).toVar(),be=S(ge).mul(De(1).sub(a.sizeJitter.mul(.5)).add(a.sizeJitter.mul(j))).mul(a.sizeMul).toVar(),Be=a.model.mul(xi(at,1)).xyz.toVar(),$=C(a.normalMat.mul(G1(t,at,.004))).toVar(),U=a.model.mul(xi(0,0,0,1)).xyz.toVar(),J=r.sample(at).toVar(),q=J.r.toVar(),se=J.a.greaterThan(.01),pe=N_(ce.mul(211.7).add(5)).lessThan(a.amount),Te=ne.w.greaterThan(.5),we=()=>{let _e=br(bh(r.uvw(at).mul(De(m)))),nt=g.load(Ls(_e,br(0),br(m-1))).level(0).w;return vt(Ls(nt.mul(65535),0,65535))},ie=()=>{Nc(n.atomics.element(vt(c).add(we())),vt(1))},V=_e=>{let nt=we().toVar(),dt=jde(n.atomics.element(vt(c).add(nt)),vt(1)).toVar();Nt(_e.and(dt.lessThanEqual(vt(1).add(vt(a.stragglers)))),()=>{Nc(n.atomics.element(vt(d).add(nt)),vt(1))})},Oe=()=>{let _e=at.add(this.o.erosion.bound).div(this.o.erosion.bound*2).mul(De(m)),nt=br(bh(_e)).toVar(),dt=a.depositRadius.toVar(),ft=yh(dt.ceil()).toVar(),Fe={start:ft.negate(),end:ft,condition:"<="};Sx(Fe,Fe,Fe,({i:it,j:Rt,k:Ft})=>{let Ze=nt.add(br(it,Rt,Ft)),ht=De(it.mul(it).add(Rt.mul(Rt)).add(Ft.mul(Ft))).lessThanEqual(dt.mul(dt).add(.01));Nt(ht.and(Ze.x.greaterThanEqual(0)).and(Ze.y.greaterThanEqual(0)).and(Ze.z.greaterThanEqual(0)).and(Ze.x.lessThan(m)).and(Ze.y.lessThan(m)).and(Ze.z.lessThan(m)),()=>{let Yt=vt(Ze.x).add(vt(Ze.y).mul(vt(m))).add(vt(Ze.z).mul(vt(m*m)));Nc(v(Yt),vt(1))})})},tt=()=>{let _e=Bi(oe.sub(Be)),nt=Ls(_e.div(a.waveReach),0,1).mul(a.waveTime),dt=r.u.reconstruct.greaterThan(.5).and(a.groupNoise.greaterThan(.5)),ft=qt(dt,ae.mul(a.waveJitter).mul(.04),ae.mul(a.waveJitter)),Fe=nt.add(ft),it=a.groupNoise.greaterThan(1.5),Rt=De(0).toVar();return Nt(r.u.reconstruct.greaterThan(.5).and(a.groupStagger.greaterThan(0).or(it)),()=>{let Ft=qt(a.returnMode.greaterThan(.5),mse(_e,Bi(Ie),a),a.returnDuration.add(.2)),Ze=Xt(0,a.assemblyEnd.sub(a.time).sub(Fe).sub(Ft));Rt.assign(Wo(qt(it,a.frontDuration,a.groupStagger),Ze).mul(qt(a.rigEnabled.greaterThan(.5),C_(at,a),Xt(0,W.sub(2)))))}),a.time.add(nt).add(ft).add(Rt)},Je=()=>a.time.add(j.mul(a.waveTime)).add(ae.mul(a.waveJitter)),ct=()=>{let _e=Be,nt=$,dt=n.meta.element(vt(ye)).y,ft=De(1).sub(a.clumpJitter.mul(.5)).add(a.clumpJitter.mul(N_(dt.mul(77.7)))),Fe=qt(N_(dt.mul(31.3).add(1)).lessThan(a.backwardRatio),De(-1),De(1)),it=Xt(a.strokeSpeed,a.minEject),Rt=a.strokeDir.mul(Fe),Ft=N(_e.mul(a.turbScale).add(a.time.mul(.2))),Ze=Rt.mul(it.mul(a.ejectSpeed).mul(ft)).add(nt.mul(a.ejectSpread).mul(De(.5).add(G)).mul(it.mul(.4))).add(Ft.mul(a.ejectTurb).mul(it.mul(.25)).mul(ae.add(.5))),ht=qt(ge.greaterThan(2.5),De(.35),De(1));Ie.assign(Ze.mul(ht)),oe.assign(_e.add(nt.mul(.002))),Xe.assign(0),Ae.assign(be),re.assign(ece),ne.w.assign(0),ie()};Nt(re.lessThan(.5),()=>{Nt(a.fieldActive.greaterThan(.5),()=>{Nt(q.greaterThan(W),()=>{Nt(pe,()=>{ct()}).Else(()=>{re.assign(rce),ne.w.assign(0)})})})}).ElseIf(re.lessThan(1.5),()=>{Xe.addAssign(a.dt);let _e=jo(a.settleTime.mul(.45),a.settleTime,Xe),nt=N(oe.mul(a.turbScale).add(a.time.mul(.15))).mul(a.turbulence).mul(vh(Xe.mul(a.turbDecay).negate())),dt=n.leaders.element(vt(ye)),ft=dt.w,Fe=qt(ft.greaterThan(.5).and(ft.lessThan(1.5)),dt.xyz.sub(oe).mul(a.cohesion).mul(De(1).sub(_e)),vr(0)),it=vr(0).toVar();Nt(a.repel.greaterThan(.5),()=>{let Ze=a.modelInv.mul(xi(oe,1)).xyz.toVar(),ht=t.sdfNode(Ze).toVar();Nt(ht.lessThan(a.repelRange),()=>{let Gi=gi(De(1).sub(ht.div(a.repelRange))),na=C(a.normalMat.mul(G1(t,Ze,.004)));it.assign(na.mul(a.repelStrength).mul(Gi.mul(Gi)))});let Yt=oe.sub(U),Tr=Bi(Yt).div(a.bound.mul(a.repelRadialRange));Nt(Tr.lessThan(1),()=>{let Gi=De(1).sub(Tr.mul(Tr)),na=C(Yt.add(vr(j.sub(.5),G.sub(.5),ae.sub(.5)).mul(.05)));it.addAssign(na.mul(a.repelRadial).mul(Gi.mul(Gi)))})}),Ie.addAssign(nt.add(Fe).add(it).add(vr(0,a.gravity.negate(),0)).mul(a.dt)),Ie.mulAssign(vh(a.drag.mul(a.dt).negate())),Ie.mulAssign(De(1).sub(_e.mul(Wo(1,a.dt.mul(3))))),oe.addAssign(Ie.mul(a.dt)),oe.addAssign(N(oe.mul(.9).add(a.time.mul(.05))).mul(a.settledDrift).mul(_e).mul(a.dt)),Nt(a.inherit.greaterThan(.5).and(Xe.lessThan(a.inheritTime)),()=>{let Ze=De(1).sub(jo(a.inheritTime.mul(.75),Xt(a.inheritTime,.001),Xe));oe.assign(ti(oe,a.modelDelta.mul(xi(oe,1)).xyz,Ze)),Ie.assign(ti(Ie,Cc(a.modelDelta).mul(Ie),Ze))});let Rt=Bi(Ie);Nt(Rt.greaterThan(a.maxSpeed),()=>{Ie.mulAssign(a.maxSpeed.div(Rt))});let Ft=a.returnAfter.greaterThan(.001).and(Xe.greaterThan(a.returnAfter));Nt(a.heal.greaterThan(.5).or(Ft),()=>{Nt(Te.not(),()=>{ne.w.assign(tt())}),Nt(ne.w.greaterThan(.5).and(a.time.greaterThanEqual(ne.w)),()=>{re.assign(jF),ne.xyz.assign(oe),ne.w.assign(a.time)})}).Else(()=>{ne.w.assign(0)})}).ElseIf(re.lessThan(2.5),()=>{let _e=ne.w.lessThan(-.5),nt=qt(_e,Xe,ne.w).toVar();Nt(_e.not(),()=>{Xe.addAssign(a.dt)});let dt=ne.xyz,ft=Be,Fe=$;Nt(a.returnMode.greaterThan(.5),()=>{let it=a.time.sub(nt),Rt=jo(0,Xt(a.springRamp,.001),it),Ft=a.inherit.mul(De(1).sub(Rt)).mul(De(1).sub(jo(a.inheritTime.mul(.75),Xt(a.inheritTime,.001),Xe)));oe.assign(ti(oe,a.modelDelta.mul(xi(oe,1)).xyz,Ft)),Ie.assign(ti(Ie,Cc(a.modelDelta).mul(Ie),Ft));let Ze=ft.sub(oe),ht=Bi(Ze).toVar(),Yt=qt(r.u.reconstruct.greaterThan(.5).and(a.groupNoise.greaterThan(1.5)),De(1),De(0)),Tr=ti(De(1),ti(De(.55),De(1.8),j),a.speedVariation.mul(Yt)),Gi=a.springK.mul(a.rigStrength).mul(Tr.mul(Tr)).mul(Rt),na=VF(a.springK.mul(a.rigStrength)).mul(Tr).mul(2).mul(a.springDamp).mul(Rt),lu=Bi(ft.sub(dt)),uu=Ls(ht.div(Xt(lu,.05)),0,1),Ch=De(1).sub(jo(.5,2.4,it.mul(Tr))),Fc=C(rf(Fe,vr(G,ae,j).sub(.5)).add(.001)),Lc=rf(Fe,Fc),Rh=it.mul(a.pathSwirl).mul(G.mul(2).sub(1)).add(ae.mul(6.283185)),kc=Fc.mul(l2(Rh)).add(Lc.mul(tf(Rh))).add(Fe.mul(G.sub(.5))).mul(Wo(lu,3)).mul(a.pathBend).mul(.5).mul(uu.mul(.3).add(tf(uu.mul(Math.PI)).mul(.7))).mul(Ch).mul(Yt),xf=a.previousModel.mul(xi(at,1)).xyz,Eh=ft.sub(xf).div(Xt(a.dt,1e-5)),Ph=Ze.add(kc).mul(Gi).sub(Ie.sub(Eh).mul(na)).add(vr(0,a.gravity.negate().mul(De(1).sub(Rt)),0));Ie.addAssign(Ph.mul(a.dt)),Ie.mulAssign(vh(a.drag.mul(a.returnDrag).mul(a.dt).negate()));let Dc=Bi(Ie),Oc=a.returnMaxSpeed.mul(Tr);Nt(Dc.greaterThan(Oc),()=>{Ie.mulAssign(Oc.div(Dc))});let Uc=Ie.mul(a.dt),vf=Bi(Uc);oe.addAssign(qt(vf.greaterThan(ht),Ze,Uc)),Ae.assign(be.mul(qt(a.landShrink.greaterThan(.001),gi(ht.div(Xt(a.landShrink,.001))),De(1))).mul(qt(_e,jo(0,.25,it),De(1))));let bf=ht.lessThan(a.landRadius);Nt(bf,()=>{Nt(_e.not(),()=>{V(se.not().and(r.u.reconstruct.lessThan(.5))),Nt(se.not().and(r.u.reconstruct.lessThan(.5)),()=>{Oe()})}),re.assign(qt(_e,De(Ho),De(HF))),oe.assign(ft),Ie.assign(vr(0)),ne.w.assign(0),Ae.assign(qt(_e.or(r.u.reconstruct.greaterThan(.5)),De(0),be))})}).Else(()=>{let it=Ls(a.time.sub(nt).div(Xt(a.returnDuration,.05)),0,1).toVar(),Rt=Ls(a.time.sub(a.dt).sub(nt).div(Xt(a.returnDuration,.05)),0,1),Ft=w(it),Ze=ti(dt,ft,.5).add(Fe.mul(a.returnCurve).mul(Bi(ft.sub(dt))).mul(.5)).add(vr(G,ae,j).sub(.5).mul(a.returnCurve).mul(.4)),ht=ti(dt,Ze,Ft),Yt=ti(Ze,ft,Ft);oe.assign(ti(ht,Yt,Ft));let Tr=qt(_e,jo(De(1).sub(a.ghostFrac),De(1).sub(a.ghostFrac).add(.08),it),De(1));Ae.assign(be.mul(De(1).sub(jo(.82,1,it))).mul(Tr)),Nt(Rt.lessThan(.85).and(it.greaterThanEqual(.85)).and(_e.not()),()=>{V(se.not().and(r.u.reconstruct.lessThan(.5))),Nt(se.not().and(r.u.reconstruct.lessThan(.5)),()=>{Oe()})}),Nt(it.greaterThanEqual(1),()=>{re.assign(qt(_e,De(Ho),De(HF))),oe.assign(ft),ne.w.assign(0)})}),Nt(r.u.reconstruct.greaterThan(.5).and(_e.not()),()=>{let it=qt(a.groupNoise.greaterThan(1.5),a.landingVariation,De(0)),Rt=De(OF(r.bound)).mul(ti(De(1),ti(De(.35),De(1.65),G),it)),Ft=jo(a.landRadius,Xt(a.landRadius.add(.001),Rt),Bi(ft.sub(oe)));Ae.assign(be.mul(Th(Ft,ti(De(1),ti(De(.45),De(2.2),ae),it)))),Nt(re.greaterThan(4.5),()=>{H.w.assign(2)})})}).ElseIf(re.lessThan(3.5),()=>{let _e=a.time.mul(a.straySpeed).mul(De(.5).add(j)).add(ce.mul(6.2831)),nt=Bi(at.xy),dt=at.z.add(tf(a.time.mul(.3).add(ce.mul(12))).mul(.05)),ft=vr(l2(_e).mul(nt),tf(_e).mul(nt),dt);oe.assign(a.model.mul(xi(ft,1)).xyz),Ae.assign(S(ge).mul(.9).mul(a.sizeMul)),Xe.assign(Xe.add(a.dt))}).ElseIf(re.lessThan(4.5),()=>{Nt(a.heal.greaterThan(.5),()=>{Nt(Te.not(),()=>{ne.w.assign(Je().add(a.returnDuration.mul(De(1).sub(a.ghostFrac))))}),Nt(ne.w.greaterThan(.5).and(a.time.greaterThanEqual(ne.w)),()=>{Nt(a.ghostDist.greaterThan(.001),()=>{let _e=$,nt=C(rf(_e,vr(j.sub(.5),G.sub(.5),ae.sub(.5)).add(.001))),dt=Be.add(_e.mul(a.ghostDist).mul(De(.4).add(j.mul(.6)))).add(nt.mul(a.ghostDist).mul(G.sub(.5)).mul(.8));ne.xyz.assign(dt),ne.w.assign(-1),oe.assign(dt),Xe.assign(a.time.sub(a.returnDuration.mul(De(1).sub(a.ghostFrac)))),Ae.assign(0),re.assign(jF)}).Else(()=>{re.assign(Ho),ne.w.assign(0)})})}).Else(()=>{ne.w.assign(0)})}).Else(()=>{oe.assign(Be),Nt(r.u.reconstruct.greaterThan(.5),()=>{re.assign(Ho),ne.w.assign(0),Ae.assign(0)}).ElseIf(q.lessThan(W),()=>{Nt(ne.w.lessThan(.5),()=>{ne.w.assign(a.time)});let _e=gi(a.time.sub(ne.w).div(Xt(a.landedFade,.01)));Ae.assign(be.mul(De(1).sub(_e))),Nt(_e.greaterThanEqual(1),()=>{re.assign(Ho),ne.w.assign(0),Ae.assign(0)})}).Else(()=>{Ae.assign(be),ne.w.assign(0),Nt(se.and(a.fieldActive.greaterThan(.5)),()=>{ct()})})}),Nt(re.greaterThan(.5).and(re.lessThan(2.5)),()=>{let _e=Ac(oe.x).lessThan(1e30).and(Ac(oe.y).lessThan(1e30)).and(Ac(oe.z).lessThan(1e30)).and(Ac(Ie.x).lessThan(1e30)).and(Ac(Ie.y).lessThan(1e30)).and(Ac(Ie.z).lessThan(1e30)),nt=Bi(oe.sub(U)).greaterThan(a.lostRadius);Nt(_e.not().or(nt),()=>{oe.assign(Be.add($.mul(.05))),Ie.assign(vr(0))})}),X.xyz.assign(oe),X.w.assign(Ae),z.xyz.assign(Ie),z.w.assign(Xe),ue.x.assign(re),Nt(re.greaterThan(.5).and(re.lessThan(3.5)).or(re.greaterThan(4.5)),()=>{let _e=vt(bh(ce.mul(1e3))).mod(vt(i));Nc(y(_e),vt(1));let nt=oe.add(a.densityExtent).div(a.densityExtent.mul(2)).mul(De(o)),dt=br(bh(nt));Nt(dt.x.greaterThanEqual(0).and(dt.y.greaterThanEqual(0)).and(dt.z.greaterThanEqual(0)).and(dt.x.lessThan(o)).and(dt.y.lessThan(o)).and(dt.z.lessThan(o)),()=>{let ft=vt(dt.x).add(vt(dt.y).mul(vt(o))).add(vt(dt.z).mul(vt(o*o)));Nc(b(ft),T(ge))})})})().compute(O,[64]);this.nodes.update=R(Tx,s),this.nodes.updateStrays=this.o.strays>0?R(Tx.add(vt(e)),this.o.strays):null;let E=()=>Wde(l.mod(vt(o)),l.div(vt(o)).mod(vt(o)),l.div(vt(o*o))),P=I=>{let O=Ls(br(I),br(0),br(o-1)),L=vt(O.x).add(vt(O.y).mul(vt(o))).add(vt(O.z).mul(vt(o*o)));return De(Hde(b(L))).mul(a.densityScale)};this.nodes.resolve=Go(()=>{let I=E(),O=P(br(I)).toVar(),L=De(1).sub(vh(O.negate())),X=a.lightDir.mul(De(o)).div(a.densityExtent.mul(2)).toVar(),z=De(0).toVar(),H=vr(I).add(.5).toVar();Sx(6,()=>{H.addAssign(X.mul(.9)),z.addAssign(P(br(bh(H))))});let ue=vh(z.mul(.9).negate()),ne=P(br(I).add(br(1,0,0))).add(P(br(I).add(br(-1,0,0)))).add(P(br(I).add(br(0,1,0)))).add(P(br(I).add(br(0,-1,0)))).add(P(br(I).add(br(0,0,1)))).add(P(br(I).add(br(0,0,-1)))),re=De(1).sub(vh(ne.div(6).add(O).mul(1.2).negate()));Xde(this.densityTex,I,xi(L,ue,re,1)).toWriteOnly()})().compute(o*o*o,[64]),this.nodes.clearDensity=Go(()=>{zF(b(l),vt(0))})().compute(o*o*o,[64]),this.nodes.retargetCount=Go(()=>{let I=n.meta.element(l),O=n.rest.element(l),L=n.pos.element(l),X=I.x.toVar();Nt(X.greaterThan(4.5),()=>{I.x.assign(Ho),L.w.assign(0),n.heal.element(l).assign(xi(0)),X.assign(Ho)}),Nt(X.greaterThan(.5).and(X.lessThan(2.5)),()=>{Nt(r.u.reconstruct.greaterThan(.5).and(a.groupStagger.greaterThan(0).or(a.groupNoise.greaterThan(1.5))),()=>{O.w.assign(De(2).add(qt(a.groupNoise.greaterThan(1.5),C_(O.xyz,a),pse(O.xyz,a.groupScale,a.groupSeed,a.groupNoise))))});let z=br(bh(r.uvw(O.xyz).mul(De(m)))),H=g.load(Ls(z,br(0),br(m-1))).level(0).w;Nc(n.atomics.element(vt(c).add(vt(Ls(H.mul(65535),0,65535)))),vt(1))}).ElseIf(X.lessThan(.5).or(X.greaterThan(3.5).and(X.lessThan(4.5))),()=>{O.w.assign(2)})})().compute(s,[64]),this.nodes.reset=Go(()=>{let I=n.meta.element(l),O=n.vel.element(l),L=n.pos.element(l),X=n.rest.element(l);Nt(I.x.lessThan(2.5).or(I.x.greaterThan(3.5)),()=>{I.x.assign(Ho),O.assign(xi(0)),L.assign(xi(X.xyz,0)),n.heal.element(l).assign(xi(0))})})().compute(s,[64])}buildMeshes(){let{variants:e,rand:t}=this.o,r=this.total,i=this.u,s=this.buffers,a=le.powder.sprites,n=!!a.enabled,o=n?Array.from({length:e},()=>new Kv(2,2)):One(e,t,le.powder.facetedGrains),l=n?Kde():null,u=n?Jde(Nde.map(b=>new fe(b[0],b[1]))):null,h=ef(s.pos.value,"vec4",r).toReadOnly(),d=ef(s.vel.value,"vec4",r).toReadOnly(),c=ef(s.meta.value,"vec4",r).toReadOnly(),m=ef(s.rest.value,"vec4",r).toReadOnly(),g=ef(s.heal.value,"vec4",r).toReadOnly(),y=u2(this.densityTex);for(let b=0;bJy(Jy(vi,vr(0,0,1),L),lu,Gi),Ch=uu(vr(Yt,0,0)),Fc=uu(vr(0,0,1)),Lc=m.element(T),Rh=i.model.mul(xi(Lc.xyz,1)).xyz,kc=i.normalMat.mul(G1(this.o.shape,Lc.xyz,.004)),xf=kc.div(Xt(Bi(kc),1e-6)),Eh=Fs(Cc(Qde).mul(xf).add(vr(0,0,1e-4))),Ph=qt(Eh.z.lessThan(0),Eh.negate(),Eh),Dc=P.greaterThan(1.5).and(P.lessThan(2.5)),Oc=P.greaterThan(4.5),Uc=Bi(Rh.sub(w.xyz)),vf=g.element(T),bf=Xt(Bi(Rh.sub(vf.xyz)),.05),Y2=gi(De(1).sub(Uc.div(bf))),Wx=qt(Oc,De(1),qt(Dc,Th(Y2,i.alignCurve),De(0))).mul(i.alignAmt),Z2=Fs(Ch.sub(Ph.mul(xh(Ch,Ph))).add(vr(1e-4,0,0))),zc=Fs(ti(Fc,Ph,Wx)),jx=Fs(ti(Ch,Z2,Wx)),Tf=Fs(jx.sub(zc.mul(xh(jx,zc)))),Hx=rf(zc,Tf).mul(Yt.mul(Tr)),J2=Tf.mul(h2.x.mul(ht.x).mul(Yt)).add(Hx.mul(h2.y.mul(ht.y).mul(Tr))).mul(H).mul(i.spriteSize);S.positionNode=w.xyz.add(Cc(i.camWorld).mul(J2));let Xx=eu(Tf),$x=eu(Hx),hu=eu(zc),Bh=eu(xi(De(Ze),Yt,Tr,R)),Q2=Bh.x,K2=Bh.y,eM=Bh.z;ge=Bh.w;let Vc=Yde(),tM=ti(Vc.x,De(1).sub(Vc.x),WF(K2,0)),du=ti(Vc.y,De(1).sub(Vc.y),WF(eM,0)),Sf=yh(Q2.add(.5)),rM=De(Sf.mod(yh(Ym))),iM=De(Sf.div(yh(Ym))),qx=u.element(Sf),sM=UF(rM.add(.5).add(tM.sub(.5).mul(qx.x)),iM.add(.5).add(du.sub(.5).mul(qx.y))).div(Ym),_f=Zde(l,sM),Gc=_f.rg.mul(2).sub(1).mul(i.spriteNormal),aM=VF(gi(De(1).sub(xh(Gc,Gc))));$=Fs(Xx.mul(Gc.x).add($x.mul(Gc.y)).add(hu.mul(aM)));let wf=G.nSurface.sub(at);if($=Fs($.add(Xx.mul(wf.x)).add($x.mul(wf.y)).add(hu.mul(wf.z))),S.normalNode=$,S.maskNode=_f.a.greaterThan(i.spriteCut),J=Ls(ae.mul(ye.frostDiffuse).add(G.smudge.mul(ye.smudgeWhite)).add(be.mul(.65)),0,.65),q=gi(_f.a.sub(.35).div(.65)),a.seeThrough>0){S.transparent=!0,S.depthWrite=!1;let vi=Th(gi(De(1).sub(gi(xh($,Be)))),i.fresnelPower),nM=ti(De(.42),De(.85),J).add(vi.mul(.45)).add(De(1).sub(q).mul(.18));S.opacityNode=ti(De(1),gi(nM),i.spriteSee.mul(oe.transmission).mul(oe.shardTransmission))}U=gi(xh($,i.lightDirView).add(i.wrap).div(De(1).add(i.wrap)))}else{ge=eu(R);let Ze=Jy(h2.mul(H),O,L);S.positionNode=w.xyz.add(Ze);let ht=Jy($de,O,L);S.normalNode=GF(ht),$=Fs(GF(ht)),U=gi(xh(Fs(ht),i.lightDir).add(i.wrap).div(De(1).add(i.wrap)))}n||(J=Ls(ae.mul(ye.frostDiffuse).add(G.smudge.mul(ye.smudgeWhite)).add(be.mul(.65)),0,.65));let se=Th(ye.ior.sub(1).div(ye.ior.add(1)),2),pe=se.add(De(1).sub(se).mul(Th(gi(De(1).sub(gi(xh($,Be)))),5))),Te=Hm==="photographic"?e2(this.o.fractureDetail,W,at,ye.inclusionScale).mul(Ae.frost):De(0),we=Ls(G.roughness.add(Te.mul(.22)),.015,.8);S.roughnessNode=we,S.iorNode=ye.ior,S.clearcoatNode=ye.clearcoat.mul(oe.clearcoat).mul(oe.shardReflections),S.clearcoatRoughnessNode=ye.clearcoatRough,S.specularIntensityNode=ye.specularIntensity.mul(oe.reflections).mul(oe.shardReflections);let ie=oe.reflections.mul(oe.shardReflections),V=oe.transmission.mul(oe.shardTransmission),Oe=Ze=>Fs(Cc(i.camWorld).mul(Ze)),tt=Ze=>$w(this.o.environment,ye.envStrength,Ze,we),Je=Be.negate(),ct=Ode(Je,$,De(1).div(Xt(ye.ior,1.001))),_e=Xt(Xe.w.mul(q).mul(ye.thicknessScale),.001),nt=vh(Ude(Xt(ye.attColor,vr(.001))).mul(_e.div(Xt(ye.attDist,.01))).mul(oe.absorption)),dt=Ls(_x.add(ct.xy.sub(Je.xy).mul(_e).mul(.08)),0,1),ft=z1(this.o.backdrop,dt).add(tt(Oe(ct)).mul(ye.backlight)).mul(nt),Fe=tt(Oe(Gde(Je,$))).mul(pe).mul(ie).mul(ye.specularIntensity),it=Xt(J,De(1).sub(V)),Rt=ye.keyColor.mul(G.surfCrack.mul(ye.crackBright).mul(.3).add(be.mul(ye.backlight).mul(.8))).mul(oe.scatter);S.colorNode=ye.baseColor,S.emissiveNode=ye.keyColor.mul(it.mul(ye.interiorScatter).mul(.3)).mul(oe.scatter),S.outputNode=Go(()=>{let Ze=Fe.add(ft.mul(De(1).sub(pe.mul(ie)))).mul(De(1).sub(it)).add(o2.rgb.mul(it)).add(Rt),ht=Xt(o2.a,.001),Yt=z1(this.o.backdrop,_x);return xi(Xt(Ze.sub(Yt.mul(De(1).sub(ht))),vr(0)).div(ht),o2.a)})();let Ft=new Mi(v,S);Ft.frustumCulled=!1,Ft.castShadow=!0,Ft.receiveShadow=!0,this.meshes.push(Ft),this.group.add(Ft),b===0&&(this.material=S)}}hazeNode(e,t,r){let i=this.u,s=u2(this.densityTex);return Go(()=>{let a=_x.mul(2).sub(1),n=UF(a.x,a.y.negate()),o=i.invProj.mul(xi(n.x,n.y,1,1)),l=o.xyz.div(o.w),u=Fs(l),h=Fs(Cc(i.camWorld).mul(u)),d=i.camPos,c=i.densityExtent,m=vr(1).div(h),g=c.negate().sub(d).mul(m),y=c.sub(d).mul(m),b=Xt(Xt(Wo(g.x,y.x),Wo(g.y,y.y)),Wo(g.z,y.z)),v=Wo(Wo(Xt(g.x,y.x),Xt(g.y,y.y)),Xt(g.z,y.z)),S=De(1).div(Xt(u.z.negate(),1e-4)),T=t.negate().mul(S),w=Wo(v,T),N=De(0).toVar();Nt(w.greaterThan(Xt(b,0)).and(i.hazeOn.greaterThan(.5)),()=>{let R=Xt(b,0),E=Xt(i.hazeSteps,4),P=w.sub(R).div(E),I=Po(vr(_x.mul(1234),i.time)).mul(P),O=R.add(I).toVar();Sx({start:yh(0),end:yh(E),type:"int",condition:"<"},()=>{let L=d.add(h.mul(O)).add(c).div(c.mul(2)),X=s.sample(L).level(0);N.addAssign(X.r.mul(X.g).mul(P)),O.addAssign(P)})});let C=i.tone.mul(i.keyColor).mul(i.keyIntensity).mul(N).mul(.35);return xi(C,0)})()}step(e,t,r,i,s,a){let n=le.powder,o=le.healing,l=this.u;l.fieldActive.value=a.fieldActive?1:0,l.hazeOn.value=a.powderActive?1:0,l.dt.value=Math.min(r,1/30),l.time.value=t;let u=this.o.objectGroup.matrixWorld;if(l.model.value.copy(u),l.previousModel.value.copy(this.prevModel),l.normalMat.value.getNormalMatrix(u),l.modelDelta.value.copy(u).multiply(this.inversePrevModel.copy(this.prevModel).invert()),this.prevModel.copy(u),l.strokeDir.value.copy(i.strokeDir),l.strokeSpeed.value=i.strokeSpeed,l.heal.value=pt.healing?1:0,l.fade.value=pt.fade,l.lightDir.value.copy(s.position).sub(s.target.position).normalize(),l.modelInv.value.copy(u).invert(),le.version!==this.settingsVersion){this.settingsVersion=le.version,l.ejectSpeed.value=n.ejectSpeed,l.ejectSpread.value=n.ejectSpread,l.ejectTurb.value=n.ejectTurbulence,l.backwardRatio.value=n.backwardRatio,l.clumpJitter.value=n.clumpSpeedJitter,l.drag.value=n.drag,l.gravity.value=n.gravity,l.turbulence.value=n.turbulence,l.turbScale.value=n.turbulenceScale,l.turbDecay.value=n.turbulenceDecay,l.cohesion.value=n.clumpCohesion,l.settleTime.value=n.settleTime,l.settledDrift.value=n.settledDrift,l.tumble.value=n.tumble,l.returnDuration.value=o.returnDuration,l.returnCurve.value=o.returnCurve,l.inherit.value=n.inheritRotation?1:0,l.inheritTime.value=n.inheritTime/1e3,l.straySpeed.value=n.straySpeed,l.dustScale.value=n.grainSizes.tinyDustSize,l.grainScale.value=n.grainSizes.smallGrainSize,l.clumpScale.value=n.grainSizes.mediumClumpSize,l.fragmentScale.value=n.grainSizes.largeFragmentSize,l.sizeJitter.value=n.grainSizes.sizeJitter,l.sizeMul.value=n.grainSizeMultiplier,l.amount.value=n.amount,l.minEject.value=n.minEjectSpeed,l.minPixel.value=n.minPixelSize,l.waveTime.value=o.waveTime,l.waveJitter.value=o.waveJitter,l.ghostDist.value=o.ghostReturnDistance,l.ghostFrac.value=o.ghostFlightFraction,l.waveReach.value=o.waveReach,l.depositRadius.value=o.depositRadius,l.returnMode.value=o.returnMode==="spring"?1:0,l.springK.value=o.returnSpring,l.springDamp.value=o.returnDamping,l.springRamp.value=o.returnRamp,l.landRadius.value=o.landRadius,l.returnAfter.value=o.returnAfter,l.maxSpeed.value=n.maxSpeed,l.returnDrag.value=o.returnDrag,l.returnMaxSpeed.value=o.returnMaxSpeed,l.lostRadius.value=n.lostRadius,l.stragglers.value=o.cellStragglers,l.spriteSee.value=n.sprites.seeThrough,l.alignAmt.value=o.alignToSurface,l.alignDist.value=o.alignDistance,l.alignCurve.value=o.alignCurve??1,l.landedFade.value=o.landedFade,l.landShrink.value=o.landShrink,l.densityExtent.value=n.densityExtent,l.shadowStrength.value=n.densityShadowStrength,l.aoStrength.value=n.densityAOStrength,l.densityScale.value=.02*(this.o.densityRes/64)**3*(1e6/this.total)**.5,l.tone.value.set(n.baseTone),l.wrap.value=n.wrap,l.keyIntensity.value=le.lighting.key.intensity,l.keyColor.value.set(le.lighting.key.color);let h=n.fragments;l.translucency.value=h.translucency,l.throughTint.value.set(h.throughTint),l.fresnelPower.value=h.fresnelPower,l.fragRough.value=h.roughness,l.fragClearcoat.value=h.clearcoat,l.fragSpecular.value=h.specular,l.sparkle.value=h.sparkle,l.sparkleFraction.value=h.sparkleFraction,l.sparkleSpread.value=h.sparkleSpread;let d=n.sprites;l.spriteSize.value=d.sizeScale,l.spriteTilt.value=Bt.degToRad(d.tilt),l.spriteNormal.value=d.normalStrength,l.spriteFrost.value=d.frostFromAtlas,l.spriteFrostBoost.value=d.frostBoost,l.spriteFrostRough.value=d.frostRoughness,l.spriteEdge.value=d.edgeLight,l.spriteCut.value=d.alphaCut;let c=le.ice.features;if(l.surfaceFrost.value=Number(c.shardFrost&&c.frost),l.surfaceDetail.value=Number(c.shardFrost&&c.scatter),c.shardNormals||(l.spriteNormal.value=0),c.shardFrost||(l.spriteFrost.value=0,l.spriteFrostBoost.value=0),c.shardTransmission||(l.translucency.value=0,l.spriteSee.value=0),c.shardReflections||(l.fragSpecular.value=0,l.fragClearcoat.value=0),c.shardSparkle||(l.sparkle.value=0),c.shardEdges||(l.spriteEdge.value=0),l.repel.value=n.repelFromObject?1:0,l.repelStrength.value=n.repelStrength,l.repelRange.value=n.repelRange,l.repelRadial.value=n.repelRadial,l.repelRadialRange.value=n.repelRadialRange,l.colorByState.value=le.debug.colorByState?1:0,l.colorBySize.value=le.debug.colorBySize?1:0,l.colorByAge.value=le.debug.colorByAge?1:0,l.hazeSteps.value=n.hazeSteps,n.fragmentShadowMap!==this.fragmentShadowMap){this.fragmentShadowMap=n.fragmentShadowMap;for(let m of this.meshes)m.castShadow=n.fragmentShadowMap}}if(this.beforeIntegrate?.(),!(r<=0)&&(e.compute(this.nodes.resetCounters),a.powderActive||a.fieldActive||!this.nodes.updateStrays?(e.compute(this.nodes.snapshotLeaders),e.compute(this.nodes.update),e.compute(this.nodes.resolve),e.compute(this.nodes.clearDensity),this.densityDirty=!0):(e.compute(this.nodes.updateStrays),this.densityDirty&&(e.compute(this.nodes.resolve),e.compute(this.nodes.clearDensity),this.densityDirty=!1)),this.beforeAssembly?.(),this.assemblyEnabled&&this.o.erosion.u.reconstruct.value>.5&&a.fieldActive&&this.assembly?.update(e),this.statsTimer+=r,this.statsTimer>.5&&(le.debug.stats||le.performance.idleSkip))){this.statsTimer=0;let h=this.o.countersOffset;e.getArrayBufferAsync(this.buffers.atomics.value,null,h*4,64).then(d=>{let c=new Uint32Array(d),m=0;for(let g=0;g{})}}updateCamera(e,t){this.u.pixelWorld.value=2*Math.tan(Bt.degToRad(e.fov/2))/Math.max(1,t),this.u.lightDirView.value.copy(this.u.lightDir.value).transformDirection(e.matrixWorldInverse),this.u.camPos.value.copy(e.position),this.u.invProj.value.copy(e.projectionMatrixInverse),this.u.camWorld.value.copy(e.matrixWorld)}reset(e){e.compute(this.nodes.reset)}syncModel(){this.prevModel.copy(this.o.objectGroup.matrixWorld)}retarget(e,t){let r=this.buffers.rest.value;r.array.set(t),this.upload(e,r),this.u.groupNoise.value=Number(le.healing.returnNoiseAmount??2),this.u.frontDuration.value=Number(le.healing.assemblyFrontDuration??Bs.assemblyFrontDuration),this.u.frontX.value=Number(le.healing.assemblyOriginX??Bs.assemblyOriginX),this.u.frontY.value=Number(le.healing.assemblyOriginY??Bs.assemblyOriginY),this.u.frontAngle.value=Number(le.healing.assemblyAngle??Bs.assemblyAngle),this.u.frontSpread.value=Number(le.healing.assemblySpread??Bs.assemblySpread),this.u.frontNoise.value=Number(le.healing.assemblyFrontNoise??Bs.assemblyFrontNoise),this.u.speedVariation.value=Number(le.healing.assemblySpeedVariation??Bs.assemblySpeedVariation),this.u.pathBend.value=Number(le.healing.assemblyBend??Bs.assemblyBend),this.u.pathSwirl.value=Number(le.healing.assemblySwirl??Bs.assemblySwirl),this.u.landingVariation.value=Number(le.healing.assemblyLandingVariation??Bs.assemblyLandingVariation),this.u.groupStagger.value=le.healing.returnGroupStagger??Bs.returnGroupStagger,this.u.groupScale.value=le.healing.returnGroupScale??Bs.returnGroupScale,this.u.groupSeed.value=le.healing.returnGroupSeed??Bs.returnGroupSeed,e.compute(this.nodes.retargetCount),this.o.erosion.u.reconstruct.value>.5&&this.assembly?.prepare(e)}prepareAssembly(e){this.assembly?.prepare(e)}restoreThresholds(e){let t=this.buffers.rest.value,r=t.array;for(let i=3;inew Wt);strokeCount=0;strokeVel=new F;strokeDir=new F(1,.4,0).normalize();strokeSpeed=0;hitEntry=new F;hitExit=new F;hasHit=!1;prevEntry=new F;prevExit=new F;prevEntryWorld=new F;prevHit=!1;prevX=0;prevY=0;scripted=[];scrollP=-1;scrollPath={from:new F(-1,-.6,0),to:new F(1,.6,0)};ray=new ld;inv=new We;tmp=new F;objectRayOrigin=new F;objectRayDirection=new F;workA=new F;workB=new F;workDirection=new F;velocity=new F;rayHit={entry:new F,exit:new F,tEntry:0,tExit:0};resetDone=!0;sweep(e={}){let t=this.shape.bound,r=e.from??[-1,-.55,0],i=e.to??[1,.55,0];this.scripted.push({kind:"sweep",from:new F(r[0]*t,r[1]*t,r[2]*t),to:new F(i[0]*t,i[1]*t,i[2]*t),t0:-1,delay:e.delay??0,duration:e.duration??.7,radius:e.radius??le.erosion.brushRadius,strength:e.strength??le.erosion.brushStrength*1.5,through:e.through??!0,prevT:0})}front(e){let t=this.shape.bound,[r,i]=e.from,[s,a]=e.to,n=s-r,o=a-i,l=Math.hypot(n,o)||1,u=n/l*.5,h=o/l*.5;this.scripted.push({kind:"front",from:new F((r-u)*t,(i-h)*t,0),to:new F((s+u)*t,(a+h)*t,0),normal:new F(-o/l,n/l,0),reach:(e.reach??1.3)*t,t0:-1,delay:e.delay??0,duration:e.duration??1.5,radius:e.radius??le.erosion.brushRadius,strength:e.strength??le.erosion.brushStrength*1.5,through:!0,prevT:0})}clearScripted(){this.scripted.length=0}burst(e,t,r,i=.18){let s=new We().copy(this.objectGroup.matrixWorld).invert(),a=e.clone().applyMatrix4(s);this.scripted.push({from:a,to:a.clone(),t0:-1,delay:0,duration:i,radius:t,strength:r,through:!1,prevT:0});let n=new F().setFromMatrixPosition(this.objectGroup.matrixWorld),o=e.clone().sub(n);o.lengthSq()<1e-6&&o.set(0,1,0),this.strokeDir.copy(o.normalize()),this.strokeSpeed=le.erosion.brushSpeedRef*1.5}sweepTo(e){this.scrollP=Math.max(0,Math.min(1,e))}pushScripted(e,t){if(this.scripted.length===0)return!1;let r=!1;for(let i of this.scripted){if(i.t0<0&&(i.t0=e+i.delay),e1-(1-y)*(1-y),h=i.reach*u(i.prevT),d=i.reach*u(s),c=Math.max(i.radius,(d-h)*1.5),m=this.shape.thickness,g=m<=c*.9?[0]:[-m,0,m];if(this.strokeCount+g.length*2>Tc)break;for(let y of[1,-1]){let b=this.workA.copy(i.from).addScaledVector(i.normal,y*d),v=this.workB.copy(i.to).addScaledVector(i.normal,y*d);for(let S of g)this.strokeSegments[this.strokeCount*2].set(b.x,b.y,S,c),this.strokeSegments[this.strokeCount*2+1].set(v.x,v.y,S,i.strength),this.strokeCount++}this.strokeSpeed=Math.max(this.strokeSpeed,i.reach/i.duration*.6),i.prevT=s,r=!0;continue}let n=this.workA.copy(i.from).lerp(i.to,i.prevT),o=this.workB.copy(i.from).lerp(i.to,s),l=i.through?3:1;if(this.strokeCount+l>Tc)break;for(let u=0;u1e-6){let u=this.workDirection.copy(i.to).sub(i.from).transformDirection(this.objectGroup.matrixWorld);this.strokeDir.copy(u.normalize()),this.strokeSpeed=Math.max(this.strokeSpeed,i.from.distanceTo(i.to)/i.duration*.6)}i.prevT=s,r=!0}return this.scripted=this.scripted.filter(i=>i.prevT<1),r}pushScroll(e){if(this.scrollP<0)return!1;let t=this.scrollP;if(this.prevScrollP<0)return this.prevScrollP=t,!1;let r=t-this.prevScrollP;if(Math.abs(r)<5e-4)return!1;let i=this.shape.bound,s=this.workA.copy(this.scrollPath.from).lerp(this.scrollPath.to,this.prevScrollP).multiplyScalar(i),a=this.workB.copy(this.scrollPath.from).lerp(this.scrollPath.to,t).multiplyScalar(i);if(r>0){for(let o=0;o<3&&this.strokeCount1e-8&&this.strokeDir.copy(n.normalize()),this.strokeSpeed=Math.max(this.strokeSpeed,Math.min(6,Math.abs(r)*2*i/Math.max(e,1/120)))}return this.prevScrollP=t,r>0}prevScrollP=-1;update(e,t){this.strokeCount=0;let r=le.erosion;if(pt.resetRequestedAt>=0){let n=(e-pt.resetRequestedAt)/Math.max(.05,le.healing.resetFade/1e3);pt.fade=Math.max(0,1-n),n>=1&&(this.erosion&&this.erosion.clear(this.erosion.renderer),this.powder&&this.erosion&&this.powder.reset(this.erosion.renderer),this.onReset?.(),pt.resetRequestedAt=-1,pt.lastStrokeT=-1e9,pt.fade=1)}else pt.fade=Oo(pt.fade,1,.15,t);let i=Ui.x!==this.prevX||Ui.y!==this.prevY,s=null;if(Ui.inside){this.tmp.set(Ui.x,Ui.y,.5).unproject(this.camera),this.ray.origin.copy(this.camera.position),this.ray.direction.copy(this.tmp).sub(this.camera.position).normalize(),this.inv.copy(this.objectGroup.matrixWorld).invert();let n=this.objectRayOrigin.copy(this.ray.origin).applyMatrix4(this.inv),o=this.objectRayDirection.copy(this.ray.direction).transformDirection(this.inv);s=kne(this.shape,n,o,60,this.rayHit)}pt.overObject=!!s,this.hasHit=!!s,s&&(this.hitEntry.copy(s.entry).applyMatrix4(this.objectGroup.matrixWorld),this.hitExit.copy(s.exit).applyMatrix4(this.objectGroup.matrixWorld));let a=!1;if(t>0&&this.pushScripted(e,t)&&(a=!0),t>0&&this.pushScroll(t)&&(a=!0),(!Ht.enabled||Ht.cursorErodes)&&s&&this.prevHit&&i&&t>0&&this.strokeCount+wx<=Tc){let n=this.hitEntry,o=this.velocity.copy(n).sub(this.prevEntryWorld).divideScalar(t),l=o.length();if(l>.02){a=!0,this.strokeVel.lerp(o,.5),this.strokeSpeed=Oo(this.strokeSpeed,Math.min(l,r.brushSpeedRef*3),.08,t),this.strokeVel.lengthSq()>1e-6&&this.strokeDir.copy(this.strokeVel).normalize();let u=Bt.clamp(l/r.brushSpeedRef,.12,2.5),h=r.brushStrength*u,d=r.brushRadius*(.72+.28*Math.min(1,u));for(let c=0;c=nce&&ta.frame0){let n=e*.25%1,o=this.shape.bound*.9,l=-o+n*2*o,u=-o*.7+n*1.4*o,h=l+.15,d=u+.1;this.strokeSegments[0].set(l,u,-o,r.brushRadius),this.strokeSegments[1].set(h,d,o,r.brushStrength),this.strokeCount=1,this.strokeDir.set(1,.7,0).normalize(),this.strokeSpeed=r.brushSpeedRef,a=!0}a||(this.strokeSpeed=Oo(this.strokeSpeed,0,1.2,t)),pt.strokeActive=a,Ht.enabled&&Ht.healSuspended&&(pt.lastStrokeT=e),s&&(this.prevEntry.copy(s.entry),this.prevExit.copy(s.exit),this.prevEntryWorld.copy(this.hitEntry)),this.prevHit=!!s,this.prevX=Ui.x,this.prevY=Ui.y,this.resetDone}},{vec3:oce,vec4:$F,uniform:lce,uv:uce,texture3D:hce,float:oye}=Jr,dce=class{constructor(e,t,r){this.camera=e;let i=(a,n)=>{let o=new Pd,l=hce(a).sample(oce(uce(),this.uSlice)).level(0);o.colorNode=n==="erosion"?$F(l.r,l.r.mul(.6).add(l.g.mul(.8)),l.r.mul(.6),1):$F(l.r.mul(2),l.g,l.b,1),o.depthTest=!1,o.depthWrite=!1,o.transparent=!1;let u=new Mi(new Kv(1,1),o);return u.renderOrder=1e3,u.frustumCulled=!1,u};this.erosionQuad=i(t.tex,"erosion"),this.densityQuad=i(r.densityTex,"density");let s=new eb(.03,12,8);this.hitEntry=new Mi(s,new Pd({color:"#ff4040"})),this.hitExit=new Mi(s,new Pd({color:"#40a0ff"})),this.group.add(this.hitEntry,this.hitExit),e.add(this.erosionQuad,this.densityQuad)}group=new pn;erosionQuad;densityQuad;hitEntry;hitExit;uSlice=lce(.5);update(e){let t=le.debug;this.uSlice.value=t.erosionSliceZ;let r=this.camera,i=3,s=2*i*Math.tan(Bt.degToRad(r.fov/2)),a=s*r.aspect,n=s*.28;this.erosionQuad.visible=t.showErosionSlice,this.erosionQuad.scale.set(n,n,1),this.erosionQuad.position.set(-a/2+n*.6,-s/2+n*.6,-i),this.densityQuad.visible=t.showDensityGrid,this.densityQuad.scale.set(n,n,1),this.densityQuad.position.set(-a/2+n*(t.showErosionSlice?1.75:.6),-s/2+n*.6,-i);let o=t.showHitPoints&&e.hasHit;this.hitEntry.visible=o,this.hitExit.visible=o,o&&(this.hitEntry.position.copy(e.hitEntry),this.hitExit.position.copy(e.hitExit))}dispose(){this.camera.remove(this.erosionQuad,this.densityQuad),this.erosionQuad.geometry.dispose(),this.densityQuad.geometry.dispose(),this.erosionQuad.material.dispose(),this.densityQuad.material.dispose()}},cce=class{ratio=0;frameMs=0;frames=0;lastAdjust=0;update(e,t,r,i,s,a,n){let o=Math.max(.5,Math.min(r||1,i)),l=Math.min(o,Math.max(.5,n));(!this.ratio||!s)&&(this.ratio=o),this.ratio=Math.min(o,Math.max(l,this.ratio));let u=Math.min(50,Math.max(1,t));if(this.frameMs=this.frames===0?u:this.frameMs+(u-this.frameMs)*.08,this.frames++,!s||this.frames<45||e-this.lastAdjust<.5)return this.ratio;let h=1e3/Math.max(30,a),d=this.ratio;if(this.frameMs>h*1.08&&this.ratio>l){let c=this.ratio*Math.sqrt(h/this.frameMs)*.98;d=Math.min(this.ratio-.05,c),d=Math.floor(d*20)/20}else this.frameMs({logoId:mce,shape:Ht.enabled&&Ht.shape?Ht.shape:le.shape.shape,seed:le.shape.seed,particleCount:le.powder.particleCount,resolution:le.erosion.resolution,densityGrid:le.powder.densityGrid,size:le.shape.size,tubeRatio:le.shape.tubeRatio,segments:le.shape.segments,variants:le.powder.grainVariants,faceted:le.powder.facetedGrains,sprites:le.powder.sprites.enabled,spriteBlend:le.powder.sprites.seeThrough>0,strays:le.powder.strayCount,clumps:le.powder.clumpCount,dispersion:!0,voronoiCells:le.performance.voronoiCells,turbulence:le.performance.turbulence}),mce=0,Xo=new Set(typeof location<"u"?[...new URLSearchParams(location.search).keys()]:[]),qF=65536,fce={"100k":1e5,"250k":25e4,"500k":5e5,"1M":1e6,"2M":2e6},gce=class{constructor(e,t,r,i,s,a){this.renderer=e,this.scene=t,this.camera=r,this.blueNoise=i,this.logo=s,this.fractureDetail=a,this.motionGroup.add(this.objectGroup),t.add(this.motionGroup,this.lights.group,r),t.backgroundNode=this.backdrop.node,t.environment=this.env.texture,this.build(),this.post=Nhe({scene:t,camera:r,renderer:e,blueNoise:i,haze:(n,o)=>this.powder.hazeNode(n,o,r),initial:le.post,initialPerformance:le.performance,initialHaze:le.powder.hazeIntensity!==0})}motionGroup=new pn;objectGroup=new pn;backdrop=Ane();env=Cne();lights=new Rne;rig=new K5;post;shape;mesh;meshEntry;glassMatcap;materialPlanes;ice;erosion;powder;interaction;debugViews;pixelRatio=0;frozenByDial=!1;statsTimer=0;buildCount=0;timersPending=!1;fieldMaybeNonZero=!0;lastActivityT=0;idleState(e){let t=this.interaction.strokeCount>0;t&&(this.fieldMaybeNonZero=!0,this.lastActivityT=e);let r=this.erosion.stats;this.fieldMaybeNonZero&&this.erosion.statsReadT>pt.lastStrokeT+.6&&r.max<.002&&r.refrost<.002&&(this.fieldMaybeNonZero=!1);let i=pt.healing&&this.fieldMaybeNonZero,s=this.fieldMaybeNonZero&&r.refrost>.002,a=!le.performance.idleSkip||t||e0||e-this.lastActivityT<1.5||pt.resetRequestedAt>=0;return pt.fieldActive=a,pt.powderActive=n,{fieldActive:a,powderActive:n}}envSig="";backdropSig="";frameTimes=new Float64Array(30);frameTimeSum=0;frameTimeCount=0;frameTimeIndex=0;lastFrameStart=0;gpuPending=!1;gpuTimerLast=-1/0;renderSize=new fe;adaptiveResolution=new cce;offscreenRT=Xo.has("offscreen")?new er(16,16,{depthBuffer:!1,type:Si,format:pi}):null;build(){this.buildCount++;let e=pce(),t=Lm(e.seed+1),r=Ht.enabled&&Ht.shape?Ht.shape:le.shape.shape,i=r==="logo"&&!this.logo?"torus":r;this.shape=cw(i,e.size,e.tubeRatio,this.logo?.sdf);let s=Dne(this.shape,e.segments,this.logo?.geometry),a=parseInt(e.densityGrid,10),n=parseInt(e.resolution,10),o=a*a*a,l=o+16,u=l+n*n*n,h=u+qF,d=Jr.instancedArray(h+qF,"uint").toAtomic();if(this.erosion=new hx(this.renderer,this.shape,n,e.seed,d,l,u,h),qa.materials&&(this.materialPlanes=new mne(this.renderer,this.shape.bound,e.seed),this.erosion.materialPlanes=this.materialPlanes),this.erosion.skipBake=Xo.has("nobake"),qa.mesh&&(this.meshEntry=vne(s,this.camera)),qa.matcap&&(this.env.update(le.lighting),this.glassMatcap=bne(this.env.texture)),this.ice=_de({meshEntry:this.meshEntry,glassMatcap:this.glassMatcap,shape:this.shape,erosion:this.erosion,seed:e.seed,blueNoise:this.blueNoise,environment:this.env.texture,fractureDetail:this.fractureDetail,backdrop:this.backdrop.uniforms,dispersion:e.dispersion,voronoiCells:e.voronoiCells}),Xo.has("noice")){let c=new pS;c.roughness=.3,c.color.set("#bbbbbb"),this.ice.material=c}this.meshEntry&&(this.meshEntry.material.positionNode=this.ice.material.positionNode),this.mesh=new Mi(s,this.ice.material),this.mesh.castShadow=!0,this.mesh.receiveShadow=!0,this.mesh.frustumCulled=!1,this.objectGroup.add(this.mesh),this.powder=new ice({enabled:!Xo.has("nopowder"),renderer:this.renderer,scene:this.scene,shape:this.shape,erosion:this.erosion,seed:e.seed,rand:t,count:fce[e.particleCount]??1e6,variants:e.variants,strays:e.strays,densityRes:a,clumpCount:e.clumps,objectGroup:this.objectGroup,turbulence:e.turbulence,atomics:d,countersOffset:o,healOffset:l,cellOffset:u,flightOffset:h,fieldRes:n,backdrop:this.backdrop.uniforms,fractureDetail:this.fractureDetail,iceUniforms:this.ice.uniforms,iceFeatures:this.ice.features,environment:this.env.texture}),this.interaction=new XF(this.shape,this.objectGroup,this.camera,this.erosion,this.powder),this.debugViews=new dce(this.camera,this.erosion,this.powder),this.scene.add(this.debugViews.group)}disposeBuilt(){this.materialPlanes?.dispose(),this.materialPlanes=void 0,this.meshEntry?.dispose(),this.meshEntry=void 0,this.glassMatcap?.dispose(),this.glassMatcap=void 0,this.debugViews.dispose(),this.scene.remove(this.debugViews.group),this.objectGroup.remove(this.mesh),this.mesh.geometry.dispose(),this.ice.material.dispose(),this.erosion.dispose(),this.powder.dispose()}rebuild(){this.disposeBuilt(),this.build(),this.post.post.needsUpdate=!0}updateEnvironment(){let e=le.lighting,t=JSON.stringify([e.envSoftbox,e.envRim,e.envFill,e.key,e.fill,e.fillColor,e.fillGroundColor,e.fillReflectionStrength,e.rimColor,e.rimElevation,e.rimAzimuth,e.rimSize,e.accentCool,e.accentWarm]);t!==this.envSig&&(this.envSig=t,this.env.update(e)),this.scene.environmentIntensity=le.ice.envIntensity}updateBackdrop(e){let t=le.lighting.backdrop,r=Ht.enabled?Ht.backdrop:null,i=this.backdrop.uniforms,s=r?.top??t.top,a=r?.mid??t.mid,n=r?.bottom??t.bottom,o=r?.centerX??t.centerX,l=r?.centerY??t.centerY,u=r?.radius??t.radius,h=r?.falloff??t.falloff,d=`${s}|${a}|${n}|${o}|${l}|${u}|${h}|${t.noise}`;d!==this.backdropSig&&(this.backdropSig=d,i.uTop.value.set(s),i.uMid.value.set(a),i.uBottom.value.set(n),i.uCenter.value.set(o,l),i.uRadius.value=u,i.uFalloff.value=h,i.uNoise.value=t.noise),i.uTime.value=e}onBeforeRender=null;onBeforeSimulation=null;onObjectTransform=null;onCameraTransform=null;frame(e,t,r=!0){ta.t=e,ta.dt=t,ta.frame++;let i=e*1e3,s=1e3/le.performance.targetFps,a=!Xo.has("nopost")&&le.performance.nativePostEffects&&le.performance.upscaler!=="native",n=this.adaptiveResolution.updateScene(e,s,window.devicePixelRatio||1,le.post.pixelRatioCap,le.performance.adaptiveResolution&&le.performance.dynamicSceneResolution,le.performance.targetFps,le.performance.minPixelRatio,le.performance.sceneResolutionScale,le.performance.minSceneResolutionScale,a);if(pt.pixelRatio=n.sourceRatio,pt.outputPixelRatio=n.outputRatio,pt.sceneResolutionScale=n.sceneScale,n.outputRatio!==this.pixelRatio||this.renderer.getPixelRatio()!==n.outputRatio){this.pixelRatio=n.outputRatio,this.renderer.setPixelRatio(n.outputRatio);let h=this.renderer.getSize(this.renderSize);this.renderer.setSize(h.x,h.y,!1)}this.onCameraTransform||this.rig.update(this.camera,this.objectGroup,e,t),Ht.enabled&&Ht.framing?this.motionGroup.position.set(Ht.objectX,Ht.objectY,Ht.objectZ):this.motionGroup.position.set(le.shape.offsetX,le.shape.offsetY,le.shape.offsetZ),this.objectGroup.position.set(0,0,0),this.onObjectTransform&&this.onObjectTransform(e),this.motionGroup.updateMatrixWorld(!0),this.onCameraTransform?.(e),this.updateEnvironment(),this.updateBackdrop(e),pt.hoverAmount=Oo(pt.hoverAmount,pt.overObject?1:0,.4/3,t),this.lights.update(e,pt.hoverAmount),this.interaction.update(e,t),this.onBeforeSimulation?.(e,t),this.debugViews.update(this.interaction),Xo.has("noice")||(this.ice.update(e,t,this.lights.key,this.objectGroup),this.ice.uniforms.hover.value=pt.hoverAmount);let o=performance.now(),l=this.idleState(e);if(t>0&&(Xo.has("noerosion")||this.erosion.step(this.renderer,e,t,this.interaction.strokeSegments,this.interaction.strokeCount,l.fieldActive)),Xo.has("nopowder")||this.powder.step(this.renderer,e,t,this.interaction,this.lights.key,l),pt.computeMs=performance.now()-o,le.debug.stats||le.performance.idleSkip){this.statsTimer+=Math.max(t,1/120);let h=this.fieldMaybeNonZero?.25:.4;(this.statsTimer>h||this.offscreenRT)&&(this.statsTimer=0,this.erosion.readStats(this.renderer,e),pt.erosion=this.erosion.stats)}this.camera.updateMatrixWorld(),this.onBeforeRender&&this.onBeforeRender(e),this.powder.updateCamera(this.camera,this.renderer.getSize(this.renderSize).y*n.sourceRatio);let u=this.camera.position.distanceTo(this.rig.lookAt);if(this.post.update(le.post,le.performance,u,pt.sceneFade,le.powder.hazeIntensity,e,le.version),this.materialPlanes?.update(),this.post.setSceneResolution(n.sceneScale),this.meshEntry?.update(this.mesh,n.sceneScale),this.mesh.material.wireframe=le.debug.wireframe,this.offscreenRT){let h=this.renderer.getSize(this.renderSize),d=this.renderer.getPixelRatio(),c=Math.max(1,Math.floor(h.x*d)),m=Math.max(1,Math.floor(h.y*d));(this.offscreenRT.width!==c||this.offscreenRT.height!==m)&&this.offscreenRT.setSize(c,m),this.renderer.setRenderTarget(this.offscreenRT)}if(this.post.setHazeResolution(le.performance.hazeResolution==="quarter"?.25:le.performance.hazeResolution==="half"?.5:1),r&&(this.renderer._nodes.nodeFrame.update(),this.post.setFrame(Math.round(e*60)),Xo.has("nopost")?this.renderer.render(this.scene,this.camera):this.post.post.render()),this.offscreenRT&&this.renderer.setRenderTarget(null),le.performance.gpuTimers&&!this.timersPending&&e-this.gpuTimerLast>=.25){let h=this.renderer;h.backend?.trackTimestamp&&(this.timersPending=!0,this.gpuTimerLast=e,Promise.all([h.resolveTimestampsAsync("render"),h.resolveTimestampsAsync("compute")]).then(()=>{pt.gpuRenderMs=h.info.render.timestamp||0,pt.gpuComputeMs=h.info.compute.timestamp||0,this.timersPending=!1}).catch(()=>{this.timersPending=!1}))}if(this.offscreenRT&&!this.gpuPending){let h=this.renderer.backend?.device?.queue;h?.onSubmittedWorkDone&&(this.gpuPending=!0,h.onSubmittedWorkDone().then(()=>{pt.gpuFrames++,this.gpuPending=!1}).catch(()=>{this.gpuPending=!1}))}}resetSim(){this.erosion.clear(this.renderer),this.erosion.crumbleUntil=-1,this.erosion.u.crumbleUntil.value=-1,this.powder.reset(this.renderer),this.interaction=new XF(this.shape,this.objectGroup,this.camera,this.erosion,this.powder),this.rig=new K5,this.mesh.visible=!0,pt.strokeActive=!1,pt.overObject=!1,pt.lastStrokeT=-1e9,pt.healing=!1,pt.resetRequestedAt=-1,pt.fade=1,pt.sceneFade=1,pt.hoverAmount=0,pt.fieldActive=!0,pt.powderActive=!0,this.fieldMaybeNonZero=!0,this.lastActivityT=0,this.statsTimer=0,ta.t=0,ta.dt=1/60,ta.frame=0,ta.paused=!1}async dumpShader(){return this.renderer.debug.getShaderAsync(this.scene,this.camera,this.mesh)}async readback(){if(!this.offscreenRT)return null;let e=this.offscreenRT,t=e.width,r=e.height,i=await this.renderer.readRenderTargetPixelsAsync(e,0,0,t,r),s=i.length>=Math.ceil(t*4/256)*256*r?Math.ceil(t*4/256)*256:t*4,a=0,n=0,o=document.createElement("canvas");o.width=t,o.height=r;let l=o.getContext("2d"),u=l.createImageData(t,r);for(let h=0;hn&&(n=g)}return l.putImageData(u,0,0),{mean:a/(t*r),max:n,png:o.toDataURL("image/png"),w:t,h:r}}dispose(){this.disposeBuilt(),this.post.dispose(),this.scene.remove(this.motionGroup,this.lights.group),this.scene.backgroundNode=null,this.scene.environment=null,this.env.texture.dispose(),this.fractureDetail?.dispose()}},Mx={ice:{ior:1.445,dispersion:.155,thicknessScale:2.41,attenuationDistance:4.47,attenuationColor:"#524c4c",baseRoughness:.5,frost:{scale:.2,threshold:1,softness:.36,roughness:0,diffuse:.56,crystalBump:.37,crystalScale:67},cracks:{largeScale:8,warp:0,warpScale:2.2,coverage:.01,regionScale:1.35,regionCoverage:0,veinScale:20,veinContrast:.57,width:.0175,brightness:.25,darkness:1,refraction:.008,surfaceStrength:0,steps:21,fineCracks:!0,fineScale:10.4,fineAmount:0,fineCoverage:.45,fineNearLarge:1},smudges:{amount:0,coverage:.29,maskScale:3.1,anisotropy:5.5,roughness:.02,whiteness:.035,scale:.5},bumps:{microBump:.32,microScale:121,microCoverage:.76,rippleBump:.45,rippleScale:2.5,maskScale:3.6},crumbleGlow:.16,edgeWhiteness:.09,clearcoat:0,clearcoatRoughness:.085,envIntensity:.28,specularIntensity:.65,interiorScatter:.05},performance:{adaptiveResolution:!0,targetFps:60,minPixelRatio:.75,sceneResolutionScale:1,dynamicSceneResolution:!0,minSceneResolutionScale:.35,upscaler:"taau",upscaleSharpness:.2,nativePostEffects:!0,idleSkip:!0,adaptiveSteps:!0,voronoiCells:"27",hazeResolution:"quarter",turbulence:"fast",gpuTimers:!0},lighting:{key:{color:"#ffffff",intensity:12,elevation:62,azimuth:-10.5,size:3,hoverBoost:.3},fill:1.5,fillColor:"#ffffff",fillGroundColor:"#07a4a6",rim:5,rimColor:"#0b82ea",rimElevation:9.5,shadow:{intensity:0,softness:6,samples:1,mapSize:"1024",bias:-6e-4},sway:{amplitude:.118,period:35},backdrop:{top:"#212121",mid:"#171717",bottom:"#030303",centerX:.19,centerY:1.5,radius:.78,falloff:4,noise:0},envSoftbox:1.22,envRim:2.43,envFill:1,rimAzimuth:-180,rimAngle:81,rimSize:2.05,fillReflectionStrength:2,accentCool:{intensity:4,reflection:3,elevation:25,azimuth:-65,size:2.85,color:"#c7ddff"},accentWarm:{intensity:3.64,reflection:3,elevation:34,azimuth:127,size:3,color:"#ff0000"}},post:{dof:{enabled:!1,focusBias:-.43,aperture:4,range:12},bloom:{threshold:.28,intensity:0,radius:.11},monochrome:0,tonemap:"aces",exposure:1.3,contrast:1.15,blackLift:0,vignette:{strength:.325,softness:1.175,radius:1.11},grain:{strength:0,size:1,speed:0,shadowWeight:.28,backgroundStrength:.035,backgroundSize:2,backgroundSpeed:0},dither:!0,aaMode:"traa",pixelRatioCap:2}},yce=()=>({version:1,name:"Untitled shot",orientation:"target",anchorSpace:"local",objectMotion:"existing",keys:[]});function c2(e){if(e==null||e==="")return yce();let t=typeof e=="string"?JSON.parse(e):e;if(t?.version!==1||!Array.isArray(t.keys)||t.keys.length>64)throw Error("Camera track must be version 1 with at most 64 keys.");let r=(o,l,u)=>{if(!l.includes(o))throw Error("Invalid "+u);return o},i=(o,l,u,h)=>{if(typeof o!="number"||!Number.isFinite(o)||ou)throw Error("Invalid "+h);return o},s=(o,l,u)=>{if(!Array.isArray(o)||o.length!==l)throw Error("Invalid "+u);return o.map(h=>i(h,-1e4,1e4,u))},a={version:1,name:String(t.name||"Untitled shot").slice(0,100),orientation:r(t.orientation,["target","free"],"orientation"),anchorSpace:r(t.anchorSpace,["world","local"],"anchor space"),objectMotion:r(t.objectMotion,["existing","stationary"],"object motion"),keys:t.keys.map(o=>{let l=s(o.quaternion,4,"quaternion");if(Math.abs(Math.hypot(...l)-1)>.001)throw Error("Camera quaternion must be normalized.");return{id:String(o.id).slice(0,100),time:i(o.time,0,120,"key time"),position:s(o.position,3,"position"),target:s(o.target,3,"target"),quaternion:l,fov:i(o.fov,5,120,"FOV"),zoom:i(o.zoom,.1,10,"zoom"),roll:i(o.roll,-720,720,"roll"),ease:r(o.ease,["flow","linear","ease-in-out"],"ease")}}).sort((o,l)=>o.time-l.time)},n=new Set;for(let o=0;o0?(t-a.time)/o:0,u=a.ease==="ease-in-out"?l*l*(3-2*l):l,h=g=>{if(!o)return g(a);if(a.ease!=="flow")return Bt.lerp(g(a),g(n),u);let y=i[Math.max(0,s-1)],b=i[Math.min(i.length-1,s+2)],v=(g(n)-g(y))/Math.max(n.time-y.time,1e-6),S=(g(b)-g(a))/Math.max(b.time-a.time,1e-6);return(2*u**3-3*u*u+1)*g(a)+(u**3-2*u*u+u)*o*v+(-2*u**3+3*u*u)*g(n)+(u**3-u*u)*o*S},d=new F(...[0,1,2].map(g=>h(y=>y.position[g]))),c=new F(...[0,1,2].map(g=>h(y=>y.target[g])));e.anchorSpace==="local"&&c.applyMatrix4(r);let m=e.orientation==="target"?new si().setFromRotationMatrix(new We().lookAt(d,c,new F(0,1,0))):new si(...a.quaternion).slerp(new si(...n.quaternion),u);return m.multiply(new si().setFromAxisAngle(new F(0,0,1),Bt.degToRad(h(g=>g.roll)))),{position:d,quaternion:m,target:c,roll:h(g=>g.roll),fov:Bt.clamp(h(g=>g.fov),5,120),zoom:Bt.clamp(h(g=>g.zoom),.1,10)}}function vce(e,t,r,i,s){let a=YF(t,r,i);return e.position.copy(a.position),e.quaternion.copy(a.quaternion),e.fov=a.fov,e.zoom=a.zoom,e.updateProjectionMatrix(),e.updateMatrixWorld(!0),s.copy(a.target),a}var bce=e=>Math.max(0,Math.min(1,e));function p2(e,t){let r=l=>(l=bce(l),l*l*l*(l*(l*6-15)+10)),i=(l,u)=>l<=u?r(l/Math.max(u,1e-6)):1-r((l-u)/Math.max(1-u,1e-6)),s=[{t0:e.logoBreak-.65,tBreakEnd:e.form1,t1:e.form1+2.8,yaw:t.turnYaw,pitch:t.turnPitch,z:t.approach,keep:!1},{t0:e.break1-.65,tBreakEnd:e.form2,t1:e.form2+2.8,yaw:t.turnYaw2,pitch:t.turnPitch2,z:-t.retreat,keep:!1},{t0:e.break2-.65,tBreakEnd:e.fadeOut+1.5,t1:e.fadeOut+1.5,yaw:t.finalYaw,pitch:t.finalPitch,z:t.approach+t.zoomIn,keep:!0}];function a(l){let u=0,h=0,d=0;for(let c of s){let m=(l-c.t0)/Math.max(c.t1-c.t0,1e-6);if(m<=0)continue;u+=c.yaw*r(m);let g=(c.tBreakEnd-c.t0)/Math.max(c.t1-c.t0,1e-6),y=c.keep?r(m):i(m,g);h+=c.pitch*y,d+=c.z*y}return{yaw:u,pitch:h,z:d}}let n=l=>t.driftYaw*l,o=l=>t.idleYaw*Math.sin(2*Math.PI*l/9);return function(l){let u=a(l),h=t.driftSway*Math.sin(2*Math.PI*l/11);return{yaw:u.yaw+n(l)+o(l),pitch:u.pitch+h,z:u.z+.0875*t.driftSway*Math.sin(2*Math.PI*l/11)}}}var Tce=(e,t)=>e{let c=a(d);return new si().setFromEuler(new cn(c.pitch*Math.PI/180,c.yaw*Math.PI/180,0,"YXZ"))},l=s?new si:o(e),u=s||i===0?new si:o((i===1?t.form1:t.form2)+2.8).invert(),h=new F(0,.05,s?0:n.z);return{rotation:l,facing:u,position:h,matrix:new We().compose(h,l.clone().multiply(u),new F(1,1,1))}}var{lerp:Sh}=Bt,us=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];for(let e=0;e<256;e++)us[256+e]=us[e];function m2(e){return e*e*e*(e*(e*6-15)+10)}function tu(e,t,r,i){let s=e&15,a=s<8?t:r,n=s<4?r:s==12||s==14?t:i;return((s&1)==0?a:-a)+((s&2)==0?n:-n)}var _ce=class{noise(e,t,r){let i=Math.floor(e),s=Math.floor(t),a=Math.floor(r),n=i&255,o=s&255,l=a&255;e-=i,t-=s,r-=a;let u=e-1,h=t-1,d=r-1,c=m2(e),m=m2(t),g=m2(r),y=us[n]+o,b=us[y]+l,v=us[y+1]+l,S=us[n+1]+o,T=us[S]+l,w=us[S+1]+l;return Sh(Sh(Sh(tu(us[b],e,t,r),tu(us[T],u,t,r),c),Sh(tu(us[v],e,h,r),tu(us[w],u,h,r),c),m),Sh(Sh(tu(us[b+1],e,t,d),tu(us[T+1],u,t,d),c),Sh(tu(us[v+1],e,h,d),tu(us[w+1],u,h,d),c),m),g)}},wce=Io.textMeshDetail;function f2(e){return typeof e=="number"&&Number.isFinite(e)?Math.max(1,Math.min(4,Math.round(e))):wce}function Mce(e,t){let r=f2(t);return{maxEdge:e/(2*r),extraTriangles:16e4*r}}function Nce(e,t,r,i){let s=[],a=new Map,n=[],o=r*r,l=t.length/3+i,u=t.length/3,h=(v,S)=>vv.length2>S.length2||v.length2===S.length2&&(v.a0;){let T=S-1>>1;if(!d(v,n[T]))break;n[S]=n[T],S=T}n[S]=v}function m(){let v=n[0],S=n.pop();if(n.length){let T=0;for(;T*2+1o&&c(E)}E.faces.add(w)}}function y(v){let S=s[v];s[v]=null;for(let T=0;T<3;T++){let w=h(S[T],S[(T+1)%3]),N=a.get(w);N.faces.delete(v),N.faces.size||a.delete(w)}}for(let v=0;vl)continue;let T=e.length/3;e.push((e[v.a*3]+e[v.b*3])/2,(e[v.a*3+1]+e[v.b*3+1])/2,(e[v.a*3+2]+e[v.b*3+2])/2);let w=S.map(N=>s[N]);for(let N of S)y(N);for(let N of w){let C=N.findIndex((I,O)=>h(I,N[(O+1)%3])===h(v.a,v.b)),R=N[C],E=N[(C+1)%3],P=N[(C+2)%3];g(R,T,P),g(T,E,P)}u+=S.length}let b=[];for(let v of s)v&&b.push(v[0],v[1],v[2]);return b}function Ace(e,t){let r=[];for(let u=0;uh-d)){let h=e[u*3],d=e[u*3+1],c=e[u*3+2],m=Math.floor(h/a),g=Math.floor(d/a),y=Math.floor(c/a),b=u;for(let v=-1;v<=1;v++)for(let S=-1;S<=1;S++)for(let T=-1;T<=1;T++)for(let w of n.get(`${m+v}:${g+S}:${y+T}`)||[])Math.hypot(h-e[w*3],d-e[w*3+1],c-e[w*3+2])<=a&&(b=Math.min(b,w));if(o.set(u,b),b===u){let v=`${m}:${g}:${y}`,S=n.get(v)||[];S.push(u),n.set(v,S)}}let l=[];for(let u=0;uo.get(m)??m);h!==d&&d!==c&&c!==h&&l.push(h,d,c)}return l}var Cce=Io.logoMeshDetail;function g2(e){return typeof e=="number"&&Number.isFinite(e)?Math.max(1,Math.min(4,Math.round(e))):Cce}function Rce(e,t){e.computeBoundingBox();let r=e.boundingBox,i=Math.max(r.max.x-r.min.x,r.max.y-r.min.y,r.max.z-r.min.z,.001),s=g2(t);return{maxEdge:i/(32*s),extraTriangles:16e4*s}}var ZF=Object.freeze({strength:Io.deformStrength,scale:Io.deformScale,seed:Io.deformSeed});function JF(e){if(!Number.isFinite(e)||e<.001||e>.5)throw new RangeError(`Noise feature size ${e} is outside 0.001\u20130.5. Edit this value to load the preset; other settings have not been changed.`);return e}function Nx(e){let t=(r,i,s)=>{let a=e?.[r];return typeof a=="number"&&Number.isFinite(a)?Math.max(i,Math.min(s,a)):ZF[r]};return{strength:t("strength",0,.08),scale:JF(e?.scale??ZF.scale),seed:Math.round(t("seed",0,65535))}}function Ece(e){let{strength:t,scale:r,seed:i}=Nx(e),s=new _ce,a=Lm(i),n=Array.from({length:3},()=>[a()*256,a()*256,a()*256]);function o(l,u,h){let d=n[h],c=l/r+d[0],m=u/r+d[1],g=d[2],y=0,b=1;for(let v=0;v<3;v++)y+=b*s.noise(c,m,g),c=c*2+17.3,m=m*2+9.1,g=g*2+31.7,b*=.5;return y/1.75}return(l,u,h)=>t===0?[l,u,h]:(l+=t*o(u,h,0),u+=t*o(h,l,1),h+=t*o(l,u,2),[l,u,h])}function Pce(e,t,r){let i=t,s=t.length/3+6e3,a=r*r,n=(o,l)=>oa&&(l.set(n(y,b),-1),u++)}}if(!l.size||i.length/3+u>s)break;for(let[d]of l){let[c,m]=d.split(":").map(Number),g=e.length/3;e.push((e[c*3]+e[m*3])/2,(e[c*3+1]+e[m*3+1])/2,(e[c*3+2]+e[m*3+2])/2),l.set(d,g)}let h=[];for(let d=0;de.fadeOut+QF;function Fce(e,t){let r=.3+t+.6,i=e.logoBreak,s=Math.max(e.form1,i+r),a=Math.max(e.break1,s+2.8+.65),n=Math.max(e.form2,a+r),o=Math.max(e.break2,n+2.8+.65),l=Math.max(e.fadeOut,o+r);return{logoBreak:i,form1:s,break1:a,form2:n,break2:o,fadeOut:l}}String.prototype.codePointAt||(function(){var e=(function(){try{var r={},i=Object.defineProperty,s=i(r,r,r)&&i}catch{}return s})(),t=function(r){if(this==null)throw TypeError();var i=String(this),s=i.length,a=r?Number(r):0;if(a!=a&&(a=0),!(a<0||a>=s)){var n=i.charCodeAt(a),o;return n>=55296&&n<=56319&&s>a+1&&(o=i.charCodeAt(a+1),o>=56320&&o<=57343)?(n-55296)*1024+o-56320+65536:n}};e?e(String.prototype,"codePointAt",{value:t,configurable:!0,writable:!0}):String.prototype.codePointAt=t})();var x2=0,KF=-3;function sf(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function Lce(e,t){this.source=e,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new sf,this.dtree=new sf}var eL=new sf,tL=new sf,v2=new Uint8Array(30),b2=new Uint16Array(30),rL=new Uint8Array(30),iL=new Uint16Array(30),kce=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sL=new sf,qn=new Uint8Array(320);function aL(e,t,r,i){var s,a;for(s=0;s>>=1,t}function Yn(e,t,r){if(!t)return r;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>16-t;return e.tag>>>=t,e.bitcount-=t,i+r}function S2(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>=1,++s,r+=t.table[s],i-=t.table[s];while(i>=0);return e.tag=a,e.bitcount-=s,t.trans[r+i]}function Uce(e,t,r){var i,s,a,n,o,l;for(i=Yn(e,5,257),s=Yn(e,5,1),a=Yn(e,4,4),n=0;n<19;++n)qn[n]=0;for(n=0;n8;)e.sourceIndex--,e.bitcount-=8;if(t=e.source[e.sourceIndex+1],t=256*t+e.source[e.sourceIndex],r=e.source[e.sourceIndex+3],r=256*r+e.source[e.sourceIndex+2],t!==(~r&65535))return KF;for(e.sourceIndex+=4,i=t;i;--i)e.dest[e.destLen++]=e.source[e.sourceIndex++];return e.bitcount=0,x2}function Vce(e,t){var r=new Lce(e,t),i,s,a;do{switch(i=Oce(r),s=Yn(r,2,0),s){case 0:a=zce(r);break;case 1:a=oL(r,eL,tL);break;case 2:Uce(r,r.ltree,r.dtree),a=oL(r,r.ltree,r.dtree);break;default:a=KF}if(a!==x2)throw new Error("Data error")}while(!i);return r.destLenthis.x2&&(this.x2=e)),typeof t=="number"&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),tthis.y2&&(this.y2=t))},$o.prototype.addX=function(e){this.addPoint(e,null)},$o.prototype.addY=function(e){this.addPoint(null,e)},$o.prototype.addBezier=function(e,t,r,i,s,a,n,o){var l=[e,t],u=[r,i],h=[s,a],d=[n,o];this.addPoint(e,t),this.addPoint(n,o);for(var c=0;c<=1;c++){var m=6*l[c]-12*u[c]+6*h[c],g=-3*l[c]+9*u[c]-9*h[c]+3*d[c],y=3*u[c]-3*l[c];if(g===0){if(m===0)continue;var b=-y/m;0=0&&l>0&&(o+=" "),o+=t(u)}return o}for(var i="",s=0;s=0&&e<=255,"Byte value should be between 0 and 255."),[e]},wt.BYTE=rn(1),He.CHAR=function(e){return[e.charCodeAt(0)]},wt.CHAR=rn(1),He.CHARARRAY=function(e){typeof e>"u"&&(e="",console.warn("Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name."));for(var t=[],r=0;r"u"?0:e.length},He.USHORT=function(e){return[e>>8&255,e&255]},wt.USHORT=rn(2),He.SHORT=function(e){return e>=hL&&(e=-(2*hL-e)),[e>>8&255,e&255]},wt.SHORT=rn(2),He.UINT24=function(e){return[e>>16&255,e>>8&255,e&255]},wt.UINT24=rn(3),He.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]},wt.ULONG=rn(4),He.LONG=function(e){return e>=dL&&(e=-(2*dL-e)),[e>>24&255,e>>16&255,e>>8&255,e&255]},wt.LONG=rn(4),He.FIXED=He.ULONG,wt.FIXED=wt.ULONG,He.FWORD=He.SHORT,wt.FWORD=wt.SHORT,He.UFWORD=He.USHORT,wt.UFWORD=wt.USHORT,He.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,e&255]},wt.LONGDATETIME=rn(8),He.TAG=function(e){return bt.argument(e.length===4,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},wt.TAG=rn(4),He.Card8=He.BYTE,wt.Card8=wt.BYTE,He.Card16=He.USHORT,wt.Card16=wt.USHORT,He.OffSize=He.BYTE,wt.OffSize=wt.BYTE,He.SID=He.USHORT,wt.SID=wt.USHORT,He.NUMBER=function(e){return e>=-107&&e<=107?[e+139]:e>=108&&e<=1131?(e=e-108,[(e>>8)+247,e&255]):e>=-1131&&e<=-108?(e=-e-108,[(e>>8)+251,e&255]):e>=-32768&&e<=32767?He.NUMBER16(e):He.NUMBER32(e)},wt.NUMBER=function(e){return He.NUMBER(e).length},He.NUMBER16=function(e){return[28,e>>8&255,e&255]},wt.NUMBER16=rn(3),He.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,e&255]},wt.NUMBER32=rn(5),He.REAL=function(e){var t=e.toString(),r=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(r){var i=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*i)/i).toString()}for(var s="",a=0,n=t.length;a>8&255,t[t.length]=i&255}return t},wt.UTF16=function(e){return e.length*2};var _2={"x-mac-croatian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u03A9\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uF8FF\xA9\u2044\u20AC\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7","x-mac-cyrillic":"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E","x-mac-gaelic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u1E02\xB1\u2264\u2265\u1E03\u010A\u010B\u1E0A\u1E0B\u1E1E\u1E1F\u0120\u0121\u1E40\xE6\xF8\u1E41\u1E56\u1E57\u027C\u0192\u017F\u1E60\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u1E61\u1E9B\xFF\u0178\u1E6A\u20AC\u2039\u203A\u0176\u0177\u1E6B\xB7\u1EF2\u1EF3\u204A\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u2663\xD2\xDA\xDB\xD9\u0131\xDD\xFD\u0174\u0175\u1E84\u1E85\u1E80\u1E81\u1E82\u1E83","x-mac-greek":"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\u20AC\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\xB7\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\xAD","x-mac-icelandic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-inuit":"\u1403\u1404\u1405\u1406\u140A\u140B\u1431\u1432\u1433\u1434\u1438\u1439\u1449\u144E\u144F\u1450\u1451\u1455\u1456\u1466\u146D\u146E\u146F\u1470\u1472\u1473\u1483\u148B\u148C\u148D\u148E\u1490\u1491\xB0\u14A1\u14A5\u14A6\u2022\xB6\u14A7\xAE\xA9\u2122\u14A8\u14AA\u14AB\u14BB\u14C2\u14C3\u14C4\u14C5\u14C7\u14C8\u14D0\u14EF\u14F0\u14F1\u14F2\u14F4\u14F5\u1505\u14D5\u14D6\u14D7\u14D8\u14DA\u14DB\u14EA\u1528\u1529\u152A\u152B\u152D\u2026\xA0\u152E\u153E\u1555\u1556\u1557\u2013\u2014\u201C\u201D\u2018\u2019\u1558\u1559\u155A\u155D\u1546\u1547\u1548\u1549\u154B\u154C\u1550\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u157C\u0141\u0142","x-mac-ce":"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7",macintosh:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-romanian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u0218\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\u0103\u0219\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\u021A\u021B\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-turkish":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\uF8A0\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"};Ec.MACSTRING=function(e,t,r,i){var s=_2[i];if(s!==void 0){for(var a="",n=0;n=128&&(a=r[a],a===void 0))return;i[s]=a}return i}},wt.MACSTRING=function(e,t){var r=He.MACSTRING(e,t);return r!==void 0?r.length:0};function w2(e){return e>=-128&&e<=127}function jce(e,t,r){for(var i=0,s=e.length;t>8&255,l+256&255)}return a}He.VARDELTAS=function(e){for(var t=0,r=[];t=-128&&i<=127?t=Hce(e,t,r):t=Xce(e,t,r)}return r},He.INDEX=function(e){for(var t=1,r=[t],i=[],s=0;s>8,t[d+1]=c&255,t=t.concat(i[h])}return t},wt.TABLE=function(e){for(var t=0,r=e.fields.length,i=0;i0)return new ve(this.data,this.offset+t).parseStruct(e)},ve.prototype.parsePointer32=function(e){var t=this.parseOffset32();if(t>0)return new ve(this.data,this.offset+t).parseStruct(e)},ve.prototype.parseListOfLists=function(e){for(var t=this.parseOffset16List(),r=t.length,i=this.relativeOffset,s=new Array(r),a=0;a>1,t.skip("uShort",3),e.glyphIndexMap={};for(var n=new ot.Parser(r,i+s+14),o=new ot.Parser(r,i+s+16+a*2),l=new ot.Parser(r,i+s+16+a*4),u=new ot.Parser(r,i+s+16+a*6),h=i+s+16+a*8,d=0;d=0;s-=1){var a=ot.getUShort(e,t+4+s*8),n=ot.getUShort(e,t+4+s*8+2);if(a===3&&(n===0||n===1||n===10)||a===0&&(n===0||n===1||n===2||n===3||n===4)){i=ot.getULong(e,t+4+s*8+4);break}}if(i===-1)throw new Error("No valid cmap sub-tables found.");var o=new ot.Parser(e,t+i);if(r.format=o.parseUShort(),r.format===12)Kce(r,o);else if(r.format===4)epe(r,o,e,t,i);else throw new Error("Only format 4 and 12 cmap tables are supported (found format "+r.format+").");return r}function rpe(e,t,r){e.segments.push({end:t,start:t,delta:-(t-r),offset:0,glyphIndex:r})}function ipe(e){e.segments.push({end:65535,start:65535,delta:1,offset:0})}function spe(e){var t=!0,r;for(r=e.length-1;r>0;r-=1){var i=e.get(r);if(i.unicode>65535){console.log("Adding CMAP format 12 (needed!)"),t=!1;break}}var s=[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:t?1:2},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:t?12:20}];t||(s=s.concat([{name:"cmap12PlatformID",type:"USHORT",value:3},{name:"cmap12EncodingID",type:"USHORT",value:10},{name:"cmap12Offset",type:"ULONG",value:0}])),s=s.concat([{name:"format",type:"USHORT",value:4},{name:"cmap4Length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);var a=new rt.Table("cmap",s);for(a.segments=[],r=0;r>4,n=s&15;if(a===r||(t+=i[a],n===r))break;t+=i[n]}return parseFloat(t)}function xpe(e,t){var r,i,s,a;if(t===28)return r=e.parseByte(),i=e.parseByte(),r<<8|i;if(t===29)return r=e.parseByte(),i=e.parseByte(),s=e.parseByte(),a=e.parseByte(),r<<24|i<<16|s<<8|a;if(t===30)return ype(e);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return r=e.parseByte(),(t-247)*256+r+108;if(t>=251&&t<=254)return r=e.parseByte(),-(t-251)*256-r-108;throw new Error("Invalid b0 "+t)}function vpe(e){for(var t={},r=0;r>1,l.length=0,h=!0}function R(E){for(var P,I,O,L,X,z,H,ue,ne,re,ce,ge,ye=0;ye1&&!h&&(w=l.shift()+v,h=!0),m+=l.pop(),N(c,m);break;case 5:for(;l.length>0;)c+=l.shift(),m+=l.shift(),o.lineTo(c,m);break;case 6:for(;l.length>0&&(c+=l.shift(),o.lineTo(c,m),l.length!==0);)m+=l.shift(),o.lineTo(c,m);break;case 7:for(;l.length>0&&(m+=l.shift(),o.lineTo(c,m),l.length!==0);)c+=l.shift(),o.lineTo(c,m);break;case 8:for(;l.length>0;)i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 10:X=l.pop()+y,z=g[X],z&&R(z);break;case 11:return;case 12:switch(oe=E[ye],ye+=1,oe){case 35:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n+l.shift(),ne=H+l.shift(),re=ue+l.shift(),ce=ne+l.shift(),ge=re+l.shift(),c=ce+l.shift(),m=ge+l.shift(),l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 34:i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n,ne=H+l.shift(),re=n,ce=ne+l.shift(),ge=m,c=ce+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 36:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n,ne=H+l.shift(),re=n,ce=ne+l.shift(),ge=re+l.shift(),c=ce+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;case 37:i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),H=a+l.shift(),ue=n+l.shift(),ne=H+l.shift(),re=ue+l.shift(),ce=ne+l.shift(),ge=re+l.shift(),Math.abs(ce-c)>Math.abs(ge-m)?c=ce+l.shift():m=ge+l.shift(),o.curveTo(i,s,a,n,H,ue),o.curveTo(ne,re,ce,ge,c,m);break;default:console.log("Glyph "+t.index+": unknown operator 1200"+oe),l.length=0}break;case 14:l.length>0&&!h&&(w=l.shift()+v,h=!0),d&&(o.closePath(),d=!1);break;case 18:C();break;case 19:case 20:C(),ye+=u+7>>3;break;case 21:l.length>2&&!h&&(w=l.shift()+v,h=!0),m+=l.pop(),c+=l.pop(),N(c,m);break;case 22:l.length>1&&!h&&(w=l.shift()+v,h=!0),c+=l.pop(),N(c,m);break;case 23:C();break;case 24:for(;l.length>2;)i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);c+=l.shift(),m+=l.shift(),o.lineTo(c,m);break;case 25:for(;l.length>6;)c+=l.shift(),m+=l.shift(),o.lineTo(c,m);i=c+l.shift(),s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 26:for(l.length%2&&(c+=l.shift());l.length>0;)i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a,m=n+l.shift(),o.curveTo(i,s,a,n,c,m);break;case 27:for(l.length%2&&(m+=l.shift());l.length>0;)i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n,o.curveTo(i,s,a,n,c,m);break;case 28:P=E[ye],I=E[ye+1],l.push((P<<24|I<<16)>>16),ye+=2;break;case 29:X=l.pop()+e.gsubrsBias,z=e.gsubrs[X],z&&R(z);break;case 30:for(;l.length>0&&(i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m),l.length!==0);)i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),m=n+l.shift(),c=a+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m);break;case 31:for(;l.length>0&&(i=c+l.shift(),s=m,a=i+l.shift(),n=s+l.shift(),m=n+l.shift(),c=a+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m),l.length!==0);)i=c,s=m+l.shift(),a=i+l.shift(),n=s+l.shift(),c=a+l.shift(),m=n+(l.length===1?l.shift():0),o.curveTo(i,s,a,n,c,m);break;default:oe<32?console.log("Glyph "+t.index+": unknown operator "+oe):oe<247?l.push(oe-139):oe<251?(P=E[ye],ye+=1,l.push((oe-247)*256+P+108)):oe<255?(P=E[ye],ye+=1,l.push(-(oe-251)*256-P-108)):(P=E[ye],I=E[ye+1],O=E[ye+2],L=E[ye+3],ye+=4,l.push((P<<24|I<<16|O<<8|L)/65536))}}}return R(r),t.advanceWidth=w,o}function wpe(e,t,r,i){var s=[],a,n=new ot.Parser(e,t),o=n.parseCard8();if(o===0)for(var l=0;l=i)throw new Error("CFF table CID Font FDSelect has bad FD index value "+a+" (FD count "+i+")");s.push(a)}else if(o===3){var u=n.parseCard16(),h=n.parseCard16();if(h!==0)throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID "+h);for(var d,c=0;c=i)throw new Error("CFF table CID Font FDSelect has bad FD index value "+a+" (FD count "+i+")");if(d>r)throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID "+d);for(;h=0&&(r=i),i=t.indexOf(e),i>=0?r=i+Lx.length:(r=Lx.length+t.length,t.push(e)),r}function Npe(){return new rt.Record("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function Ape(e){var t=new rt.Record("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);t.names=[];for(var r=0;r=r.begin&&e=1&&(r.ulCodePageRange1=i.parseULong(),r.ulCodePageRange2=i.parseULong()),r.version>=2&&(r.sxHeight=i.parseShort(),r.sCapHeight=i.parseShort(),r.usDefaultChar=i.parseUShort(),r.usBreakChar=i.parseUShort(),r.usMaxContent=i.parseUShort()),r}function rme(e){return new rt.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],e)}var I2={parse:tme,make:rme,unicodeRanges:B2,getUnicodeRange:eme};function ime(e,t){var r={},i=new ot.Parser(e,t);switch(r.version=i.parseVersion(),r.italicAngle=i.parseFixed(),r.underlinePosition=i.parseShort(),r.underlineThickness=i.parseShort(),r.isFixedPitch=i.parseULong(),r.minMemType42=i.parseULong(),r.maxMemType42=i.parseULong(),r.minMemType1=i.parseULong(),r.maxMemType1=i.parseULong(),r.version){case 1:r.names=_h.slice();break;case 2:r.numberOfGlyphs=i.parseUShort(),r.glyphNameIndex=new Array(r.numberOfGlyphs);for(var s=0;s=_h.length){var n=i.parseChar();r.names.push(i.parseString(n))}break;case 2.5:r.numberOfGlyphs=i.parseUShort(),r.offset=new Array(r.numberOfGlyphs);for(var o=0;od.value.tag?1:-1}),t.fields=t.fields.concat(i),t.fields=t.fields.concat(s),t}function YL(e,t,r){for(var i=0;i0){var a=e.glyphs.get(s);return a.getMetrics()}}return r}function ume(e){for(var t=0,r=0;rb||l===void 0)&&b>0&&(l=b),u 123 are reserved for internal usage");if(y.name!==".notdef"){var S=y.getMetrics();t.push(S.xMin),r.push(S.yMin),i.push(S.xMax),s.push(S.yMax),n.push(S.leftSideBearing),o.push(S.rightSideBearing),a.push(y.advanceWidth)}}var T={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,r),xMax:Math.max.apply(null,i),yMax:Math.max.apply(null,s),advanceWidthMax:Math.max.apply(null,a),advanceWidthAvg:ume(a),minLeftSideBearing:Math.min.apply(null,n),maxLeftSideBearing:Math.max.apply(null,n),minRightSideBearing:Math.min.apply(null,o)};T.ascender=e.ascender,T.descender=e.descender;var w=PL.make({flags:3,unitsPerEm:e.unitsPerEm,xMin:T.xMin,yMin:T.yMin,xMax:T.xMax,yMax:T.yMax,lowestRecPPEM:3,createdTimestamp:e.createdTimestamp}),N=BL.make({ascender:T.ascender,descender:T.descender,advanceWidthMax:T.advanceWidthMax,minLeftSideBearing:T.minLeftSideBearing,minRightSideBearing:T.minRightSideBearing,xMaxExtent:T.maxLeftSideBearing+(T.xMax-T.xMin),numberOfHMetrics:e.glyphs.length}),C=LL.make(e.glyphs.length),R=I2.make(Object.assign({xAvgCharWidth:Math.round(T.advanceWidthAvg),usFirstCharIndex:l,usLastCharIndex:u,ulUnicodeRange1:h,ulUnicodeRange2:d,ulUnicodeRange3:c,ulUnicodeRange4:m,sTypoAscender:T.ascender,sTypoDescender:T.descender,sTypoLineGap:0,usWinAscent:T.yMax,usWinDescent:Math.abs(T.yMin),ulCodePageRange1:1,sxHeight:YL(e,"xyvw",{yMax:Math.round(T.ascender/2)}).yMax,sCapHeight:YL(e,"HIKLEFJMNTZBDPRAGOQSUVWXY",T).yMax,usDefaultChar:e.hasChar(" ")?32:0,usBreakChar:e.hasChar(" ")?32:0},e.tables.os2)),E=IL.make(e.glyphs),P=fL.make(e.glyphs),I=e.getEnglishName("fontFamily"),O=e.getEnglishName("fontSubfamily"),L=I+" "+O,X=e.getEnglishName("postScriptName");X||(X=I.replace(/\s/g,"")+"-"+O);var z={};for(var H in e.names)z[H]=e.names[H];z.uniqueID||(z.uniqueID={en:e.getEnglishName("manufacturer")+":"+L}),z.postScriptName||(z.postScriptName={en:X}),z.preferredFamily||(z.preferredFamily=e.names.fontFamily),z.preferredSubfamily||(z.preferredSubfamily=e.names.fontSubfamily);var ue=[],ne=GL.make(z,ue),re=ue.length>0?FL.make(ue):void 0,ce=WL.make(),ge=EL.make(e.glyphs,{version:e.getEnglishName("version"),fullName:L,familyName:I,weightName:O,postScriptName:X,unitsPerEm:e.unitsPerEm,fontBBox:[0,T.yMin,T.ascender,T.advanceWidthMax]}),ye=e.metas&&Object.keys(e.metas).length>0?HL.make(e.metas):void 0,oe=[w,N,C,R,ne,P,ce,ge,E];re&&oe.push(re),e.tables.gsub&&oe.push(jL.make(e.tables.gsub)),ye&&oe.push(ye);for(var Ae=qL(oe),Ie=Ae.encode(),Xe=F2(Ie),at=Ae.fields,W=!1,j=0;j>>1,a=e[s].tag;if(a===t)return s;a>>1,a=e[s];if(a===t)return s;a>>1;r=e[a];var n=r.start;if(n===t)return r;n0)return r=e[i-1],t>r.end?0:r}function lf(e,t){this.font=e,this.tableName=t}lf.prototype={searchTag:L2,binSearch:ZL,getTable:function(e){var t=this.font.tables[this.tableName];return!t&&e&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var e=this.getTable();return e?e.scripts.map(function(t){return t.tag}):[]},getDefaultScriptName:function(){var e=this.getTable();if(e){for(var t=!1,r=0;r=0)return i[s].script;if(t){var a={tag:e,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return i.splice(-1-s,0,a),a.script}}},getLangSysTable:function(e,t,r){var i=this.getScriptTable(e,r);if(i){if(!t||t==="dflt"||t==="DFLT")return i.defaultLangSys;var s=L2(i.langSysRecords,t);if(s>=0)return i.langSysRecords[s].langSys;if(r){var a={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return i.langSysRecords.splice(-1-s,0,a),a.langSys}}},getFeatureTable:function(e,t,r,i){var s=this.getLangSysTable(e,t,i);if(s){for(var a,n=s.featureIndexes,o=this.font.tables[this.tableName].features,l=0;l=o[u-1].tag,"Features must be added in alphabetical order."),a={tag:r,feature:{params:0,lookupListIndexes:[]}},o.push(a),n.push(u),a.feature}}},getLookupTables:function(e,t,r,i,s){var a=this.getFeatureTable(e,t,r,s),n=[];if(a){for(var o,l=a.lookupListIndexes,u=this.font.tables[this.tableName].lookups,h=0;h=0?r:-1;case 2:var i=JL(e.ranges,t);return i?i.index+t-i.start:-1}},expandCoverage:function(e){if(e.format===1)return e.glyphs;for(var t=[],r=e.ranges,i=0;i1,'Multiple: "by" must be an array of two or more ids');var s=this.getLookupTables(r,i,e,2,!0)[0],a=k2(s,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});bt.assert(a.coverage.format===1,"Multiple: unable to modify coverage table format "+a.coverage.format);var n=t.sub,o=this.binSearch(a.coverage.glyphs,n);o<0&&(o=-1-o,a.coverage.glyphs.splice(o,0,n),a.sequences.splice(o,0,0)),a.sequences[o]=t.by},sa.prototype.addAlternate=function(e,t,r,i){var s=this.getLookupTables(r,i,e,3,!0)[0],a=k2(s,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});bt.assert(a.coverage.format===1,"Alternate: unable to modify coverage table format "+a.coverage.format);var n=t.sub,o=this.binSearch(a.coverage.glyphs,n);o<0&&(o=-1-o,a.coverage.glyphs.splice(o,0,n),a.alternateSets.splice(o,0,0)),a.alternateSets[o]=t.by},sa.prototype.addLigature=function(e,t,r,i){var s=this.getLookupTables(r,i,e,4,!0)[0],a=s.subtables[0];a||(a={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},s.subtables[0]=a),bt.assert(a.coverage.format===1,"Ligature: unable to modify coverage table format "+a.coverage.format);var n=t.sub[0],o=t.sub.slice(1),l={ligGlyph:t.by,components:o},u=this.binSearch(a.coverage.glyphs,n);if(u>=0){for(var h=a.ligatureSets[u],d=0;d0?(a=e.parseByte(),(t&s)===0&&(a=-a),a=r+a):(t&s)>0?a=r:a=r+e.parseShort(),a}function ek(e,t,r){var i=new ot.Parser(t,r);e.numberOfContours=i.parseShort(),e._xMin=i.parseShort(),e._yMin=i.parseShort(),e._xMax=i.parseShort(),e._yMax=i.parseShort();var s,a;if(e.numberOfContours>0){for(var n=e.endPointIndices=[],o=0;o0)for(var d=i.parseByte(),c=0;c0){var m=[],g;if(u>0){for(var y=0;y=0,m.push(g);for(var b=0,v=0;v0?(s&2)>0?(N.dx=i.parseShort(),N.dy=i.parseShort()):N.matchedPoints=[i.parseUShort(),i.parseUShort()]:(s&2)>0?(N.dx=i.parseChar(),N.dy=i.parseChar()):N.matchedPoints=[i.parseByte(),i.parseByte()],(s&8)>0?N.xScale=N.yScale=i.parseF2Dot14():(s&64)>0?(N.xScale=i.parseF2Dot14(),N.yScale=i.parseF2Dot14()):(s&128)>0&&(N.xScale=i.parseF2Dot14(),N.scale01=i.parseF2Dot14(),N.scale10=i.parseF2Dot14(),N.yScale=i.parseF2Dot14()),e.components.push(N),w=!!(s&32)}if(s&256){e.instructionLength=i.parseUShort(),e.instructions=[];for(var C=0;Ct.points.length-1||i.matchedPoints[1]>s.points.length-1)throw Error("Matched points out of range in "+t.name);var n=t.points[i.matchedPoints[0]],o=s.points[i.matchedPoints[1]],l={xScale:i.xScale,scale01:i.scale01,scale10:i.scale10,yScale:i.yScale,dx:0,dy:0};o=D2([o],l)[0],l.dx=n.x-o.x,l.dy=n.y-o.y,a=D2(s.points,l)}t.points=t.points.concat(a)}}return tk(t.points)}function gme(e,t,r,i){for(var s=new Zn.GlyphSet(i),a=0;a2)){var r=this.font,i=this._prepState;if(!i||i.ppem!==t){var s=this._fpgmState;if(!s){iu.prototype=wme,s=this._fpgmState=new iu("fpgm",r.tables.fpgm),s.funcs=[],s.font=r,exports.DEBUG&&(console.log("---EXEC FPGM---"),s.step=-1);try{Mh(s)}catch(u){console.log("Hinting error in FPGM:"+u),this._errorState=3;return}}iu.prototype=s,i=this._prepState=new iu("prep",r.tables.prep),i.ppem=t;var a=r.tables.cvt;if(a)for(var n=i.cvt=new Array(a.length),o=t/r.unitsPerEm,l=0;l1))try{return ak(e,i)}catch(u){this._errorState<1&&(console.log("Hinting error:"+u),console.log("Note: further hinting errors are silenced")),this._errorState=1;return}}},ak=function(e,t){var r=t.ppem/t.font.unitsPerEm,i=r,s=e.components,a,n,o;if(iu.prototype=t,!s)o=new iu("glyf",e.instructions),exports.DEBUG&&(console.log("---EXEC GLYPH---"),o.step=-1),O2(e,o,r,i),n=o.gZone;else{var l=t.font;n=[],a=[];for(var u=0;u=176&&a<=183)i+=a-176+1;else if(a>=184&&a<=191)i+=(a-184+1)*2;else if(t&&s===1&&a===27)break;while(s>0);e.ip=i}function hk(e,t){exports.DEBUG&&console.log(t.step,"SVTCA["+e.axis+"]"),t.fv=t.pv=t.dpv=e}function dk(e,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+e.axis+"]"),t.pv=t.dpv=e}function ck(e,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+e.axis+"]"),t.fv=e}function pk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log("SPVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.pv=t.dpv=cf(o,l)}function mk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log("SFVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.fv=cf(o,l)}function Mme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SPVFS[]",r,i),e.pv=e.dpv=cf(i,r)}function Nme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SPVFS[]",r,i),e.fv=cf(i,r)}function Ame(e){var t=e.stack,r=e.pv;exports.DEBUG&&console.log(e.step,"GPV[]"),t.push(r.x*16384),t.push(r.y*16384)}function Cme(e){var t=e.stack,r=e.fv;exports.DEBUG&&console.log(e.step,"GFV[]"),t.push(r.x*16384),t.push(r.y*16384)}function Rme(e){e.fv=e.pv,exports.DEBUG&&console.log(e.step,"SFVTPV[]")}function Eme(e){var t=e.stack,r=t.pop(),i=t.pop(),s=t.pop(),a=t.pop(),n=t.pop(),o=e.z0,l=e.z1,u=o[r],h=o[i],d=l[s],c=l[a],m=e.z2[n];exports.DEBUG&&console.log("ISECT[], ",r,i,s,a,n);var g=u.x,y=u.y,b=h.x,v=h.y,S=d.x,T=d.y,w=c.x,N=c.y,C=(g-b)*(T-N)-(y-v)*(S-w),R=g*v-y*b,E=S*N-T*w;m.x=(R*(S-w)-E*(g-b))/C,m.y=(R*(T-N)-E*(y-v))/C}function Pme(e){e.rp0=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP0[]",e.rp0)}function Bme(e){e.rp1=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP1[]",e.rp1)}function Ime(e){e.rp2=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SRP2[]",e.rp2)}function Fme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP0[]",t),e.zp0=t,t){case 0:e.tZone||Ox(e),e.z0=e.tZone;break;case 1:e.z0=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Lme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP1[]",t),e.zp1=t,t){case 0:e.tZone||Ox(e),e.z1=e.tZone;break;case 1:e.z1=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function kme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZP2[]",t),e.zp2=t,t){case 0:e.tZone||Ox(e),e.z2=e.tZone;break;case 1:e.z2=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Dme(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"SZPS[]",t),e.zp0=e.zp1=e.zp2=t,t){case 0:e.tZone||Ox(e),e.z0=e.z1=e.z2=e.tZone;break;case 1:e.z0=e.z1=e.z2=e.gZone;break;default:throw new Error("Invalid zone pointer")}}function Ome(e){e.loop=e.stack.pop(),exports.DEBUG&&console.log(e.step,"SLOOP[]",e.loop)}function Ume(e){exports.DEBUG&&console.log(e.step,"RTG[]"),e.round=ok}function zme(e){exports.DEBUG&&console.log(e.step,"RTHG[]"),e.round=Tme}function Vme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SMD[]",t),e.minDis=t/64}function Gme(e){exports.DEBUG&&console.log(e.step,"ELSE[]"),uk(e,!1)}function Wme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"JMPR[]",t),e.ip+=t-1}function jme(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCVTCI[]",t),e.cvCutIn=t/64}function Hme(e){var t=e.stack;exports.DEBUG&&console.log(e.step,"DUP[]"),t.push(t[t.length-1])}function U2(e){exports.DEBUG&&console.log(e.step,"POP[]"),e.stack.pop()}function Xme(e){exports.DEBUG&&console.log(e.step,"CLEAR[]"),e.stack.length=0}function $me(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SWAP[]"),t.push(r),t.push(i)}function qme(e){var t=e.stack;exports.DEBUG&&console.log(e.step,"DEPTH[]"),t.push(t.length)}function Yme(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"LOOPCALL[]",r,i);var s=e.ip,a=e.prog;e.prog=e.funcs[r];for(var n=0;n1?"loop "+(t.loop-o)+": ":"")+"SHP["+(e?"rp1":"rp2")+"]",u)}t.loop=1}function xk(e,t){var r=t.stack,i=e?t.rp1:t.rp2,s=(e?t.z0:t.z1)[i],a=t.fv,n=t.pv,o=r.pop(),l=t.z2[t.contours[o]],u=l;exports.DEBUG&&console.log(t.step,"SHC["+e+"]",o);var h=n.distance(s,s,!1,!0);do u!==s&&a.setRelative(u,u,h,n),u=u.nextPointOnContour;while(u!==l)}function vk(e,t){var r=t.stack,i=e?t.rp1:t.rp2,s=(e?t.z0:t.z1)[i],a=t.fv,n=t.pv,o=r.pop();exports.DEBUG&&console.log(t.step,"SHZ["+e+"]",o);var l;switch(o){case 0:l=t.tZone;break;case 1:l=t.gZone;break;default:throw new Error("Invalid zone")}for(var u,h=n.distance(s,s,!1,!0),d=l.length-2,c=0;c1?"loop "+(e.loop-r)+": ":"")+"SHPIX[]",n,s),i.setRelative(o,o,s),i.touch(o)}e.loop=1}function tfe(e){for(var t=e.stack,r=e.rp1,i=e.rp2,s=e.loop,a=e.z0[r],n=e.z1[i],o=e.fv,l=e.dpv,u=e.z2;s--;){var h=t.pop(),d=u[h];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-s)+": ":"")+"IP[]",h,r,"<->",i),o.interpolate(d,a,n,l),o.touch(d)}e.loop=1}function bk(e,t){var r=t.stack,i=r.pop()/64,s=r.pop(),a=t.z1[s],n=t.z0[t.rp0],o=t.fv,l=t.pv;o.setRelative(a,n,i,l),o.touch(a),exports.DEBUG&&console.log(t.step,"MSIRP["+e+"]",i,s),t.rp1=t.rp0,t.rp2=s,e&&(t.rp0=s)}function rfe(e){for(var t=e.stack,r=e.rp0,i=e.z0[r],s=e.loop,a=e.fv,n=e.pv,o=e.z1;s--;){var l=t.pop(),u=o[l];exports.DEBUG&&console.log(e.step,(e.loop>1?"loop "+(e.loop-s)+": ":"")+"ALIGNRP[]",l),a.setRelative(u,i,0,n),a.touch(u)}e.loop=1}function ife(e){exports.DEBUG&&console.log(e.step,"RTDG[]"),e.round=bme}function Tk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z0[s],n=t.fv,o=t.pv,l=t.cvt[i];exports.DEBUG&&console.log(t.step,"MIAP["+e+"]",i,"(",l,")",s);var u=o.distance(a,pf);e&&(Math.abs(u-l)",o),t.stack.push(Math.round(o*64))}function hfe(e){exports.DEBUG&&console.log(e.step,"MPPEM[]"),e.stack.push(e.ppem)}function dfe(e){exports.DEBUG&&console.log(e.step,"FLIPON[]"),e.autoFlip=!0}function cfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"LT[]",r,i),t.push(ir?1:0)}function ffe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"GTEQ[]",r,i),t.push(i>=r?1:0)}function gfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"EQ[]",r,i),t.push(r===i?1:0)}function yfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"NEQ[]",r,i),t.push(r!==i?1:0)}function xfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"ODD[]",r),t.push(Math.trunc(r)%2?1:0)}function vfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"EVEN[]",r),t.push(Math.trunc(r)%2?0:1)}function bfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"IF[]",t),t||(uk(e,!0),exports.DEBUG&&console.log(e.step,"EIF[]"))}function Tfe(e){exports.DEBUG&&console.log(e.step,"EIF[]")}function Sfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"AND[]",r,i),t.push(r&&i?1:0)}function _fe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"OR[]",r,i),t.push(r||i?1:0)}function wfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"NOT[]",r),t.push(r?0:1)}function z2(e,t){var r=t.stack,i=r.pop(),s=t.fv,a=t.pv,n=t.ppem,o=t.deltaBase+(e-1)*16,l=t.deltaShift,u=t.z0;exports.DEBUG&&console.log(t.step,"DELTAP["+e+"]",i,r);for(var h=0;h>4);if(m===n){var g=(c&15)-8;g>=0&&g++,exports.DEBUG&&console.log(t.step,"DELTAPFIX",d,"by",g*l);var y=u[d];s.setRelative(y,y,g*l,a)}}}function Mfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"SDB[]",r),e.deltaBase=r}function Nfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"SDS[]",r),e.deltaShift=Math.pow(.5,r)}function Afe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"ADD[]",r,i),t.push(i+r)}function Cfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"SUB[]",r,i),t.push(i-r)}function Rfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"DIV[]",r,i),t.push(i*64/r)}function Efe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MUL[]",r,i),t.push(i*r/64)}function Pfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"ABS[]",r),t.push(Math.abs(r))}function Bfe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"NEG[]",r),t.push(-r)}function Ife(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"FLOOR[]",r),t.push(Math.floor(r/64)*64)}function Ffe(e){var t=e.stack,r=t.pop();exports.DEBUG&&console.log(e.step,"CEILING[]",r),t.push(Math.ceil(r/64)*64)}function Ux(e,t){var r=t.stack,i=r.pop();exports.DEBUG&&console.log(t.step,"ROUND[]"),r.push(t.round(i/64)*64)}function Lfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"WCVTF[]",r,i),e.cvt[i]=r*e.ppem/e.font.unitsPerEm}function V2(e,t){var r=t.stack,i=r.pop(),s=t.ppem,a=t.deltaBase+(e-1)*16,n=t.deltaShift;exports.DEBUG&&console.log(t.step,"DELTAC["+e+"]",i,r);for(var o=0;o>4);if(h===s){var d=(u&15)-8;d>=0&&d++;var c=d*n;exports.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",c),t.cvt[l]+=c}}}function kfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SROUND[]",t),e.round=lk;var r;switch(t&192){case 0:r=.5;break;case 64:r=1;break;case 128:r=2;break;default:throw new Error("invalid SROUND value")}switch(e.srPeriod=r,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*r;break;case 32:e.srPhase=.5*r;break;case 48:e.srPhase=.75*r;break;default:throw new Error("invalid SROUND value")}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*r}function Dfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"S45ROUND[]",t),e.round=lk;var r;switch(t&192){case 0:r=Math.sqrt(2)/2;break;case 64:r=Math.sqrt(2);break;case 128:r=2*Math.sqrt(2);break;default:throw new Error("invalid S45ROUND value")}switch(e.srPeriod=r,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*r;break;case 32:e.srPhase=.5*r;break;case 48:e.srPhase=.75*r;break;default:throw new Error("invalid S45ROUND value")}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*r}function Ofe(e){exports.DEBUG&&console.log(e.step,"ROFF[]"),e.round=vme}function Ufe(e){exports.DEBUG&&console.log(e.step,"RUTG[]"),e.round=Sme}function zfe(e){exports.DEBUG&&console.log(e.step,"RDTG[]"),e.round=_me}function Vfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANCTRL[]",t)}function wk(e,t){var r=t.stack,i=r.pop(),s=r.pop(),a=t.z2[i],n=t.z1[s];exports.DEBUG&&console.log(t.step,"SDPVTL["+e+"]",i,s);var o,l;e?(o=a.y-n.y,l=n.x-a.x):(o=n.x-a.x,l=n.y-a.y),t.dpv=cf(o,l)}function Gfe(e){var t=e.stack,r=t.pop(),i=0;exports.DEBUG&&console.log(e.step,"GETINFO[]",r),r&1&&(i=35),r&32&&(i|=4096),t.push(i)}function Wfe(e){var t=e.stack,r=t.pop(),i=t.pop(),s=t.pop();exports.DEBUG&&console.log(e.step,"ROLL[]"),t.push(i),t.push(r),t.push(s)}function jfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MAX[]",r,i),t.push(Math.max(i,r))}function Hfe(e){var t=e.stack,r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,"MIN[]",r,i),t.push(Math.min(i,r))}function Xfe(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,"SCANTYPE[]",t)}function $fe(e){var t=e.stack.pop(),r=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,"INSTCTRL[]",t,r),t){case 1:e.inhibitGridFit=!!r;return;case 2:e.ignoreCvt=!!r;return;default:throw new Error("invalid INSTCTRL[] selector")}}function su(e,t){var r=t.stack,i=t.prog,s=t.ip;exports.DEBUG&&console.log(t.step,"PUSHB["+e+"]");for(var a=0;a=0?1:-1,b=Math.abs(b),e&&(S=a.cvt[o],i&&Math.abs(b-S)":"_")+(i?"R":"_")+(s===0?"Gr":s===1?"Bl":s===2?"Wh":"")+"]",e?o+"("+a.cvt[o]+","+S+")":"",l,"(d =",y,"->",v*b,")"),a.rp1=a.rp0,a.rp2=l,t&&(a.rp0=l)}sk=[hk.bind(void 0,qo),hk.bind(void 0,Jn),dk.bind(void 0,qo),dk.bind(void 0,Jn),ck.bind(void 0,qo),ck.bind(void 0,Jn),pk.bind(void 0,0),pk.bind(void 0,1),mk.bind(void 0,0),mk.bind(void 0,1),Mme,Nme,Ame,Cme,Rme,Eme,Pme,Bme,Ime,Fme,Lme,kme,Dme,Ome,Ume,zme,Vme,Gme,Wme,jme,void 0,void 0,Hme,U2,Xme,$me,qme,Jme,Qme,void 0,void 0,void 0,Yme,Zme,Kme,void 0,fk.bind(void 0,0),fk.bind(void 0,1),gk.bind(void 0,qo),gk.bind(void 0,Jn),yk.bind(void 0,0),yk.bind(void 0,1),xk.bind(void 0,0),xk.bind(void 0,1),vk.bind(void 0,0),vk.bind(void 0,1),efe,tfe,bk.bind(void 0,0),bk.bind(void 0,1),rfe,ife,Tk.bind(void 0,0),Tk.bind(void 0,1),sfe,afe,nfe,ofe,lfe,ufe,Sk.bind(void 0,0),Sk.bind(void 0,1),void 0,_k.bind(void 0,0),_k.bind(void 0,1),hfe,void 0,dfe,void 0,void 0,cfe,pfe,mfe,ffe,gfe,yfe,xfe,vfe,bfe,Tfe,Sfe,_fe,wfe,z2.bind(void 0,1),Mfe,Nfe,Afe,Cfe,Rfe,Efe,Pfe,Bfe,Ife,Ffe,Ux.bind(void 0,0),Ux.bind(void 0,1),Ux.bind(void 0,2),Ux.bind(void 0,3),void 0,void 0,void 0,void 0,Lfe,z2.bind(void 0,2),z2.bind(void 0,3),V2.bind(void 0,1),V2.bind(void 0,2),V2.bind(void 0,3),kfe,Dfe,void 0,void 0,Ofe,void 0,Ufe,zfe,U2,U2,void 0,void 0,void 0,void 0,void 0,Vfe,wk.bind(void 0,0),wk.bind(void 0,1),Gfe,void 0,Wfe,jfe,Hfe,Xfe,$fe,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,su.bind(void 0,1),su.bind(void 0,2),su.bind(void 0,3),su.bind(void 0,4),su.bind(void 0,5),su.bind(void 0,6),su.bind(void 0,7),su.bind(void 0,8),au.bind(void 0,1),au.bind(void 0,2),au.bind(void 0,3),au.bind(void 0,4),au.bind(void 0,5),au.bind(void 0,6),au.bind(void 0,7),au.bind(void 0,8),lt.bind(void 0,0,0,0,0,0),lt.bind(void 0,0,0,0,0,1),lt.bind(void 0,0,0,0,0,2),lt.bind(void 0,0,0,0,0,3),lt.bind(void 0,0,0,0,1,0),lt.bind(void 0,0,0,0,1,1),lt.bind(void 0,0,0,0,1,2),lt.bind(void 0,0,0,0,1,3),lt.bind(void 0,0,0,1,0,0),lt.bind(void 0,0,0,1,0,1),lt.bind(void 0,0,0,1,0,2),lt.bind(void 0,0,0,1,0,3),lt.bind(void 0,0,0,1,1,0),lt.bind(void 0,0,0,1,1,1),lt.bind(void 0,0,0,1,1,2),lt.bind(void 0,0,0,1,1,3),lt.bind(void 0,0,1,0,0,0),lt.bind(void 0,0,1,0,0,1),lt.bind(void 0,0,1,0,0,2),lt.bind(void 0,0,1,0,0,3),lt.bind(void 0,0,1,0,1,0),lt.bind(void 0,0,1,0,1,1),lt.bind(void 0,0,1,0,1,2),lt.bind(void 0,0,1,0,1,3),lt.bind(void 0,0,1,1,0,0),lt.bind(void 0,0,1,1,0,1),lt.bind(void 0,0,1,1,0,2),lt.bind(void 0,0,1,1,0,3),lt.bind(void 0,0,1,1,1,0),lt.bind(void 0,0,1,1,1,1),lt.bind(void 0,0,1,1,1,2),lt.bind(void 0,0,1,1,1,3),lt.bind(void 0,1,0,0,0,0),lt.bind(void 0,1,0,0,0,1),lt.bind(void 0,1,0,0,0,2),lt.bind(void 0,1,0,0,0,3),lt.bind(void 0,1,0,0,1,0),lt.bind(void 0,1,0,0,1,1),lt.bind(void 0,1,0,0,1,2),lt.bind(void 0,1,0,0,1,3),lt.bind(void 0,1,0,1,0,0),lt.bind(void 0,1,0,1,0,1),lt.bind(void 0,1,0,1,0,2),lt.bind(void 0,1,0,1,0,3),lt.bind(void 0,1,0,1,1,0),lt.bind(void 0,1,0,1,1,1),lt.bind(void 0,1,0,1,1,2),lt.bind(void 0,1,0,1,1,3),lt.bind(void 0,1,1,0,0,0),lt.bind(void 0,1,1,0,0,1),lt.bind(void 0,1,1,0,0,2),lt.bind(void 0,1,1,0,0,3),lt.bind(void 0,1,1,0,1,0),lt.bind(void 0,1,1,0,1,1),lt.bind(void 0,1,1,0,1,2),lt.bind(void 0,1,1,0,1,3),lt.bind(void 0,1,1,1,0,0),lt.bind(void 0,1,1,1,0,1),lt.bind(void 0,1,1,1,0,2),lt.bind(void 0,1,1,1,0,3),lt.bind(void 0,1,1,1,1,0),lt.bind(void 0,1,1,1,1,1),lt.bind(void 0,1,1,1,1,2),lt.bind(void 0,1,1,1,1,3)];function Ic(e){this.char=e,this.state={},this.activeState=null}function G2(e,t,r){this.contextName=r,this.startIndex=e,this.endOffset=t}function qfe(e,t,r){this.contextName=e,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=r}function an(e,t){this.context=e,this.index=t,this.length=e.length,this.current=e[t],this.backtrack=e.slice(0,t),this.lookahead=e.slice(t+1)}function zx(e){this.eventId=e,this.subscribers=[]}function Yfe(e){var t=this,r=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];r.forEach(function(s){Object.defineProperty(t.events,s,{value:new zx(s)})}),e&&r.forEach(function(s){var a=e[s];typeof a=="function"&&t.events[s].subscribe(a)});var i=["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"];i.forEach(function(s){t.events[s].subscribe(t.updateContextsRanges)})}function Xr(e){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],Yfe.call(this,e)}Ic.prototype.setState=function(e,t){return this.state[e]=t,this.activeState={key:e,value:this.state[e]},this.activeState},Ic.prototype.getState=function(e){return this.state[e]||null},Xr.prototype.inboundIndex=function(e){return e>=0&&e0&&e<=this.lookahead.length):return this.lookahead[e-1];default:return null}},Xr.prototype.rangeToText=function(e){if(e instanceof G2)return this.getRangeTokens(e).map(function(t){return t.char}).join("")},Xr.prototype.getText=function(){return this.tokens.map(function(e){return e.char}).join("")},Xr.prototype.getContext=function(e){var t=this.registeredContexts[e];return t||null},Xr.prototype.on=function(e,t){var r=this.events[e];return r?r.subscribe(t):null},Xr.prototype.dispatch=function(e,t){var r=this,i=this.events[e];i instanceof zx&&i.subscribers.forEach(function(s){s.apply(r,t||[])})},Xr.prototype.registerContextChecker=function(e,t,r){if(this.getContext(e))return{FAIL:"context name '"+e+"' is already registered."};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof r!="function")return{FAIL:"missing context end check."};var i=new qfe(e,t,r);return this.registeredContexts[e]=i,this.contextCheckers.push(i),i},Xr.prototype.getRangeTokens=function(e){var t=e.startIndex+e.endOffset;return[].concat(this.tokens.slice(e.startIndex,t))},Xr.prototype.getContextRanges=function(e){var t=this.getContext(e);return t?t.ranges:{FAIL:"context checker '"+e+"' is not registered."}},Xr.prototype.resetContextsRanges=function(){var e=this.registeredContexts;for(var t in e)if(e.hasOwnProperty(t)){var r=e[t];r.ranges=[]}},Xr.prototype.updateContextsRanges=function(){this.resetContextsRanges();for(var e=this.tokens.map(function(i){return i.char}),t=0;t=s.start&&e<=s.end){var a=e-s.start;return s.index+a}}break;default:return-1}return-1}function Jfe(e,t){var r=mf(e,t.coverage);return r===-1?null:e+t.deltaGlyphId}function Qfe(e,t){var r=mf(e,t.coverage);return r===-1?null:t.substitute[r]}function W2(e,t){for(var r=[],i=0;i=0;r--){var i=t[r],s=Mk(i),a=ou(i);if(!s&&!a)return!0;if(s)return!1}return!1}function pge(e){if(Mk(e.current))return!1;for(var t=0;t0}r("fontFamily"),r("weightName"),r("manufacturer"),r("copyright"),r("version"),this.unitsPerEm>0},dr.prototype.toTables=function(){return dme.fontToTable(this)},dr.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()},dr.prototype.toArrayBuffer=function(){for(var e=this.toTables(),t=e.encode(),r=new ArrayBuffer(t.length),i=new Uint8Array(r),s=0;s=1.2&&(s.markGlyphSets=r.parsePointer(kge)),s}var Oge={parse:Dge},on=new Array(10);on[1]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{posFormat:1,coverage:this.parsePointer(ve.coverage),value:this.parseValueRecord()};if(t===2)return{posFormat:2,coverage:this.parsePointer(ve.coverage),values:this.parseValueRecordList()};bt.assert(!1,"0x"+e.toString(16)+": GPOS lookup type 1 format must be 1 or 2.")},on[2]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();bt.assert(t===1||t===2,"0x"+e.toString(16)+": GPOS lookup type 2 format must be 1 or 2.");var r=this.parsePointer(ve.coverage),i=this.parseUShort(),s=this.parseUShort();if(t===1)return{posFormat:t,coverage:r,valueFormat1:i,valueFormat2:s,pairSets:this.parseList(ve.pointer(ve.list(function(){return{secondGlyph:this.parseUShort(),value1:this.parseValueRecord(i),value2:this.parseValueRecord(s)}})))};if(t===2){var a=this.parsePointer(ve.classDef),n=this.parsePointer(ve.classDef),o=this.parseUShort(),l=this.parseUShort();return{posFormat:t,coverage:r,valueFormat1:i,valueFormat2:s,classDef1:a,classDef2:n,class1Count:o,class2Count:l,classRecords:this.parseList(o,ve.list(l,function(){return{value1:this.parseValueRecord(i),value2:this.parseValueRecord(s)}}))}}},on[3]=function(){return{error:"GPOS Lookup 3 not supported"}},on[4]=function(){return{error:"GPOS Lookup 4 not supported"}},on[5]=function(){return{error:"GPOS Lookup 5 not supported"}},on[6]=function(){return{error:"GPOS Lookup 6 not supported"}},on[7]=function(){return{error:"GPOS Lookup 7 not supported"}},on[8]=function(){return{error:"GPOS Lookup 8 not supported"}},on[9]=function(){return{error:"GPOS Lookup 9 not supported"}};function Uge(e,t){t=t||0;var r=new ve(e,t),i=r.parseVersion(1);return bt.argument(i===1||i===1.1,"Unsupported GPOS table version "+i),i===1?{version:i,scripts:r.parseScriptList(),features:r.parseFeatureList(),lookups:r.parseLookupList(on)}:{version:i,scripts:r.parseScriptList(),features:r.parseFeatureList(),lookups:r.parseLookupList(on),variations:r.parseFeatureVariationsList()}}var zge=new Array(10);function Vge(e){return new rt.Table("GPOS",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new rt.ScriptList(e.scripts)},{name:"features",type:"TABLE",value:new rt.FeatureList(e.features)},{name:"lookups",type:"TABLE",value:new rt.LookupList(e.lookups,zge)}])}var Gge={parse:Uge,make:Vge};function Wge(e){var t={};e.skip("uShort");var r=e.parseUShort();bt.argument(r===0,"Unsupported kern sub-table version."),e.skip("uShort",2);var i=e.parseUShort();e.skip("uShort",3);for(var s=0;s1&&console.warn("Only the first kern subtable is supported."),e.skip("uLong");var i=e.parseUShort(),s=i&255;if(e.skip("uShort"),s===0){var a=e.parseUShort();e.skip("uShort",3);for(var n=0;n"u",s=i&&!r.isUrl?Yge:Zge;return new Promise(function(a,n){s(e,function(o,l){if(o){if(t)return t(o);n(o)}var u;try{u=$2(l,r)}catch(h){if(t)return t(h,null);n(h)}if(t)return t(null,u);a(u)})})}function Kge(e,t){var r=ev(),i=r.readFileSync(e);return $2(QL(i),t)}var e0e=Object.freeze({__proto__:null,Font:dr,Glyph:ia,Path:di,BoundingBox:$o,_parse:ot,parse:$2,load:Qge,loadSync:Kge}),t0e=e0e,Pk=new Map;function r0e(e){let t=Pk.get(e);return t||(t=fetch(e).then(r=>{if(!r.ok)throw new Error(`typeface: ${r.status}`);return r.arrayBuffer()}).then(r=>t0e.parse(r)),Pk.set(e,t)),t}function i0e(e,t,r=0){return e.getAdvanceWidth(t,1,{kerning:!0,letterSpacing:r})}function s0e(e,t,r,i,s=0){let a=r/e.unitsPerEm,n=(e.tables?.os2?.sCapHeight??e.ascender*.72)*a,o=i*r,l=o*(t.length-1)+n,u=[];return t.forEach((h,d)=>{let c=e.getAdvanceWidth(h,r,{kerning:!0,letterSpacing:s}),m=l/2-n-d*o,g=e.getPath(h,-c/2,0,r,{kerning:!0,letterSpacing:s}),y=new nl,b=v=>m-v;for(let v of g.commands)v.type==="M"?y.moveTo(v.x,b(v.y)):v.type==="L"?y.lineTo(v.x,b(v.y)):v.type==="Q"?y.quadraticCurveTo(v.x1,b(v.y1),v.x,b(v.y)):v.type==="C"?y.bezierCurveTo(v.x1,b(v.y1),v.x2,b(v.y2),v.x,b(v.y)):v.type==="Z"&&y.currentPath?.closePath();u.push(...k5.createShapes(y))}),u}var a0e="frost-build-cache",ff="builds",n0e=1,o0e="frost-build-10-planar-cap-normals";function Bk(){return new Promise(e=>{try{if(typeof indexedDB>"u")return e(null);let t=indexedDB.open(a0e,n0e);t.onupgradeneeded=()=>{t.result.createObjectStore(ff)},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}catch{e(null)}})}async function l0e(e){let t=await Bk();return t?new Promise(r=>{try{let i=t.transaction(ff,"readonly").objectStore(ff).get(e);i.onsuccess=()=>r(i.result??null),i.onerror=()=>r(null)}catch{r(null)}}):null}async function u0e(e,t){let r=await Bk();r&&await new Promise(i=>{try{let s=r.transaction(ff,"readwrite"),a=s.objectStore(ff);a.clear(),a.put(t,e),s.oncomplete=()=>i(),s.onerror=()=>i()}catch{i()}})}function h0e(e){let t=r=>e.attributes[r]?e.attributes[r].array:null;return{position:t("position"),normal:t("normal"),uv:t("uv"),index:e.index?new Uint32Array(e.index.array):null}}function d0e(e){let t=new ps;return t.setAttribute("position",new tr(e.position,3)),t.setAttribute("normal",new tr(e.normal,3)),e.uv&&t.setAttribute("uv",new tr(e.uv,2)),e.index&&t.setIndex(new _i(e.index,1)),t.computeBoundingBox(),t}var Ah=1/60,c0e=y2(Ice),p0e="frost-ice-textured-r1-reference-optics",Ik=12,Gx={turbulenceScale:{path:["powder","turbulenceScale"],replay:!0},clumpCohesion:{path:["powder","clumpCohesion"],replay:!0},repelStrength:{path:["powder","repelStrength"],replay:!0},repelRange:{path:["powder","repelRange"],replay:!0},repelRadial:{path:["powder","repelRadial"],replay:!0},repelRadialRange:{path:["powder","repelRadialRange"],replay:!0},wrap:{path:["powder","wrap"],replay:!1},turbulenceDecay:{path:["powder","turbulenceDecay"],replay:!0},settledDrift:{path:["powder","settledDrift"],replay:!0},tumble:{path:["powder","tumble"],replay:!1},assemblyFrontDuration:{path:["healing","assemblyFrontDuration"],replay:!0},assemblyOriginX:{path:["healing","assemblyOriginX"],replay:!0},assemblyOriginY:{path:["healing","assemblyOriginY"],replay:!0},assemblyAngle:{path:["healing","assemblyAngle"],replay:!0},assemblySpread:{path:["healing","assemblySpread"],replay:!0},assemblyFrontNoise:{path:["healing","assemblyFrontNoise"],replay:!0},assemblySpeedVariation:{path:["healing","assemblySpeedVariation"],replay:!0},assemblyBend:{path:["healing","assemblyBend"],replay:!0},assemblySwirl:{path:["healing","assemblySwirl"],replay:!0},assemblyLandingVariation:{path:["healing","assemblyLandingVariation"],replay:!0},returnNoiseAmount:{path:["healing","returnNoiseAmount"],replay:!0},returnGroupStagger:{path:["healing","returnGroupStagger"],replay:!0},returnGroupScale:{path:["healing","returnGroupScale"],replay:!0},returnGroupSeed:{path:["healing","returnGroupSeed"],replay:!0},formJitter:{path:["healing","waveJitter"],replay:!0},waveReach:{path:["healing","waveReach"],replay:!0},alignToSurface:{path:["healing","alignToSurface"],replay:!1},alignCurve:{path:["healing","alignCurve"],replay:!1},rimAzimuth:{path:["lighting","rimAzimuth"],replay:!1},rimAngle:{path:["lighting","rimAngle"],replay:!1},rimSize:{path:["lighting","rimSize"],replay:!1},fillReflectionStrength:{path:["lighting","fillReflectionStrength"],replay:!1},accentCoolIntensity:{path:["lighting","accentCool","intensity"],replay:!1},accentCoolReflection:{path:["lighting","accentCool","reflection"],replay:!1},accentCoolElevation:{path:["lighting","accentCool","elevation"],replay:!1},accentCoolAzimuth:{path:["lighting","accentCool","azimuth"],replay:!1},accentCoolSize:{path:["lighting","accentCool","size"],replay:!1},accentCoolColor:{path:["lighting","accentCool","color"],replay:!1},accentWarmIntensity:{path:["lighting","accentWarm","intensity"],replay:!1},accentWarmReflection:{path:["lighting","accentWarm","reflection"],replay:!1},accentWarmElevation:{path:["lighting","accentWarm","elevation"],replay:!1},accentWarmAzimuth:{path:["lighting","accentWarm","azimuth"],replay:!1},accentWarmSize:{path:["lighting","accentWarm","size"],replay:!1},accentWarmColor:{path:["lighting","accentWarm","color"],replay:!1},keyColor:{path:["lighting","key","color"],replay:!1},keyIntensity:{path:["lighting","key","intensity"],replay:!1},keyElevation:{path:["lighting","key","elevation"],replay:!1},keyAzimuth:{path:["lighting","key","azimuth"],replay:!1},keySize:{path:["lighting","key","size"],replay:!1},fill:{path:["lighting","fill"],replay:!1},fillColor:{path:["lighting","fillColor"],replay:!1},fillGroundColor:{path:["lighting","fillGroundColor"],replay:!1},rim:{path:["lighting","rim"],replay:!1},rimColor:{path:["lighting","rimColor"],replay:!1},rimElevation:{path:["lighting","rimElevation"],replay:!1},swayAmplitude:{path:["lighting","sway","amplitude"],replay:!1},swayPeriod:{path:["lighting","sway","period"],replay:!1},envSoftbox:{path:["lighting","envSoftbox"],replay:!1},envRim:{path:["lighting","envRim"],replay:!1},envFill:{path:["lighting","envFill"],replay:!1},backdropTop:{path:["lighting","backdrop","top"],replay:!1},backdropMid:{path:["lighting","backdrop","mid"],replay:!1},backdropBottom:{path:["lighting","backdrop","bottom"],replay:!1},backdropCenterX:{path:["lighting","backdrop","centerX"],replay:!1},backdropCenterY:{path:["lighting","backdrop","centerY"],replay:!1},backdropRadius:{path:["lighting","backdrop","radius"],replay:!1},backdropFalloff:{path:["lighting","backdrop","falloff"],replay:!1},backdropNoise:{path:["lighting","backdrop","noise"],replay:!1},...Object.fromEntries(Object.keys(Qd).map(e=>[$ie(e),{path:["ice","features",e],replay:!1}])),materialBacklight:{path:["ice","backlight"],replay:!1},materialInclusionAmount:{path:["ice","inclusionAmount"],replay:!1},materialInclusionScale:{path:["ice","inclusionScale"],replay:!1},materialBaseColor:{path:["ice","baseColor"],replay:!1},materialInteriorFrost:{path:["erosion","interiorFrost"],replay:!1},materialGrainAmount:{path:["erosion","edgeBump"],replay:!1},materialGrainScale:{path:["erosion","edgeBumpScale"],replay:!1},ior:{path:["ice","ior"],replay:!1},dispersion:{path:["ice","dispersion"],replay:!1},thicknessScale:{path:["ice","thicknessScale"],replay:!1},attenuationDistance:{path:["ice","attenuationDistance"],replay:!1},attenuationColor:{path:["ice","attenuationColor"],replay:!1},baseRoughness:{path:["ice","baseRoughness"],replay:!1},crumbleGlow:{path:["ice","crumbleGlow"],replay:!1},edgeWhiteness:{path:["ice","edgeWhiteness"],replay:!1},clearcoat:{path:["ice","clearcoat"],replay:!1},clearcoatRoughness:{path:["ice","clearcoatRoughness"],replay:!1},envIntensity:{path:["ice","envIntensity"],replay:!1},specularIntensity:{path:["ice","specularIntensity"],replay:!1},interiorScatter:{path:["ice","interiorScatter"],replay:!1},frostScale:{path:["ice","frost","scale"],replay:!1},frostThreshold:{path:["ice","frost","threshold"],replay:!1},frostSoftness:{path:["ice","frost","softness"],replay:!1},frostRoughness:{path:["ice","frost","roughness"],replay:!1},frostDiffuse:{path:["ice","frost","diffuse"],replay:!1},crystalBump:{path:["ice","frost","crystalBump"],replay:!1},crystalScale:{path:["ice","frost","crystalScale"],replay:!1},crackLargeScale:{path:["ice","cracks","largeScale"],replay:!1},crackWarp:{path:["ice","cracks","warp"],replay:!1},crackWarpScale:{path:["ice","cracks","warpScale"],replay:!1},crackCoverage:{path:["ice","cracks","coverage"],replay:!1},crackRegionScale:{path:["ice","cracks","regionScale"],replay:!1},crackRegionCoverage:{path:["ice","cracks","regionCoverage"],replay:!1},veinScale:{path:["ice","cracks","veinScale"],replay:!1},veinContrast:{path:["ice","cracks","veinContrast"],replay:!1},crackWidth:{path:["ice","cracks","width"],replay:!1},crackBrightness:{path:["ice","cracks","brightness"],replay:!1},crackDarkness:{path:["ice","cracks","darkness"],replay:!1},crackRefraction:{path:["ice","cracks","refraction"],replay:!1},crackSurfaceStrength:{path:["ice","cracks","surfaceStrength"],replay:!1},fineScale:{path:["ice","cracks","fineScale"],replay:!1},fineAmount:{path:["ice","cracks","fineAmount"],replay:!1},fineCoverage:{path:["ice","cracks","fineCoverage"],replay:!1},smudgeAmount:{path:["ice","smudges","amount"],replay:!1},smudgeCoverage:{path:["ice","smudges","coverage"],replay:!1},smudgeMaskScale:{path:["ice","smudges","maskScale"],replay:!1},smudgeAnisotropy:{path:["ice","smudges","anisotropy"],replay:!1},smudgeRoughness:{path:["ice","smudges","roughness"],replay:!1},smudgeWhiteness:{path:["ice","smudges","whiteness"],replay:!1},smudgeScale:{path:["ice","smudges","scale"],replay:!1},microBump:{path:["ice","bumps","microBump"],replay:!1},microScale:{path:["ice","bumps","microScale"],replay:!1},microCoverage:{path:["ice","bumps","microCoverage"],replay:!1},rippleBump:{path:["ice","bumps","rippleBump"],replay:!1},rippleScale:{path:["ice","bumps","rippleScale"],replay:!1},bumpMaskScale:{path:["ice","bumps","maskScale"],replay:!1},baseTone:{path:["powder","baseTone"],replay:!1},fragTranslucency:{path:["powder","fragments","translucency"],replay:!1},fragThroughTint:{path:["powder","fragments","throughTint"],replay:!1},fragFresnelPower:{path:["powder","fragments","fresnelPower"],replay:!1},fragRoughness:{path:["powder","fragments","roughness"],replay:!1},fragClearcoat:{path:["powder","fragments","clearcoat"],replay:!1},fragSpecular:{path:["powder","fragments","specular"],replay:!1},sparkle:{path:["powder","fragments","sparkle"],replay:!1},sparkleFraction:{path:["powder","fragments","sparkleFraction"],replay:!1},spriteTilt:{path:["powder","sprites","tilt"],replay:!1},spriteNormal:{path:["powder","sprites","normalStrength"],replay:!1},spriteFrost:{path:["powder","sprites","frostFromAtlas"],replay:!1},spriteFrostBoost:{path:["powder","sprites","frostBoost"],replay:!1},spriteFrostRoughness:{path:["powder","sprites","frostRoughness"],replay:!1},spriteEdgeLight:{path:["powder","sprites","edgeLight"],replay:!1},spriteAlphaCut:{path:["powder","sprites","alphaCut"],replay:!1},spriteSeeThrough:{path:["powder","sprites","seeThrough"],replay:!1},bloomThreshold:{path:["post","bloom","threshold"],replay:!1},bloomIntensity:{path:["post","bloom","intensity"],replay:!1},bloomRadius:{path:["post","bloom","radius"],replay:!1},monochrome:{path:["post","monochrome"],replay:!1},tonemap:{path:["post","tonemap"],replay:!1},exposure:{path:["post","exposure"],replay:!1},contrast:{path:["post","contrast"],replay:!1},blackLift:{path:["post","blackLift"],replay:!1},vignetteStrength:{path:["post","vignette","strength"],replay:!1},vignetteSoftness:{path:["post","vignette","softness"],replay:!1},vignetteRadius:{path:["post","vignette","radius"],replay:!1},grainStrength:{path:["post","grain","strength"],replay:!1},cutThreshold:{path:["erosion","cutThreshold"],replay:!1},cutSoftness:{path:["erosion","cutSoftness"],replay:!1},edgeWidth:{path:["erosion","edgeWidth"],replay:!1},edgeInset:{path:["erosion","edgeInset"],replay:!1},brushSoftness:{path:["erosion","brushSoftness"],replay:!0},brushNoise:{path:["erosion","brushNoise"],replay:!0},crumbleRate:{path:["erosion","crumbleRate"],replay:!0},crumbleCrackBias:{path:["erosion","crumbleCrackBias"],replay:!0},crumbleDuration:{path:["erosion","crumbleDuration"],replay:!0},ejectSpeed:{path:["powder","ejectSpeed"],replay:!0},ejectSpread:{path:["powder","ejectSpread"],replay:!0},ejectTurbulence:{path:["powder","ejectTurbulence"],replay:!0},drag:{path:["powder","drag"],replay:!0},gravity:{path:["powder","gravity"],replay:!0},turbulence:{path:["powder","turbulence"],replay:!0},settleTime:{path:["powder","settleTime"],replay:!0},maxSpeed:{path:["powder","maxSpeed"],replay:!0},minPixelSize:{path:["powder","minPixelSize"],replay:!1},grainSizeMultiplier:{path:["powder","grainSizeMultiplier"],replay:!1},spriteSize:{path:["powder","sprites","sizeScale"],replay:!1},returnSpring:{path:["healing","returnSpring"],replay:!0},returnDamping:{path:["healing","returnDamping"],replay:!0},returnRamp:{path:["healing","returnRamp"],replay:!0},returnMaxSpeed:{path:["healing","returnMaxSpeed"],replay:!0},healRate:{path:["healing","healRate"],replay:!0},cellRestore:{path:["healing","cellRestore"],replay:!0},landedFade:{path:["healing","landedFade"],replay:!0},refrostTime:{path:["healing","refrostTime"],replay:!0}},q2=Object.freeze(Object.fromEntries(Object.entries(Gx).filter(([e,t])=>e.startsWith("material")||["ice","lighting","post"].includes(t.path[0])||["baseTone","wrap","sparkle","sparkleFraction"].includes(e)||e.startsWith("frag")||e.startsWith("sprite")).map(([e])=>[e,Io[e]]))),gf=[-1,.3,0],yf=[1,-.3,0];function Fk(e){return JSON.stringify([e.headlines,{...e.text,meshDetail:f2(e.text.meshDetail)},Nx(e.deformation),e.quality,e.upscaler,e.renderScale,e.shapeResolution??"256",e.erosionResolution,e.particleCount,e.logoUrl,g2(e.logoMeshDetail),e.shards.strayDust,Number(e.tune.spriteSeeThrough??q2.spriteSeeThrough)>0])}function m0e(e){e={...e,logoMeshDetail:g2(e.logoMeshDetail),text:{...e.text,meshDetail:f2(e.text.meshDetail)}};let t=null,r=null,i=!1,s=-1,a=-1,n=0,o=null,l=0,u=null,h=U=>{th.stages.push([U,performance.now()-th.start]),e.onProgress?.(U)},d=e.schedule,c=e.pose,m=e.shards,g=c2(e.cameraTrack),y=()=>e.cameraMode==="authored"&&g.keys.length>0,b=()=>y()&&g.objectMotion==="stationary";function v(){t&&(t.onCameraTransform=y()?U=>{t&&vce(t.camera,g,U,t.objectGroup.matrixWorld,t.rig.lookAt)}:null,y()||(t.camera.zoom=1,t.camera.updateProjectionMatrix()))}let S=Fk(e),T=[],w=[],N=[],C=null,R=-1,E=null,P=(U,J)=>{let q=le;for(let se=0;se{if(await new Promise(Fe=>setTimeout(Fe,250)),i)return;let U=navigator;if(!U.gpu)throw new Error("Frost: navigator.gpu is unavailable (WebGPU required)");if(!await U.gpu.requestAdapter().catch(()=>null))throw new Error("Frost: no WebGPU adapter");h("webgpu adapter"),O();let J=new qX({canvas:e.canvas,antialias:!1,forceWebGL:!1,powerPreference:"high-performance",trackTimestamp:!1});if(await J.init(),J.backend?.isWebGLBackend)throw new Error("Frost: WebGPU backend unavailable, WebGL fallback is not supported");J.toneMapping=eo,J.outputColorSpace=ds,J.shadowMap.enabled=le.lighting.shadow.intensity>0,J.shadowMap.type=Lh,J.setPixelRatio(1),J.setSize(e.width,e.height,!1),r=J,h("renderer");let q=new bg,se=new gs(30,e.width/e.height,.5,80);se.position.set(0,1.2,13.5);let pe=le.shape.logo,Te=le.powder,we={"100k":1e5,"250k":25e4,"500k":5e5,"1M":1e6}[Te.particleCount]??1e5,ie=Nx(e.deformation),V=!!e.rig&&!e.rig.sequence,Oe=JSON.stringify([o0e,V,ie,e.headlines,e.text,e.logoUrl,e.logoMeshDetail,pe,we,Te.nearSurfaceFraction,Te.nearSurfaceDepth,le.shape.seed,le.shape.size]),tt=await new tb().loadAsync(a2("textures/bluenoise64.png")).then(Fe=>(Fe.wrapS=Fe.wrapT=to,Fe.minFilter=Fe.magFilter=or,Fe.generateMipmaps=!1,Fe.colorSpace=Fa,Fe)),Je=await new tb().loadAsync(a2("textures/ice-inclusions-generated.png")).then(Fe=>(Fe.wrapS=Fe.wrapT=Qo,Fe.minFilter=Ia,Fe.magFilter=lr,Fe.generateMipmaps=!0,Fe.colorSpace=Fa,Fe)),ct=0,_e=new URLSearchParams(location.search).has("fresh")?null:await l0e(Oe).catch(()=>null);if(_e&&_e.geometries.length===(V?1:3)&&_e.sdfs.length===(V?1:3)&&_e.rests.length===(V?0:2)){for(let Fe of _e.geometries)T.push(d0e(Fe));for(let Fe of _e.sdfs)w.push(F1(Fe.data,Fe.res,Fe.bound,Fe.thickness,Fe.sampleBound));ct=_e.sdfs[0].bound,h("shapes (cached)")}else{let Fe=e.fontUrl.replace(/Geist-[A-Za-z]+\.ttf$/,`Geist-${e.text.weight===400?"Regular":e.text.weight===600?"SemiBold":"Bold"}.ttf`),[it,Rt]=await Promise.all([Qae(e.logoUrl,pe),V?Promise.resolve(null):r0e(Fe)]);if(i)return;if(!it.length)throw new Error("Frost: the logo SVG produced no shapes");h("assets"),T.push(G5(it,pe,pe.width));let Ft={...pe,depth:e.text.depth,bevelThickness:e.text.bevel,bevelSize:e.text.bevel*.8,bevelOffset:0,cornerRadius:e.text.corner,curveSegments:10,bevelSegments:4};for(let Ze of V?[]:e.headlines){let ht=Ze.map(Gi=>Gi.trim()).filter(Boolean);ht.length||ht.push(" ");let Yt=Math.max(.001,...ht.map(Gi=>i0e(Rt,Gi,e.text.letterSpacing))),Tr=e.text.width/Yt;T.push(G5(s0e(Rt,ht,Tr,e.text.lineHeight,e.text.letterSpacing),Ft,Tr))}for(let Ze=0;ZesetTimeout(Yt,0)),i)return;T[Ze]=Bce(ht,ie,pe.creaseAngle,Ze===0?void 0:e.text.meshDetail,Ze===0?e.logoMeshDetail:void 0),Ze>0&&h(`text mesh ${Ze}/2 \xB7 ${T[Ze].getAttribute("position").count/3} triangles`),await new Promise(Yt=>setTimeout(Yt,0)),T[Ze]!==ht&&ht.dispose()}for(let Ze of T){let ht=Fm(Ze);ct=Math.max(ct,ht.x,ht.y,ht.z)}ct*=1.15;for(let Ze of T){let ht=Fm(Ze),Yt=Math.max(ht.x,ht.y,ht.z)*1.15;w.push(qa.gpu?await nne(J,Ze,ct,pe.sdfRes,Yt):Kae(Ze,ct,pe.sdfRes,Yt)),await new Promise(Tr=>setTimeout(Tr,0))}if(i)return;h("shapes")}C=F1(w[0].data.slice(),w[0].res,ct,w[0].thickness,w[0].sampleDomain.value),hx.extraShell=2*ct/pe.sdfRes*2;let nt=le.shape.size,dt=T.slice();for(let Fe=0;Fe{if(!t)return;if(E){E.pose(Fe);return}let it=Sce(Fe,d,c,R,b());t.motionGroup.quaternion.copy(it.rotation),t.motionGroup.position.copy(it.position),t.objectGroup.quaternion.copy(it.facing)},R=0,v();let ft=t.powder;if(N.push(ft.restInit.slice()),_e&&_e.rests.length===2)for(let Fe of _e.rests){let it=ft.restInit.slice();it.set(Fe.subarray(0,ft.count*4)),N.push(it)}else{for(let Fe=1;FesetTimeout(ht,0))}new URLSearchParams(location.search).has("fresh")||u0e(Oe,{geometries:dt.map(h0e),sdfs:w.map(Fe=>({data:Fe.data,res:Fe.res,bound:Fe.bound,thickness:Fe.thickness,sampleBound:Fe.sampleDomain.value})),rests:N.slice(1).map(Fe=>Fe.slice(0,ft.count*4))}).catch(()=>{})}e.rig&&(E=new Tse(t,{...e.rig,retarget:Fe=>ge(Fe,!0)})),window.__fb={world:t,renderer:J,D:le,sim:pt,clock:ta},h("world")})(),H=p2(d,c);function ue(){H=p2(d,c)}let ne=U=>{let J=H(U);return new si().setFromEuler(new cn(Bt.degToRad(J.pitch),Bt.degToRad(J.yaw),0,"YXZ"))},re=new si;function ce(U){if(U===0||b())return new si;let J=U===1?d.form1+2.8:d.form2+2.8;return ne(J).invert()}function ge(U,J){if(!t||!r||!C)return;let q=w[U];U!==R&&(C.data.set(q.data),C.sampleDomain.value=q.sampleDomain.value,C.sampleBoundNode&&(C.sampleBoundNode.value=q.sampleDomain.value),C.texture.needsUpdate=!0,C.thickness=q.thickness,t.shape=cw("logo",le.shape.size,le.shape.tubeRatio,C),t.mesh.geometry=T[U],R=U),re.copy(e.rig?new si:ce(U)),t.objectGroup.quaternion.copy(re),t.motionGroup.updateMatrixWorld(!0),t.powder.syncModel(),t.erosion.rebake(r,J),t.powder.retarget(r,N[U])}function ye(U=!1){if(!t||!r)return;L(),t.erosion.u.reconstruct.value=0,le.powder.repelFromObject=!0;let J=U?m.finalEjectBoost:1;le.powder.ejectSpeed=Number(e.tune.ejectSpeed)*J,le.powder.maxSpeed=Number(e.tune.maxSpeed)*J,le.powder.minEjectSpeed=.66*J,le.version++,t.powder.restoreThresholds(r),t.interaction.sweep({from:gf,to:yf,duration:.7,radius:m.sliceRadius,strength:m.sliceStrength})}function oe(){if(!t)return;let U=t.shape.bound,J=yf[0]-gf[0],q=yf[1]-gf[1],se=Math.hypot(J,q),pe=-q/se,Te=J/se,we=Math.max(.15,m.shatterRadius*1.7)/U,ie=Math.max(1,Math.ceil(1.25/we)),V=m.breakDuration/(ie*2),Oe=0;for(let tt=1;tt<=ie;tt++)for(let Je of[1,-1]){let ct=Je*tt*we;t.interaction.sweep({from:[gf[0]+pe*ct,gf[1]+Te*ct,0],to:[yf[0]+pe*ct,yf[1]+Te*ct,0],duration:.5,delay:Oe*V,radius:m.shatterRadius,strength:m.shatterStrength}),Oe++}}function Ae(){!t||!r||(r.compute(t.erosion.fillNode),le.powder.repelFromObject=!1,le.version++)}function Ie(U){t&&(t.powder.u.assemblyEnd.value=(U===1?d.break1:d.break2)-.65,ge(U,!0),pt.lastStrokeT=ta.t,X())}function Xe(){t&&(L(),t.mesh.visible=!1,le.healing.resetFade=QF*1e3,pt.resetRequestedAt=ta.t)}function at(){t&&(a=-1,le.powder.repelFromObject=!0,t.resetSim(),t.interaction.clearScripted(),re.identity(),ge(0,!1),e.rig?.sequence&&r&&t.powder.reset(r),L(),le.healing.resetFade=50,Ui.inside=!1,Ui.x=0,Ui.y=0,Ui.lastMoveT=0,Ui.moved=!1,E?.reset(),s=0)}function W(U,J){if(!t)return;let q=U*Ah;if(E){s2(U),t.frame(q,Ah,J);return}ta.t=q;let se=pe=>Math.round(pe/Ah)===U;for(let pe of[d.logoBreak,d.break1,d.break2])se(pe)&&ye(pe===d.break2),se(pe+.3)&&oe(),se(pe+.3+m.breakDuration+.5)&&Ae();se(d.form1)&&Ie(1),se(d.form2)&&Ie(2),se(d.fadeOut)&&Xe(),s2(U),t.frame(q,Ah,J)}async function j(){let U=-1,J=0;for(;!i&&t&&r;){let q=l;(s<0||q60?q-Ik:q,U=q);let se=Math.min(q,s+8);if(q===s&&a!==q){s2(q);let Te=e.rig&&q===0&&a<0?Ik:1;for(let we=0;weJ;W(s,Te),Te&&(a=s)}let pe=r.backend?.device?.queue;if(pe?.onSubmittedWorkDone&&await pe.onSubmittedWorkDone(),i||s===l&&a===l)return;await new Promise(Te=>setTimeout(Te,0))}}function G(U){i||(n=Number.isFinite(U)?Math.max(0,Math.min(e.rig?.duration??y2(d),U)):0,l=Math.round(n/Ah),!(!t||!r||o)&&(u=null,o=Promise.resolve().then(j).catch(J=>{u=J,console.error("Frost seek failed",J)}).finally(()=>{o=null})))}function ae(){a=-1,G(n)}function be(U,J){if(J!==S)return"rebuild";let q=!1,se=(Te,we)=>JSON.stringify(Te)===JSON.stringify(we);(!se(U.schedule,d)||!se(U.pose,c))&&(q=!0);let pe=b();g=c2(U.cameraTrack),e.cameraTrack=g,e.cameraMode=U.cameraMode,pe!==b()&&(q=!0),v(),se(U.shards,m)||(q=!0);for(let[Te,we]of Object.entries(U.tune))if(e.tune[Te]!==we){let ie=Gx[Te];ie&&(P(ie.path,we),ie.replay&&(q=!0))}return e.schedule=d=U.schedule,e.pose=c=U.pose,e.shards=m=U.shards,e.tune={...U.tune},le.powder.amount=m.amount,le.powder.inheritTime=m.followObject*1e3,le.version++,ue(),t&&(q?(s=-1,a=-1,G(n)):ae()),"live"}async function Be(){for(await z;o;)await o;if(u)throw u}function $(){i=!0,t?.dispose(),t=null,E?.dispose();for(let U of w)U.texture.dispose();C?.texture.dispose(),C=null;for(let U of T)U.dispose();r&&(r.dispose(),r=null),Ht.enabled=!1,Ht.shape=null,Ht.cameraOverride=null,delete window.__fb}return{ready:z,renderAt:G,redraw:ae,invalidate:()=>{s=-1,a=-1},waitForGpu:Be,poseAt:U=>H(U),applyOptions:be,structuralKey:S,get world(){return t},get shape(){return R},dispose:$}}return xD(gM)})(); diff --git a/registry/blocks/frost-sequence-camera-orbit/registry-item.json b/registry/blocks/frost-sequence-camera-orbit/registry-item.json index be5415a79f..c60d85048c 100644 --- a/registry/blocks/frost-sequence-camera-orbit/registry-item.json +++ b/registry/blocks/frost-sequence-camera-orbit/registry-item.json @@ -90,6 +90,12 @@ "target": "compositions/frost-sequence-camera-orbit/assets/logo.svg", "type": "hyperframes:asset" }, + { + "path": "assets/shards-atlas.png", + "target": "compositions/frost-sequence-camera-orbit/assets/shards-atlas.png", + "type": "hyperframes:asset", + "url": "https://static.heygen.ai/hyperframes-oss/registry-assets/122961c82d240e47.png" + }, { "path": "assets/test-mark.svg", "target": "compositions/frost-sequence-camera-orbit/assets/test-mark.svg", @@ -100,6 +106,12 @@ "target": "compositions/frost-sequence-camera-orbit/assets/textures/bluenoise64.png", "type": "hyperframes:asset" }, + { + "path": "assets/textures/ice-inclusions-generated.png", + "target": "compositions/frost-sequence-camera-orbit/assets/textures/ice-inclusions-generated.png", + "type": "hyperframes:asset", + "url": "https://static.heygen.ai/hyperframes-oss/registry-assets/4bea3a8ab90c9527.png" + }, { "path": "SKILL.md", "target": "compositions/frost-sequence-camera-orbit/SKILL.md", diff --git a/registry/blocks/frost-sequence-camera-orbit/source/src/frost.ts b/registry/blocks/frost-sequence-camera-orbit/source/src/frost.ts index 9d94648388..439e25ca41 100644 --- a/registry/blocks/frost-sequence-camera-orbit/source/src/frost.ts +++ b/registry/blocks/frost-sequence-camera-orbit/source/src/frost.ts @@ -649,9 +649,7 @@ export function create(o: FrostOptions): FrostInstance { return tex; }); const fractureDetail = await new THREE.TextureLoader() - .loadAsync( - "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/frost-sequence-camera-orbit/textures/ice-inclusions-generated.png", - ) + .loadAsync(assetUrl("textures/ice-inclusions-generated.png")) .then((tex) => { tex.wrapS = tex.wrapT = THREE.MirroredRepeatWrapping; tex.minFilter = THREE.LinearMipmapLinearFilter; diff --git a/registry/blocks/frost-sequence-camera-orbit/source/src/powder/shardAtlas.ts b/registry/blocks/frost-sequence-camera-orbit/source/src/powder/shardAtlas.ts index 2690d12223..938b764794 100644 --- a/registry/blocks/frost-sequence-camera-orbit/source/src/powder/shardAtlas.ts +++ b/registry/blocks/frost-sequence-camera-orbit/source/src/powder/shardAtlas.ts @@ -1,7 +1,7 @@ // generated by scratchpad/atlas/atlas.mjs from the Higgsfield shard sheet (16 shards, 4x4) // R,G = tangent-space normal xy, B = frost/structure, A = silhouette * (0.35 + 0.65 * thickness) -export const SHARD_ATLAS_URL = - "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/frost-sequence-camera-orbit/shards-atlas.png"; // FROST: was '/shards-atlas.png' +import { assetUrl } from "../assets"; +export const SHARD_ATLAS_URL = assetUrl("shards-atlas.png"); // FROST: was '/shards-atlas.png' export const SHARD_GRID = 4; /** used extent of each cell (fraction of the cell), row-major from the top-left */ export const SHARD_CELLS: [number, number][] = [ diff --git a/registry/blocks/glass-shard-title/SKILL.md b/registry/blocks/glass-shard-title/SKILL.md index ea6e676e65..f82bb257ec 100644 --- a/registry/blocks/glass-shard-title/SKILL.md +++ b/registry/blocks/glass-shard-title/SKILL.md @@ -19,6 +19,7 @@ Composition id: `glass-shard-title`. Duration 12.16 s at 30 fps, 1920×1080. - `assets/fonts/CormorantGaramond-OFL.txt` (4 KB) - `assets/glass-main.js` (549 KB) - `assets/glass-main.mjs` (37 KB, ESM source `build-bundle.mjs` compiles into `glass-main.js`) +- `assets/matcap-1.png` (3.0 MB) - `build-bundle.mjs` (1 KB) - `compositions/glass-shard-title.html` (565 KB) - `hyperframes.json` (1 KB) diff --git a/registry/blocks/glass-shard-title/assets/glass-main.js b/registry/blocks/glass-shard-title/assets/glass-main.js index 6a4bdf420f..485851fc95 100644 --- a/registry/blocks/glass-shard-title/assets/glass-main.js +++ b/registry/blocks/glass-shard-title/assets/glass-main.js @@ -3948,7 +3948,7 @@ void main() { `))&&b=_.byteLength||!(L=r(_)))&&t(1,"no header found"),(U=L.match(f))||t(3,"bad initial token"),C.valid|=1,C.programtype=U[1],C.string+=L+` `;L=r(_),L!==!1;){if(C.string+=L+` `,L.charAt(0)==="#"){C.comments+=L+` -`;continue}if((U=L.match(p))&&(C.gamma=parseFloat(U[1])),(U=L.match(A))&&(C.exposure=parseFloat(U[1])),(U=L.match(S))&&(C.valid|=2,C.format=U[1]),(U=L.match(b))&&(C.valid|=4,C.height=parseInt(U[1],10),C.width=parseInt(U[2],10)),C.valid&2&&C.valid&4)break}return C.valid&2||t(3,"missing format specifier"),C.valid&4||t(3,"missing image size specifier"),C},a=function(_,f,p){let A=f;if(A<8||A>32767||_[0]!==2||_[1]!==2||_[2]&128)return new Uint8Array(_);A!==(_[2]<<8|_[3])&&t(3,"wrong scanline width");let S=new Uint8Array(4*f*p);S.length||t(4,"unable to allocate buffer space");let b=0,C=0,L=4*A,U=new Uint8Array(4),B=new Uint8Array(L),M=p;for(;M>0&&C<_.byteLength;){C+4>_.byteLength&&t(1),U[0]=_[C++],U[1]=_[C++],U[2]=_[C++],U[3]=_[C++],(U[0]!=2||U[1]!=2||(U[2]<<8|U[3])!=A)&&t(3,"bad rgbe scanline format");let y=0,R;for(;y128;if(W&&(R-=128),(R===0||y+R>L)&&t(3,"bad scanline data"),W){let k=_[C++];for(let ee=0;ee{let e=window.__GST,t=e.st;if(window.__gstInstance&&window.__gstInstance.dispose)try{window.__gstInstance.dispose()}catch{}let r=document.getElementById("gst-canvas"),i=new Sg({canvas:r,alpha:!0,antialias:!0,preserveDrawingBuffer:!0});i.setSize(1920,1080,!1),i.setPixelRatio(1),i.setClearColor(657935,1),i.toneMapping=Qs;let a=42,n=5.2,s=.6,o=new mc,l=Math.max(60,n+Math.max(-e.vars.zDist,-e.vars.zOut,0)*1.15+e.vars.sideDist*1.5+12),h=new Nt(a,1920/1080,.1,l);h.position.set(0,0,n);let c=2*(n-s)*Math.tan(a*Math.PI/360),u=c*(1920/1080);o.add(new Eu(16777215,.6));let d=new Mu(16777215,7,0,Math.PI/4,.5,1);d.position.set(0,7.1,2),o.add(d);let m=new Su(13426175,4,0,1);m.position.set(0,-3,1),o.add(m);let x=await new Tg().loadAsync("assets/ferndale_studio_01_1k.hdr"),_=new Hs(i),f=_.fromEquirectangular(x);o.environment=f.texture,o.environmentRotation=new cr(0,.6,0),x.dispose(),_.dispose();let p=await new vu().loadAsync("https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/glass-shard-title/matcap-1.png");p.colorSpace=Pt,p.wrapS=p.wrapT=Ni;let A=1/.2;p.repeat.set(A,A),p.offset.set((1-A)*.5,(1-A)*.5);try{await Promise.all([document.fonts.load('600 100px "Geist"'),document.fonts.load('400 100px "Geist"')]),await document.fonts.ready}catch{}let S=4096,b=Math.round(S*(c/u)),C=document.createElement("canvas");C.width=S,C.height=b;let L=C.getContext("2d");{L.clearRect(0,0,S,b),L.textAlign="center",L.textBaseline="middle";let O=300;L.font=`600 ${O}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*O}px`;let G=L.measureText(e.vars.headline).width,V=S*.7;G>V&&(O=Math.floor(O*V/G)),L.font=`600 ${O}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*O}px`,L.fillStyle="#f4f4f8",L.fillText(e.vars.headline,S/2,b/2),e.fontPx=O}let U=new Wo(C);U.colorSpace=Pt,U.anisotropy=16;let B=document.createElement("canvas");B.width=1280,B.height=Math.round(1280*(c/u));let M=B.getContext("2d",{willReadFrequently:!0});{let O=B.width/S;M.clearRect(0,0,B.width,B.height),M.textAlign="center",M.textBaseline="middle",M.font=`600 ${e.fontPx*O}px "Geist", ui-sans-serif, sans-serif`,M.letterSpacing=`${-.035*e.fontPx*O}px`,M.fillStyle="#fff",M.strokeStyle="#fff",M.lineWidth=e.fontPx*O*.22,M.lineJoin="round",M.strokeText(e.vars.headline,B.width/2,B.height/2),M.fillText(e.vars.headline,B.width/2,B.height/2)}let y=M.getImageData(0,0,B.width,B.height).data,R=B.width,q=B.height;function W(O,G){if(!y)return!1;let V=Math.round((O/u+.5)*(R-1)),ue=Math.round((.5-G/c)*(q-1));return V<0||ue<0||V>=R||ue>=q?!1:y[(ue*R+V)*4+3]>24}{L.font=`600 ${e.fontPx}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*e.fontPx}px`;let O=L.measureText(e.vars.headline);e.bandW=(O.width+e.fontPx*.2)/S*u,e.bandH=(O.actualBoundingBoxAscent+O.actualBoundingBoxDescent+e.fontPx*.34)/b*c}let k=11,ee=gstMulberry32(k),j=e.bandW/2,le=e.bandH/2,X=e.bandH*(.18+e.vars.padding*.85),ie=j+X,Se=le+X,Ge=gstMulberry32(k*511+3),ze=[];for(let O=2;O<=9;O++)ze.push({k:O,amp:(Ge()*2-1)/Math.sqrt(O),ph:Ge()*Math.PI*2});function it(O,G,V){return O*G/Math.hypot(G*Math.cos(V),O*Math.sin(V))}function tt(O){let G=0;for(let H of ze)G+=H.amp*Math.sin(H.k*O+H.ph);let V=it(ie,Se,O)*(1+e.vars.chaos*2.4*G),ue=Math.abs(Math.cos(O)),g=Math.abs(Math.sin(O)),w=Math.min(ue>1e-6?(j+X*.3)/ue:1e9,g>1e-6?(le+X*.3)/g:1e9);V=Math.max(V,w);let D=Math.abs(Math.cos(O)),I=Math.abs(Math.sin(O)),P=Math.min(D>1e-6?u*.44/D:1e9,I>1e-6?c*.43/I:1e9);return Math.min(V,P)}function K(O,G){return Math.hypot(O,G)<=tt(Math.atan2(G,O))}let fe=0,ce=0,be=0;for(let O=0;O<96;O++){let G=O/96*Math.PI*2,V=tt(G);fe+=.5*V*V*(Math.PI*2/96),ce=Math.max(ce,Math.abs(V*Math.cos(G))),be=Math.max(be,Math.abs(V*Math.sin(G)))}let Ve=Math.max(1,Math.min(400,Math.round(e.vars.tileCount))),Ae=[-ce*1.3,-be*1.3,ce*1.3,be*1.3],je=e.vars.sizeVariance,qe=gstMulberry32(k*977+5),Z=[],T=0;for(;Z.length<4&&T++<400;){let O=(qe()*2-1)*ce,G=(qe()*2-1)*be;K(O,G)&&Z.push([O,G])}function de(O){let G=Math.max(1e-9,O()),V=O();return Math.sqrt(-2*Math.log(G))*Math.cos(2*Math.PI*V)}let se=[],me=0,oe=Math.max(ce,be)*.14;for(;se.length{let g=G.cellPolygon(ue);if(!g||g.length<3)return V;let w=0,D=0;for(let I of g)w+=I[0],D+=I[1];return[w/g.length,D/g.length]})}function v(O,G,V,ue){let g=(O[0]-G[0])*(V[1]-ue[1])-(O[1]-G[1])*(V[0]-ue[0]);if(Math.abs(g)<1e-9)return null;let w=((O[0]-V[0])*(V[1]-ue[1])-(O[1]-V[1])*(V[0]-ue[0]))/g;return[O[0]+w*(G[0]-O[0]),O[1]+w*(G[1]-O[1])]}function F(O,G){if(G<=0)return O;let V=O.length;if(V<3)return null;let ue=[];for(let I=0;IG!=H>G&&O<(P-D)*(G-I)/(H-I)+D&&(ue=!ue)}return ue}function $(O){let G=1e9,V=1e9,ue=-1e9,g=-1e9;for(let[D,I]of O)Due&&(ue=D),Ig&&(g=I);let w=7;for(let D=0;D0?1:-1,ue=O;for(let g=0;gV*((D[0]-w[0])*(H[1]-w[1])-(D[1]-w[1])*(H[0]-w[0]))>=-1e-9;for(let H=0;H6;ue++){let g=[],w=!1;for(let D=0;D5){w=!0;continue}w=!1,g.push(P)}if(g.length===V.length)break;V=g}return V}let Te=d3.Delaunay.from(se).voronoi(Ae);function Xe(O){if(!O||O.length<3)return null;let G=[];for(let ue of O){let g=G[G.length-1];g&&Math.hypot(ue[0]-g[0],ue[1]-g[1])<1e-4||G.push(ue)}for(;G.length>1&&Math.hypot(G[0][0]-G[G.length-1][0],G[0][1]-G[G.length-1][1])<1e-4;)G.pop();if(G.length<3)return null;let V=[];for(let ue=0;ueMath.sign((ne[0]-H[0])*(he[1]-H[1])-(ne[1]-H[1])*(he[0]-H[0])),w=g(O,G,V),D=g(O,G,ue),I=g(V,ue,O),P=g(V,ue,G);return w!==D&&I!==P&&w!==0&&D!==0&&I!==0&&P!==0}function ve(O){let G=O.length;for(let V=0;V1e-6&&he[P[0]-D,P[1]-I])})}y=null,B.width=B.height=1;let re=ae.map(O=>{let G=O.cx>=0?1:-1,V=[G*e.vars.sideDist*(.7+N()*.6),e.vars.sideDist===0&&e.vars.zDist===0?0:(N()-.5)*1.7,e.vars.zDist*(.85+N()*.3)],ue=[(N()-.5)*Math.PI*1*e.vars.flyInRotation,(N()-.5)*Math.PI*1.3*e.vars.flyInRotation,(N()-.5)*Math.PI*.5*e.vars.flyInRotation],g=[G*e.vars.sideDist*(.8+N()*.7),e.vars.sideDist===0&&e.vars.zOut===0?0:(N()-.5)*2.2,e.vars.zOut*(.85+N()*.3)],w=[(N()-.5)*Math.PI*1.6*e.vars.flyOutRotation,(N()-.5)*Math.PI*2*e.vars.flyOutRotation,(N()-.5)*Math.PI*.8*e.vars.flyOutRotation];return{cx:O.cx,cy:O.cy,local:O.local,radius:O.radius,baseRot:[(xe()-.5)*.08,(xe()-.5)*.08,(xe()-.5)*.03],wobPhase:xe()*Math.PI*2,wobFreq:.45+xe()*.5,inOff:V,inSpin:ue,outOff:g,outSpin:w,rIn:N(),rOut:N()}}),Q=Math.max(1,re.length-1),Le=re.map((O,G)=>[Math.abs(O.cx),G]).sort((O,G)=>O[0]-G[0]),Fe=e.vars.stagger;Le.forEach((O,G)=>{let V=re[O[1]];V.inDelay=Fe*.85*(G/Q)+V.rIn*.05*Fe,V.inDur=1-V.inDelay}),re.map((O,G)=>[Math.abs(O.cx),G]).sort((O,G)=>G[0]-O[0]).forEach((O,G)=>{let V=re[O[1]];V.outDelay=Fe*.85*(G/Q)+V.rOut*.05*Fe,V.outDur=Math.max(.12,1-V.outDelay)});function gt(O){let G=document.createElement("canvas");G.width=O,G.height=O;let V=G.getContext("2d"),ue=V.createLinearGradient(0,0,O,O);ue.addColorStop(0,"#202020"),ue.addColorStop(.5,"#a0a0a0"),ue.addColorStop(1,"#f0f0f0"),V.fillStyle=ue,V.fillRect(0,0,O,O);let g=V.createRadialGradient(O*.3,O*.4,0,O*.3,O*.4,O*.9);g.addColorStop(0,"rgba(255,255,255,0.4)"),g.addColorStop(1,"rgba(0,0,0,0)"),V.fillStyle=g,V.fillRect(0,0,O,O);let w=new Wo(G);return w.wrapS=w.wrapT=Ni,w}{let O=2*(n+3.5)*Math.tan(a*Math.PI/360),G=new Zt(new Us(O*(1920/1080)*1.05,O*1.05),new vs({color:657935,depthWrite:!1,depthTest:!1}));G.position.z=-3.5,G.renderOrder=-1,o.add(G)}let nt=n-s+.28,Bt=e.vars.fog>0?4.6/Math.max(2,e.vars.fog):0;function Ht(O,G){O.uniforms.uGstFogStart={value:nt},O.uniforms.uGstFogRho={value:Bt},O.uniforms.uGstFogColor={value:new Qe(657935)},O.vertexShader=O.vertexShader.replace("#include ",`#include +`;continue}if((U=L.match(p))&&(C.gamma=parseFloat(U[1])),(U=L.match(A))&&(C.exposure=parseFloat(U[1])),(U=L.match(S))&&(C.valid|=2,C.format=U[1]),(U=L.match(b))&&(C.valid|=4,C.height=parseInt(U[1],10),C.width=parseInt(U[2],10)),C.valid&2&&C.valid&4)break}return C.valid&2||t(3,"missing format specifier"),C.valid&4||t(3,"missing image size specifier"),C},a=function(_,f,p){let A=f;if(A<8||A>32767||_[0]!==2||_[1]!==2||_[2]&128)return new Uint8Array(_);A!==(_[2]<<8|_[3])&&t(3,"wrong scanline width");let S=new Uint8Array(4*f*p);S.length||t(4,"unable to allocate buffer space");let b=0,C=0,L=4*A,U=new Uint8Array(4),B=new Uint8Array(L),M=p;for(;M>0&&C<_.byteLength;){C+4>_.byteLength&&t(1),U[0]=_[C++],U[1]=_[C++],U[2]=_[C++],U[3]=_[C++],(U[0]!=2||U[1]!=2||(U[2]<<8|U[3])!=A)&&t(3,"bad rgbe scanline format");let y=0,R;for(;y128;if(W&&(R-=128),(R===0||y+R>L)&&t(3,"bad scanline data"),W){let k=_[C++];for(let ee=0;ee{let e=window.__GST,t=e.st;if(window.__gstInstance&&window.__gstInstance.dispose)try{window.__gstInstance.dispose()}catch{}let r=document.getElementById("gst-canvas"),i=new Sg({canvas:r,alpha:!0,antialias:!0,preserveDrawingBuffer:!0});i.setSize(1920,1080,!1),i.setPixelRatio(1),i.setClearColor(657935,1),i.toneMapping=Qs;let a=42,n=5.2,s=.6,o=new mc,l=Math.max(60,n+Math.max(-e.vars.zDist,-e.vars.zOut,0)*1.15+e.vars.sideDist*1.5+12),h=new Nt(a,1920/1080,.1,l);h.position.set(0,0,n);let c=2*(n-s)*Math.tan(a*Math.PI/360),u=c*(1920/1080);o.add(new Eu(16777215,.6));let d=new Mu(16777215,7,0,Math.PI/4,.5,1);d.position.set(0,7.1,2),o.add(d);let m=new Su(13426175,4,0,1);m.position.set(0,-3,1),o.add(m);let x=await new Tg().loadAsync("assets/ferndale_studio_01_1k.hdr"),_=new Hs(i),f=_.fromEquirectangular(x);o.environment=f.texture,o.environmentRotation=new cr(0,.6,0),x.dispose(),_.dispose();let p=await new vu().loadAsync("assets/matcap-1.png");p.colorSpace=Pt,p.wrapS=p.wrapT=Ni;let A=1/.2;p.repeat.set(A,A),p.offset.set((1-A)*.5,(1-A)*.5);try{await Promise.all([document.fonts.load('600 100px "Geist"'),document.fonts.load('400 100px "Geist"')]),await document.fonts.ready}catch{}let S=4096,b=Math.round(S*(c/u)),C=document.createElement("canvas");C.width=S,C.height=b;let L=C.getContext("2d");{L.clearRect(0,0,S,b),L.textAlign="center",L.textBaseline="middle";let O=300;L.font=`600 ${O}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*O}px`;let G=L.measureText(e.vars.headline).width,V=S*.7;G>V&&(O=Math.floor(O*V/G)),L.font=`600 ${O}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*O}px`,L.fillStyle="#f4f4f8",L.fillText(e.vars.headline,S/2,b/2),e.fontPx=O}let U=new Wo(C);U.colorSpace=Pt,U.anisotropy=16;let B=document.createElement("canvas");B.width=1280,B.height=Math.round(1280*(c/u));let M=B.getContext("2d",{willReadFrequently:!0});{let O=B.width/S;M.clearRect(0,0,B.width,B.height),M.textAlign="center",M.textBaseline="middle",M.font=`600 ${e.fontPx*O}px "Geist", ui-sans-serif, sans-serif`,M.letterSpacing=`${-.035*e.fontPx*O}px`,M.fillStyle="#fff",M.strokeStyle="#fff",M.lineWidth=e.fontPx*O*.22,M.lineJoin="round",M.strokeText(e.vars.headline,B.width/2,B.height/2),M.fillText(e.vars.headline,B.width/2,B.height/2)}let y=M.getImageData(0,0,B.width,B.height).data,R=B.width,q=B.height;function W(O,G){if(!y)return!1;let V=Math.round((O/u+.5)*(R-1)),ue=Math.round((.5-G/c)*(q-1));return V<0||ue<0||V>=R||ue>=q?!1:y[(ue*R+V)*4+3]>24}{L.font=`600 ${e.fontPx}px "Geist", ui-sans-serif, sans-serif`,L.letterSpacing=`${-.035*e.fontPx}px`;let O=L.measureText(e.vars.headline);e.bandW=(O.width+e.fontPx*.2)/S*u,e.bandH=(O.actualBoundingBoxAscent+O.actualBoundingBoxDescent+e.fontPx*.34)/b*c}let k=11,ee=gstMulberry32(k),j=e.bandW/2,le=e.bandH/2,X=e.bandH*(.18+e.vars.padding*.85),ie=j+X,Se=le+X,Ge=gstMulberry32(k*511+3),ze=[];for(let O=2;O<=9;O++)ze.push({k:O,amp:(Ge()*2-1)/Math.sqrt(O),ph:Ge()*Math.PI*2});function it(O,G,V){return O*G/Math.hypot(G*Math.cos(V),O*Math.sin(V))}function tt(O){let G=0;for(let H of ze)G+=H.amp*Math.sin(H.k*O+H.ph);let V=it(ie,Se,O)*(1+e.vars.chaos*2.4*G),ue=Math.abs(Math.cos(O)),g=Math.abs(Math.sin(O)),w=Math.min(ue>1e-6?(j+X*.3)/ue:1e9,g>1e-6?(le+X*.3)/g:1e9);V=Math.max(V,w);let D=Math.abs(Math.cos(O)),I=Math.abs(Math.sin(O)),P=Math.min(D>1e-6?u*.44/D:1e9,I>1e-6?c*.43/I:1e9);return Math.min(V,P)}function K(O,G){return Math.hypot(O,G)<=tt(Math.atan2(G,O))}let fe=0,ce=0,be=0;for(let O=0;O<96;O++){let G=O/96*Math.PI*2,V=tt(G);fe+=.5*V*V*(Math.PI*2/96),ce=Math.max(ce,Math.abs(V*Math.cos(G))),be=Math.max(be,Math.abs(V*Math.sin(G)))}let Ve=Math.max(1,Math.min(400,Math.round(e.vars.tileCount))),Ae=[-ce*1.3,-be*1.3,ce*1.3,be*1.3],je=e.vars.sizeVariance,qe=gstMulberry32(k*977+5),Z=[],T=0;for(;Z.length<4&&T++<400;){let O=(qe()*2-1)*ce,G=(qe()*2-1)*be;K(O,G)&&Z.push([O,G])}function de(O){let G=Math.max(1e-9,O()),V=O();return Math.sqrt(-2*Math.log(G))*Math.cos(2*Math.PI*V)}let se=[],me=0,oe=Math.max(ce,be)*.14;for(;se.length{let g=G.cellPolygon(ue);if(!g||g.length<3)return V;let w=0,D=0;for(let I of g)w+=I[0],D+=I[1];return[w/g.length,D/g.length]})}function v(O,G,V,ue){let g=(O[0]-G[0])*(V[1]-ue[1])-(O[1]-G[1])*(V[0]-ue[0]);if(Math.abs(g)<1e-9)return null;let w=((O[0]-V[0])*(V[1]-ue[1])-(O[1]-V[1])*(V[0]-ue[0]))/g;return[O[0]+w*(G[0]-O[0]),O[1]+w*(G[1]-O[1])]}function F(O,G){if(G<=0)return O;let V=O.length;if(V<3)return null;let ue=[];for(let I=0;IG!=H>G&&O<(P-D)*(G-I)/(H-I)+D&&(ue=!ue)}return ue}function $(O){let G=1e9,V=1e9,ue=-1e9,g=-1e9;for(let[D,I]of O)Due&&(ue=D),Ig&&(g=I);let w=7;for(let D=0;D0?1:-1,ue=O;for(let g=0;gV*((D[0]-w[0])*(H[1]-w[1])-(D[1]-w[1])*(H[0]-w[0]))>=-1e-9;for(let H=0;H6;ue++){let g=[],w=!1;for(let D=0;D5){w=!0;continue}w=!1,g.push(P)}if(g.length===V.length)break;V=g}return V}let Te=d3.Delaunay.from(se).voronoi(Ae);function Xe(O){if(!O||O.length<3)return null;let G=[];for(let ue of O){let g=G[G.length-1];g&&Math.hypot(ue[0]-g[0],ue[1]-g[1])<1e-4||G.push(ue)}for(;G.length>1&&Math.hypot(G[0][0]-G[G.length-1][0],G[0][1]-G[G.length-1][1])<1e-4;)G.pop();if(G.length<3)return null;let V=[];for(let ue=0;ueMath.sign((ne[0]-H[0])*(he[1]-H[1])-(ne[1]-H[1])*(he[0]-H[0])),w=g(O,G,V),D=g(O,G,ue),I=g(V,ue,O),P=g(V,ue,G);return w!==D&&I!==P&&w!==0&&D!==0&&I!==0&&P!==0}function ve(O){let G=O.length;for(let V=0;V1e-6&&he[P[0]-D,P[1]-I])})}y=null,B.width=B.height=1;let re=ae.map(O=>{let G=O.cx>=0?1:-1,V=[G*e.vars.sideDist*(.7+N()*.6),e.vars.sideDist===0&&e.vars.zDist===0?0:(N()-.5)*1.7,e.vars.zDist*(.85+N()*.3)],ue=[(N()-.5)*Math.PI*1*e.vars.flyInRotation,(N()-.5)*Math.PI*1.3*e.vars.flyInRotation,(N()-.5)*Math.PI*.5*e.vars.flyInRotation],g=[G*e.vars.sideDist*(.8+N()*.7),e.vars.sideDist===0&&e.vars.zOut===0?0:(N()-.5)*2.2,e.vars.zOut*(.85+N()*.3)],w=[(N()-.5)*Math.PI*1.6*e.vars.flyOutRotation,(N()-.5)*Math.PI*2*e.vars.flyOutRotation,(N()-.5)*Math.PI*.8*e.vars.flyOutRotation];return{cx:O.cx,cy:O.cy,local:O.local,radius:O.radius,baseRot:[(xe()-.5)*.08,(xe()-.5)*.08,(xe()-.5)*.03],wobPhase:xe()*Math.PI*2,wobFreq:.45+xe()*.5,inOff:V,inSpin:ue,outOff:g,outSpin:w,rIn:N(),rOut:N()}}),Q=Math.max(1,re.length-1),Le=re.map((O,G)=>[Math.abs(O.cx),G]).sort((O,G)=>O[0]-G[0]),Fe=e.vars.stagger;Le.forEach((O,G)=>{let V=re[O[1]];V.inDelay=Fe*.85*(G/Q)+V.rIn*.05*Fe,V.inDur=1-V.inDelay}),re.map((O,G)=>[Math.abs(O.cx),G]).sort((O,G)=>G[0]-O[0]).forEach((O,G)=>{let V=re[O[1]];V.outDelay=Fe*.85*(G/Q)+V.rOut*.05*Fe,V.outDur=Math.max(.12,1-V.outDelay)});function gt(O){let G=document.createElement("canvas");G.width=O,G.height=O;let V=G.getContext("2d"),ue=V.createLinearGradient(0,0,O,O);ue.addColorStop(0,"#202020"),ue.addColorStop(.5,"#a0a0a0"),ue.addColorStop(1,"#f0f0f0"),V.fillStyle=ue,V.fillRect(0,0,O,O);let g=V.createRadialGradient(O*.3,O*.4,0,O*.3,O*.4,O*.9);g.addColorStop(0,"rgba(255,255,255,0.4)"),g.addColorStop(1,"rgba(0,0,0,0)"),V.fillStyle=g,V.fillRect(0,0,O,O);let w=new Wo(G);return w.wrapS=w.wrapT=Ni,w}{let O=2*(n+3.5)*Math.tan(a*Math.PI/360),G=new Zt(new Us(O*(1920/1080)*1.05,O*1.05),new vs({color:657935,depthWrite:!1,depthTest:!1}));G.position.z=-3.5,G.renderOrder=-1,o.add(G)}let nt=n-s+.28,Bt=e.vars.fog>0?4.6/Math.max(2,e.vars.fog):0;function Ht(O,G){O.uniforms.uGstFogStart={value:nt},O.uniforms.uGstFogRho={value:Bt},O.uniforms.uGstFogColor={value:new Qe(657935)},O.vertexShader=O.vertexShader.replace("#include ",`#include varying float vGstDep;`).replace("#include ",`#include vGstDep = -mvPosition.z;`),O.fragmentShader=O.fragmentShader.replace("#include ",`#include varying float vGstDep; diff --git a/registry/blocks/glass-shard-title/assets/glass-main.mjs b/registry/blocks/glass-shard-title/assets/glass-main.mjs index b29d1e4914..9d3745046c 100644 --- a/registry/blocks/glass-shard-title/assets/glass-main.mjs +++ b/registry/blocks/glass-shard-title/assets/glass-main.mjs @@ -75,7 +75,7 @@ scene.environmentRotation = new THREE.Euler(0, 0.6, 0); hdrTex.dispose(); pmrem.dispose(); -const matcapTex = await new THREE.TextureLoader().loadAsync("https://static.heygen.ai/hyperframes-oss/docs/images/catalog/assets/glass-shard-title/matcap-1.png"); +const matcapTex = await new THREE.TextureLoader().loadAsync("assets/matcap-1.png"); matcapTex.colorSpace = THREE.SRGBColorSpace; matcapTex.wrapS = matcapTex.wrapT = THREE.RepeatWrapping; const mk = 1 / 0.2; diff --git a/registry/blocks/glass-shard-title/registry-item.json b/registry/blocks/glass-shard-title/registry-item.json index 8e26270e85..6acf92d6db 100644 --- a/registry/blocks/glass-shard-title/registry-item.json +++ b/registry/blocks/glass-shard-title/registry-item.json @@ -61,6 +61,12 @@ "target": "compositions/glass-shard-title/assets/Three-LICENSE.txt", "type": "hyperframes:asset" }, + { + "path": "assets/matcap-1.png", + "target": "compositions/glass-shard-title/assets/matcap-1.png", + "type": "hyperframes:asset", + "url": "https://static.heygen.ai/hyperframes-oss/registry-assets/8a4ba0deaf2bafb4.png" + }, { "path": "SKILL.md", "target": "compositions/glass-shard-title/SKILL.md", diff --git a/scripts/catalog-payload-assets.ts b/scripts/catalog-payload-assets.ts index b52c810bcc..24d9526030 100644 --- a/scripts/catalog-payload-assets.ts +++ b/scripts/catalog-payload-assets.ts @@ -422,17 +422,6 @@ function installMirrorTargets(projectDir: string): Map { */ export const MAX_HOSTED_DIRECTORY_BYTES = 2_000_000; -/** - * Named, reviewed exceptions to the cap above, each measured and one line why. - * Anything not listed here keeps the 2 MB default and falls back to its video. - */ -export const HOSTED_DIRECTORY_BYTE_ALLOWANCE: Record = { - // Textures/fonts only, frost.js now travels in-payload. Measured 2026-09-18: 7,708,493 B. - "frost-sequence-camera-orbit": 8_500_000, - // Fonts + matcap only, glass-main.js/HDR now travel in-payload. Measured 2026-09-18: 3,387,474 B. - "glass-shard-title": 4_000_000, -}; - // "not-needed" and "over-budget" both leave nothing published, but the caller // must not treat them alike: an over-budget item still needs the directory, // so it has to fall back to its recorded video instead of shipping with dead @@ -501,8 +490,8 @@ export function hostItemDirectory( projectDir: string, destDir: string, urlBase: string, - maxBytes: number = MAX_HOSTED_DIRECTORY_BYTES, ): HostItemDirectoryResult { + const maxBytes = MAX_HOSTED_DIRECTORY_BYTES; const mirrorPrefix = downloadMirrorPrefix(projectDir); const installTargets = installMirrorTargets(projectDir); const state: ChargeState = { files: new Map(), total: 0 }; diff --git a/scripts/catalog-script-inlining.test.ts b/scripts/catalog-script-inlining.test.ts new file mode 100644 index 0000000000..44d15d6b59 --- /dev/null +++ b/scripts/catalog-script-inlining.test.ts @@ -0,0 +1,54 @@ +import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { describe, it } from "node:test"; +import assert from "node:assert/strict"; +import { withHostedRefs } from "./catalog-script-inlining.ts"; + +const CDN = "https://static.example.com/registry-assets"; + +function itemWith(files: { path: string; url?: string }[]): string { + const dir = mkdtempSync(join(tmpdir(), "hf-inlining-")); + const manifest = { name: "x", files: files.map((f) => ({ ...f, target: `c/${f.path}` })) }; + writeFileSync(join(dir, "registry-item.json"), JSON.stringify(manifest)); + return dir; +} + +describe("withHostedRefs", () => { + it("points a quoted local path at its CDN URL", () => { + const dir = itemWith([{ path: "assets/matcap-1.png", url: `${CDN}/aa.png` }]); + try { + assert.equal(withHostedRefs(`load("assets/matcap-1.png")`, dir), `load("${CDN}/aa.png")`); + } finally { + rmSync(dir, { recursive: true, force: true }); + } + }); + + it("replaces the bundle's base-joined helper call with the full URL", () => { + const dir = itemWith([{ path: "assets/shards-atlas.png", url: `${CDN}/bb.png` }]); + try { + assert.equal(withHostedRefs(`x=a2("shards-atlas.png")`, dir, "a2"), `x="${CDN}/bb.png"`); + } finally { + rmSync(dir, { recursive: true, force: true }); + } + }); + + it("throws when a hosted name is still loaded through an unpatched helper", () => { + const dir = itemWith([{ path: "assets/shards-atlas.png", url: `${CDN}/bb.png` }]); + try { + assert.throws(() => withHostedRefs(`x=a3("shards-atlas.png")`, dir, "a2"), /still loaded/); + } finally { + rmSync(dir, { recursive: true, force: true }); + } + }); + + it("leaves a file that stays in the repository alone", () => { + const dir = itemWith([{ path: "assets/textures/bluenoise64.png" }]); + try { + const text = `a2("textures/bluenoise64.png")`; + assert.equal(withHostedRefs(text, dir, "a2"), text); + } finally { + rmSync(dir, { recursive: true, force: true }); + } + }); +}); diff --git a/scripts/catalog-script-inlining.ts b/scripts/catalog-script-inlining.ts index 49746b5b78..927d4e35a2 100644 --- a/scripts/catalog-script-inlining.ts +++ b/scripts/catalog-script-inlining.ts @@ -4,6 +4,8 @@ import { createHash } from "node:crypto"; import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { join } from "node:path"; +import type { RegistryItem } from "../packages/core/src/index.js"; +import { hostedUrlByReference } from "./registry-hosted-assets.ts"; interface VendorFile { /** Stable key used both as the JSON filename and the import-map value lookup. */ @@ -165,12 +167,37 @@ function extractAndRemoveScript( }; } +/** Script text loads hosted assets by their local name, and the payload has no such file: point + * each at its CDN URL. `assetCall` is the bundle's base-joining helper, which takes the name + * relative to `assets/`. Throws when a name is still there, so a rebuild that renames things fails loudly. */ +export function withHostedRefs(text: string, projectDir: string, assetCall?: string): string { + const manifest = JSON.parse( + readFileSync(join(projectDir, "registry-item.json"), "utf-8"), + ) as RegistryItem; + let out = text; + for (const [ref, url] of hostedUrlByReference(manifest)) { + const names = new Set([ref, ref.replace(/^assets\//, "")]); + for (const name of names) { + if (assetCall) out = out.split(`${assetCall}("${name}")`).join(`"${url}"`); + out = out.split(`"${name}"`).join(`"${url}"`); + } + if (ref.startsWith("assets/") && out.includes(`"${ref.slice("assets/".length)}"`)) { + throw new Error(`catalog-script-inlining: "${ref}" is still loaded by its local name.`); + } + } + return out; +} + function inlineFrostScripts( html: string, projectDir: string, vendorUrls: Record, ): string { - const frostText = readFileSync(join(projectDir, "assets/frost.js"), "utf-8"); + const frostText = withHostedRefs( + readFileSync(join(projectDir, "assets/frost.js"), "utf-8"), + projectDir, + "a2", + ); // Moves the composition's own inline script into the same async chain, after // gsap/frost.js load: left in document order it would run before either is ready. @@ -195,7 +222,10 @@ ${gsapLoaderJs(vendorUrls)} function inlineGlassScripts(html: string, projectDir: string): string { const hdrRelPath = "assets/ferndale_studio_01_1k.hdr"; - let glassText = readFileSync(join(projectDir, "assets/glass-main.js"), "utf-8"); + let glassText = withHostedRefs( + readFileSync(join(projectDir, "assets/glass-main.js"), "utf-8"), + projectDir, + ); if (!glassText.includes(hdrRelPath)) { throw new Error( `catalog-script-inlining: glass-main.js no longer references "${hdrRelPath}"; ` + diff --git a/scripts/generate-catalog-payloads.ts b/scripts/generate-catalog-payloads.ts index 9c91c0aded..d684e8c780 100644 --- a/scripts/generate-catalog-payloads.ts +++ b/scripts/generate-catalog-payloads.ts @@ -44,7 +44,6 @@ import { externalizeDataUris, inlineMountedComposition, HOSTED_EXTENSIONS, - HOSTED_DIRECTORY_BYTE_ALLOWANCE, hostItemDirectory, type HostItemDirectoryResult, localReferences, @@ -209,12 +208,7 @@ function resolveBaseHref( ): HostItemDirectoryResult { if (!interactive && !needsOwnDirectory(item, unresolved)) return { status: "not-needed" }; const itemUrl = `/public/catalog/items/${item.name}`; - return hostItemDirectory( - projectDir, - join(payloadRoot, "items", item.name), - `${itemUrl}/`, - HOSTED_DIRECTORY_BYTE_ALLOWANCE[item.name], - ); + return hostItemDirectory(projectDir, join(payloadRoot, "items", item.name), `${itemUrl}/`); } /** An interactive preview inlines the component and clears its pinned demo values,