glre 0.40.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/addons/animation/easing/backIn.ts","../src/addons/math/const.ts","../src/addons/animation/easing/backInOut.ts","../src/addons/animation/easing/backOut.ts","../src/addons/animation/easing/bounceIn.ts","../src/addons/animation/easing/bounceOut.ts","../src/addons/animation/easing/bounceInOut.ts","../src/addons/animation/easing/circularIn.ts","../src/addons/animation/easing/circularInOut.ts","../src/addons/animation/easing/circularOut.ts","../src/addons/animation/easing/cubicIn.ts","../src/addons/animation/easing/cubicInOut.ts","../src/addons/animation/easing/cubicOut.ts","../src/addons/animation/easing/elasticIn.ts","../src/addons/animation/easing/elasticInOut.ts","../src/addons/animation/easing/elasticOut.ts","../src/addons/animation/easing/exponentialIn.ts","../src/addons/animation/easing/exponentialInOut.ts","../src/addons/animation/easing/exponentialOut.ts","../src/addons/animation/easing/linearIn.ts","../src/addons/animation/easing/linearInOut.ts","../src/addons/animation/easing/linearOut.ts","../src/addons/animation/easing/quadraticIn.ts","../src/addons/animation/easing/quadraticInOut.ts","../src/addons/animation/easing/quadraticOut.ts","../src/addons/animation/easing/quarticIn.ts","../src/addons/animation/easing/quarticInOut.ts","../src/addons/animation/easing/quarticOut.ts","../src/addons/animation/easing/quinticIn.ts","../src/addons/animation/easing/quinticInOut.ts","../src/addons/animation/easing/quinticOut.ts","../src/addons/animation/easing/sineIn.ts","../src/addons/animation/easing/sineInOut.ts","../src/addons/animation/easing/sineOut.ts","../src/addons/color/space/cmyk2rgb.ts","../src/addons/color/space/gamma2linear.ts","../src/addons/color/space/hsl2rgb.ts","../src/addons/color/space/hue2rgb.ts","../src/addons/color/space/hsv2rgb.ts","../src/addons/color/space/lab2lch.ts","../src/addons/color/space/lab2rgb.ts","../src/addons/color/space/lab2xyz.ts","../src/addons/color/space/xyz2rgb.ts","../src/addons/color/space/lch2lab.ts","../src/addons/color/space/lch2rgb.ts","../src/addons/color/space/linear2gamma.ts","../src/addons/color/space/oklab2rgb.ts","../src/addons/color/space/rgb2cmyk.ts","../src/addons/math/mmin.ts","../src/addons/color/space/rgb2hcv.ts","../src/addons/color/space/rgb2hsl.ts","../src/addons/color/space/rgb2hsv.ts","../src/addons/color/space/rgb2hue.ts","../src/addons/color/space/rgb2lab.ts","../src/addons/color/space/rgb2xyz.ts","../src/addons/color/space/xyz2lab.ts","../src/addons/color/space/rgb2lch.ts","../src/addons/color/space/rgb2oklab.ts","../src/addons/color/space/rgb2srgb.ts","../src/addons/color/space/rgb2yiq.ts","../src/addons/color/space/rgb2yuv.ts","../src/addons/color/space/srgb2rgb.ts","../src/addons/color/space/yiq2rgb.ts","../src/addons/color/space/yuv2rgb.ts","../src/addons/draw/arrows.ts","../src/addons/draw/axis.ts","../src/addons/draw/line.ts","../src/addons/sdf/lineSDF.ts","../src/addons/draw/fill.ts","../src/addons/math/aastep.ts","../src/addons/draw/bridge.ts","../src/addons/draw/stroke.ts","../src/addons/draw/char.ts","../src/addons/draw/circle.ts","../src/addons/sdf/circleSDF.ts","../src/addons/draw/flip.ts","../src/addons/draw/hex.ts","../src/addons/sdf/hexSDF.ts","../src/addons/draw/point.ts","../src/addons/draw/rect.ts","../src/addons/sdf/rectSDF.ts","../src/addons/draw/tri.ts","../src/addons/sdf/triSDF.ts","../src/addons/geometry/aabb/aabb.ts","../src/addons/geometry/aabb/centroid.ts","../src/addons/geometry/aabb/contain.ts","../src/addons/geometry/aabb/diagonal.ts","../src/addons/geometry/aabb/expand.ts","../src/addons/geometry/aabb/intersect.ts","../src/addons/geometry/aabb/square.ts","../src/addons/geometry/triangle/area.ts","../src/addons/geometry/triangle/barycentric.ts","../src/addons/geometry/triangle/centroid.ts","../src/addons/geometry/triangle/closestPoint.ts","../src/addons/geometry/triangle/contain.ts","../src/addons/geometry/triangle/distanceSq.ts","../src/addons/math/lengthSq.ts","../src/addons/geometry/triangle/intersect.ts","../src/addons/geometry/triangle/normal.ts","../src/addons/geometry/triangle/signedDistance.ts","../src/addons/geometry/triangle/triangle.ts","../src/addons/generative/cnoise.ts","../src/addons/math/mod289.ts","../src/addons/math/permute.ts","../src/addons/math/taylorInvSqrt.ts","../src/addons/math/quintic.ts","../src/addons/generative/curl.ts","../src/addons/generative/snoise.ts","../src/addons/math/grad4.ts","../src/addons/generative/fbm.ts","../src/addons/generative/gnoise.ts","../src/addons/generative/random.ts","../src/addons/generative/srandom.ts","../src/addons/math/cubic.ts","../src/addons/generative/gerstnerWave.ts","../src/addons/generative/noised.ts","../src/addons/generative/pnoise.ts","../src/addons/generative/psrdnoise.ts","../src/addons/generative/voronoi.ts","../src/addons/generative/voronoise.ts","../src/addons/generative/wavelet.ts","../src/addons/math/rotate2d.ts","../src/addons/generative/worley.ts","../src/addons/math/dist.ts","../src/addons/math/aafloor.ts","../src/addons/math/map.ts","../src/addons/math/aafract.ts","../src/addons/math/aamirror.ts","../src/addons/math/nyquist.ts","../src/addons/math/absi.ts","../src/addons/math/adaptiveThreshold.ts","../src/addons/math/bump.ts","../src/addons/math/cubicMix.ts","../src/addons/math/decimate.ts","../src/addons/math/fcos.ts","../src/addons/math/frac.ts","../src/addons/math/gain.ts","../src/addons/math/gaussian.ts","../src/addons/math/hammersley.ts","../src/addons/math/highPass.ts","../src/addons/math/inside.ts","../src/addons/math/invCubic.ts","../src/addons/math/invQuartic.ts","../src/addons/math/inverse.ts","../src/addons/math/mirror.ts","../src/addons/math/mmax.ts","../src/addons/math/mmix.ts","../src/addons/math/mod2.ts","../src/addons/math/modi.ts","../src/addons/math/pack.ts","../src/addons/math/parabola.ts","../src/addons/math/pow2.ts","../src/addons/math/pow3.ts","../src/addons/math/pow5.ts","../src/addons/math/pow7.ts","../src/addons/math/powFast.ts","../src/addons/math/quat/quat2mat3.ts","../src/addons/math/quat/quat2mat4.ts","../src/addons/math/toMat4.ts","../src/addons/math/quat/quatAdd.ts","../src/addons/math/quat/quatConj.ts","../src/addons/math/quat/quatDiv.ts","../src/addons/math/quat/quatIdentity.ts","../src/addons/math/quat/quatInverse.ts","../src/addons/math/quat/quatLengthSq.ts","../src/addons/math/quat/quatLength.ts","../src/addons/math/quat/quatLerp.ts","../src/addons/math/quat/quatMul.ts","../src/addons/math/quat/quatNeg.ts","../src/addons/math/quat/quatNorm.ts","../src/addons/math/quat/quatSub.ts","../src/addons/math/quartic.ts","../src/addons/math/rotate3d.ts","../src/addons/math/rotate3dX.ts","../src/addons/math/rotate3dY.ts","../src/addons/math/rotate3dZ.ts","../src/addons/math/rotate4d.ts","../src/addons/math/rotate4dX.ts","../src/addons/math/rotate4dY.ts","../src/addons/math/rotate4dZ.ts","../src/addons/math/saturateMediump.ts","../src/addons/math/scale2d.ts","../src/addons/math/scale3d.ts","../src/addons/math/scale4d.ts","../src/addons/math/smootherstep.ts","../src/addons/math/toMat3.ts","../src/addons/math/translate4d.ts","../src/addons/math/unpack.ts","../src/addons/sdf/sphereSDF.ts","../src/addons/sdf/boxSDF.ts","../src/addons/space/aspect.ts","../src/addons/space/bracketing.ts","../src/addons/space/brickTile.ts","../src/addons/space/sqTile.ts","../src/addons/space/cart2polar.ts","../src/addons/space/center.ts","../src/addons/space/checkerTile.ts","../src/addons/space/depth2viewZ.ts","../src/addons/space/displace.ts","../src/addons/space/lookAt.ts","../src/addons/space/equirect2xyz.ts","../src/addons/space/eulerView.ts","../src/addons/space/translate.ts","../src/addons/space/fisheye2xyz.ts","../src/addons/space/flipY.ts","../src/addons/space/hexTile.ts","../src/addons/space/kaleidoscope.ts","../src/addons/space/linearizeDepth.ts","../src/addons/space/mirrorTile.ts","../src/addons/space/nearest.ts","../src/addons/space/orthographic.ts","../src/addons/space/parallaxMapping.ts","../src/addons/space/perspective.ts","../src/addons/space/polar2cart.ts","../src/addons/space/ratio.ts","../src/addons/space/sprite.ts","../src/addons/space/tbn.ts","../src/addons/space/lookAtView.ts","../src/addons/space/rotate.ts","../src/addons/space/rotateX.ts","../src/addons/space/rotateY.ts","../src/addons/space/rotateZ.ts","../src/addons/space/unratio.ts","../src/addons/space/uncenter.ts","../src/addons/space/viewZ2depth.ts","../src/addons/space/xyz2equirect.ts","../src/addons/space/triTile.ts","../src/addons/space/windmillTile.ts"],"sourcesContent":["import { Fn, Float, pow, sin } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const backIn = Fn(([t]: [Float]): Float => {\n return pow(t, 3).sub(t.mul(sin(t.mul(PI))))\n}).setLayout({\n name: 'backIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { float } from \"../../node\"\n\n// Mathematical constants as float nodes\nexport const EIGHTH_PI = float(0.39269908169)\nexport const QTR_PI = float(0.78539816339)\nexport const HALF_PI = float(1.5707963267948966192313216916398)\nexport const PI = float(3.1415926535897932384626433832795)\nexport const TWO_PI = float(6.2831853071795864769252867665590)\nexport const TAU = float(6.2831853071795864769252867665590)\nexport const INV_PI = float(0.31830988618379067153776752674503)\nexport const INV_SQRT_TAU = float(0.39894228040143267793994605993439)\nexport const SQRT_HALF_PI = float(1.25331413732)\nexport const PHI = float(1.618033988749894848204586834)\nexport const EPSILON = float(0.00001)\nexport const GOLDEN_RATIO = float(1.6180339887)\nexport const GOLDEN_RATIO_CONJUGATE = float(0.61803398875)\nexport const GOLDEN_ANGLE = float(2.39996323)\nexport const DEG2RAD = PI.div(180)\nexport const RAD2DEG = float(180).div(PI)","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backInOut = Fn(([t]: [Float]): Float => {\n const f = t.mul(2).select(float(1).sub(t.mul(2).sub(1)), t.lessThan(0.5))\n const g = backIn(f)\n return g.div(2).select(float(1).sub(g).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'backInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backOut = Fn(([t]: [Float]): Float => {\n return float(1).sub(backIn(float(1).sub(t)))\n}).setLayout({\n name: 'backOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceIn = Fn(([t]: [Float]): Float => {\n return float(1).sub(bounceOut(float(1).sub(t)))\n}).setLayout({\n name: 'bounceIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\n\nexport const bounceOut = Fn(([t]: [Float]): Float => {\n const a = float(4 / 11)\n const b = float(8 / 11)\n const c = float(9 / 10)\n const ca = float(4356.0 / 361.0)\n const cb = float(35442.0 / 1805.0)\n const cc = float(16061.0 / 1805.0)\n const t2 = t.mul(t)\n return t2.mul(7.5625).select(\n t2\n .mul(9.075)\n .sub(t.mul(9.9))\n .add(3.4)\n .select(\n t2\n .mul(ca)\n .sub(t.mul(cb))\n .add(cc)\n .select(t2.mul(10.8).sub(t.mul(20.52)).add(10.72), t.lessThan(c)),\n t.lessThan(b)\n ),\n t.lessThan(a)\n )\n}).setLayout({\n name: 'bounceOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceInOut = Fn(([t]: [Float]): Float => {\n return float(1)\n .sub(bounceOut(float(1).sub(t.mul(2))))\n .div(2)\n .select(bounceOut(t.mul(2).sub(1)).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'bounceInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularIn = Fn(([t]: [X]): X => {\n return t.mul(t).oneMinus().sqrt().oneMinus()\n}).setLayout({\n name: 'circularIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(4).oneMinus().sqrt().oneMinus().div(2)\n const late = t.mul(2).sub(1).mul(t.mul(-2).add(3)).sqrt().add(1).div(2)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'circularInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../../node'\n\nexport const circularOut = Fn(([t]: [X]): X => {\n return float(2).sub(t).mul(t).sqrt()\n}).setLayout({\n name: 'circularOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicIn = Fn(([t]: [X]): X => {\n return t.mul(t).mul(t)\n}).setLayout({\n name: 'cubicIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(t).mul(4)\n const late = t.mul(2).sub(2).pow(3).div(2).add(1)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'cubicInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicOut = Fn(([t]: [X]): X => {\n const f = t.sub(1)\n return f.mul(f).mul(f).add(1)\n}).setLayout({\n name: 'cubicOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticIn = Fn(([t]: [Float]): Float => {\n return sin(t.mul(13).mul(HALF_PI)).mul(pow(float(2), t.sub(1).mul(10)))\n}).setLayout({\n name: 'elasticIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticInOut = Fn(([t]: [Float]): Float => {\n const t2 = t.mul(2)\n const t2minus1 = t2.sub(1)\n return sin(HALF_PI.mul(13).mul(t2))\n .mul(pow(float(2), t2minus1.mul(10)))\n .div(2)\n .select(\n sin(HALF_PI.mul(-13).mul(t2minus1.add(1)))\n .mul(pow(float(2), t2minus1.mul(-10)))\n .div(2)\n .add(1),\n t.lessThan(0.5)\n )\n}).setLayout({\n name: 'elasticInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticOut = Fn(([t]: [Float]): Float => {\n return sin(float(-13).mul(t.add(1)).mul(HALF_PI))\n .mul(pow(float(2), float(-10).mul(t)))\n .add(1)\n}).setLayout({\n name: 'elasticOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialIn = Fn(([t]: [X]): X => {\n return (t as any).select(t.sub(1).mul(10).exp2(), t.equal(0))\n}).setLayout({\n name: 'exponentialIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialInOut = Fn(([t]: [X]): X => {\n const isZeroOrOne = t.equal(0).or(t.equal(1))\n const early = t.mul(20).sub(10).exp2().div(2)\n const late = t.mul(-20).add(10).exp2().div(-2).add(1)\n const result = (early as any).select(late, t.lessThan(0.5))\n return (t as any).select(result, isZeroOrOne)\n}).setLayout({\n name: 'exponentialInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialOut = Fn(([t]: [X]): X => {\n return (t as any).select(t.mul(-10).exp2().negate().add(1), t.equal(1))\n}).setLayout({\n name: 'exponentialOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearIn = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearInOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticIn = Fn(([t]: [X]): X => {\n return t.mul(t)\n}).setLayout({\n name: 'quadraticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quadraticInOut = Fn(([t]: [X]): X => {\n const p = t.mul(t).mul(2)\n return select(p, p.negate().add(t.mul(4)).sub(1), t.lessThan(0.5))\n}).setLayout({\n name: 'quadraticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticOut = Fn(([t]: [X]): X => {\n return t.mul(t.sub(2)).negate()\n}).setLayout({\n name: 'quadraticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticIn = Fn(([t]: [X]): X => {\n return t.pow(4)\n}).setLayout({\n name: 'quarticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quarticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(4).mul(8)\n const late = t.sub(1).pow(4).mul(-8).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quarticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticOut = Fn(([t]: [X]): X => {\n const it = t.sub(1)\n return it.mul(it).mul(it).mul(t.oneMinus()).add(1)\n}).setLayout({\n name: 'quarticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticIn = Fn(([t]: [X]): X => {\n return t.pow(5)\n}).setLayout({\n name: 'quinticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quinticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(5).mul(16)\n const late = t.mul(2).sub(2).pow(5).mul(-0.5).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quinticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticOut = Fn(([t]: [X]): X => {\n return t.sub(1).pow(5).negate().add(1)\n}).setLayout({\n name: 'quinticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineIn = Fn(([t]: [X]): X => {\n return sin(t.sub(1).mul(HALF_PI as any)).add(1)\n}).setLayout({\n name: 'sineIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, cos } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const sineInOut = Fn(([t]: [X]): X => {\n return cos(PI.mul(t)).sub(1).mul(-0.5)\n}).setLayout({\n name: 'sineInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineOut = Fn(([t]: [X]): X => {\n return sin(t.mul(HALF_PI as any))\n}).setLayout({\n name: 'sineOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Vec4, Vec3, float, vec3 } from '../../../node'\n\nexport const cmyk2rgb = Fn(([cmyk]: [Vec4]): Vec3 => {\n const invK = float(1).sub(cmyk.w).toVar()\n return float(1)\n .sub(vec3(1).min(cmyk.xyz.mul(invK).add(cmyk.w)))\n .saturate()\n}).setLayout({\n name: 'cmyk2rgb',\n type: 'vec3',\n inputs: [{ name: 'cmyk', type: 'vec4' }],\n})\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst GAMMA = float(2.2)\n\nexport const gamma2linear = Fn(([v]: [X]): X => {\n return v.pow(GAMMA)\n}).setLayout({\n name: 'gamma2linear',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const gamma2linearVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(gamma2linear(v.xyz), v.w)\n}).setLayout({\n name: 'gamma2linearVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsl2rgb = Fn(([hsl]: [Vec3]): Vec3 => {\n const rgb = hue2rgb(hsl.x).toVar()\n const C = float(1).sub(hsl.z.mul(2).sub(1).abs()).mul(hsl.y).toVar()\n return rgb.sub(0.5).mul(C).add(hsl.z)\n}).setLayout({\n name: 'hsl2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsl', type: 'vec3' }],\n})\n\nexport const hsl2rgbVec4 = Fn(([hsl]: [Vec4]): Vec4 => {\n return vec4(hsl2rgb(hsl.xyz), hsl.w)\n}).setLayout({\n name: 'hsl2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsl', type: 'vec4' }],\n})\n","import { Fn, Float, Vec3, float, vec3 } from '../../../node'\n\nexport const hue2rgb = Fn(([hue]: [Float]): Vec3 => {\n const R = hue.mul(6).sub(3).abs().sub(1).toVar()\n const G = float(2).sub(hue.mul(6).sub(2).abs()).toVar()\n const B = float(2).sub(hue.mul(6).sub(4).abs()).toVar()\n return vec3(R, G, B).saturate()\n}).setLayout({\n name: 'hue2rgb',\n type: 'vec3',\n inputs: [{ name: 'hue', type: 'float' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsv2rgb = Fn(([hsv]: [Vec3]): Vec3 => {\n return hue2rgb(hsv.x).sub(1).mul(hsv.y).add(1).mul(hsv.z)\n}).setLayout({\n name: 'hsv2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsv', type: 'vec3' }],\n})\n\nexport const hsv2rgbVec4 = Fn(([hsv]: [Vec4]): Vec4 => {\n return vec4(hsv2rgb(hsv.xyz), hsv.w)\n}).setLayout({\n name: 'hsv2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsv', type: 'vec4' }],\n})\n","import { Fn, atan2, sqrt, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lab2lch3 = Fn(([lab]: [Vec3]): Vec3 => {\n const chroma = sqrt(lab.y.mul(lab.y).add(lab.z.mul(lab.z)))\n const hue = atan2(lab.z, lab.y).mul(57.2957795131)\n return vec3(lab.x, chroma, hue)\n}).setLayout({\n name: 'lab2lch3',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2lch4 = Fn(([lab]: [Vec4]): Vec4 => {\n const lch = lab2lch3(lab.xyz)\n return vec4(lch, lab.w)\n}).setLayout({\n name: 'lab2lch4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n\nexport const lab2lch = lab2lch3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lab2xyz } from './lab2xyz'\nimport { xyz2rgb } from './xyz2rgb'\n\nexport const lab2rgb = Fn(([lab]: [Vec3]): Vec3 => {\n return xyz2rgb(lab2xyz(lab))\n}).setLayout({\n name: 'lab2rgb',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2rgbVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2rgb(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, select, vec3, vec4 } from '../../../node'\n\n// CIE D65 white point (default)\nconst CIE_WHITE = vec3(0.95045592705, 1, 1.08905775076)\n\nexport const lab2xyz = Fn(([lab]: [Vec3]): Vec3 => {\n const fy = lab.x.add(16).div(116).toVar()\n const fx = lab.y.div(500).add(fy).toVar()\n const fz = fy.sub(lab.z.div(200)).toVar()\n\n const threshold = float(0.206897)\n const delta = float(16).div(116)\n const factor = float(7.787)\n\n const convertX = select(fx.pow(3), fx.sub(delta).div(factor), fx.greaterThan(threshold))\n const convertY = select(fy.pow(3), fy.sub(delta).div(factor), fy.greaterThan(threshold))\n const convertZ = select(fz.pow(3), fz.sub(delta).div(factor), fz.greaterThan(threshold))\n\n return CIE_WHITE.mul(100).mul(vec3(convertX, convertY, convertZ))\n}).setLayout({\n name: 'lab2xyz',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2xyzVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2xyz(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst XYZ2RGB = mat3(\n 3.2404542,\n -1.5371385,\n -0.4985314,\n -0.969266,\n 1.8760108,\n 0.041556,\n 0.0556434,\n -0.2040259,\n 1.0572252\n)\n\nexport const xyz2rgb = Fn(([xyz]: [Vec3]): Vec3 => {\n return XYZ2RGB.mul(xyz.mul(0.01))\n}).setLayout({\n name: 'xyz2rgb',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2rgbVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2rgb(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lch2lab3 = Fn(([lch]: [Vec3]): Vec3 => {\n const radians = lch.z.mul(0.01745329251)\n return vec3(lch.x, lch.y.mul(radians.cos()), lch.y.mul(radians.sin()))\n}).setLayout({\n name: 'lch2lab3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2lab4 = Fn(([lch]: [Vec4]): Vec4 => {\n const lab = lch2lab3(lch.xyz)\n return vec4(lab, lch.w)\n}).setLayout({\n name: 'lch2lab4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2lab = lch2lab3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lch2lab } from './lch2lab'\nimport { lab2rgb } from './lab2rgb'\n\nexport const lch2rgb3 = Fn(([lch]: [Vec3]): Vec3 => {\n return lab2rgb(lch2lab(lch))\n}).setLayout({\n name: 'lch2rgb3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2rgb4 = Fn(([lch]: [Vec4]): Vec4 => {\n const rgb = lch2rgb3(lch.xyz)\n return vec4(rgb, lch.w)\n}).setLayout({\n name: 'lch2rgb4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2rgb = lch2rgb3\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst INV_GAMMA = float(1).div(2.2)\n\nexport const linear2gamma = Fn(([v]: [X]): X => {\n return v.pow(INV_GAMMA)\n}).setLayout({\n name: 'linear2gamma',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const linear2gammaVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(linear2gamma(v.xyz), v.w)\n}).setLayout({\n name: 'linear2gammaVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst OKLAB2RGB_A = mat3(1, 1, 1, 0.3963377774, -0.1055613458, -0.0894841775, 0.2158037573, -0.0638541728, -1.291485548)\n\nconst OKLAB2RGB_B = mat3(\n 4.0767416621,\n -1.2684380046,\n -0.0041960863,\n -3.3077115913,\n 2.6097574011,\n -0.7034186147,\n 0.2309699292,\n -0.3413193965,\n 1.707614701\n)\n\nexport const oklab2rgb3 = Fn(([oklab]: [Vec3]): Vec3 => {\n const lms = OKLAB2RGB_A.mul(oklab)\n return OKLAB2RGB_B.mul(lms.mul(lms).mul(lms))\n}).setLayout({\n name: 'oklab2rgb3',\n type: 'vec3',\n inputs: [{ name: 'oklab', type: 'vec3' }],\n})\n\nexport const oklab2rgb4 = Fn(([oklab]: [Vec4]): Vec4 => {\n const rgb = oklab2rgb3(oklab.xyz)\n return vec4(rgb, oklab.w)\n}).setLayout({\n name: 'oklab2rgb4',\n type: 'vec4',\n inputs: [{ name: 'oklab', type: 'vec4' }],\n})\n\nexport const oklab2rgb = oklab2rgb3\n","import { Fn, Vec3, Vec4, float, vec4, step } from '../../../node'\nimport { mmin3 } from '../../math/mmin'\n\nexport const rgb2cmyk = Fn(([rgb]: [Vec3]): Vec4 => {\n const k = mmin3(float(1).sub(rgb)).toVar()\n const invK = float(1).sub(k).toVar()\n const cmy = float(1).sub(rgb).sub(k).div(invK).mul(step(0, invK)).toVar()\n return vec4(cmy, k).saturate()\n}).setLayout({\n name: 'rgb2cmyk',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, min } from '../../node'\n\nexport const mmin2 = Fn(([v]: [Vec2]): Float => {\n return min(v.x, v.y)\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmin3 = Fn(([v]: [Vec3]): Float => {\n return min(v.x, min(v.y, v.z))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmin4 = Fn(([v]: [Vec4]): Float => {\n return min(min(v.x, v.y), min(v.z, v.w))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\n// Generic mmin function - delegates to specific implementations\nexport const mmin = mmin4\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10').constant()\n\nexport const rgb2hcv = Fn(([rgb]: [Vec3]): Vec3 => {\n const P_true = vec4(rgb.b, rgb.g, -1, float(2).div(3)).toVar()\n const P_false = vec4(rgb.g, rgb.b, 0, float(-1).div(3)).toVar()\n const P_final = select(P_true, P_false, rgb.g.lessThan(rgb.b)).toVar()\n\n const Q_true = vec4(P_final.x, P_final.y, P_final.w, rgb.r).toVar()\n const Q_false = vec4(rgb.r, P_final.y, P_final.z, P_final.x).toVar()\n const Q_final = select(Q_true, Q_false, rgb.r.lessThan(P_final.x)).toVar()\n\n const C = Q_final.x.sub(Q_final.w.min(Q_final.y)).toVar()\n const H = Q_final.w.sub(Q_final.y).div(float(6).mul(C).add(HCV_EPSILON)).add(Q_final.z).abs().toVar()\n return vec3(H, C, Q_final.x)\n}).setLayout({\n name: 'rgb2hcv',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hcvVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hcv(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hcvVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4 } from '../../../node'\nimport { rgb2hcv } from './rgb2hcv'\n\nconst HSL_EPSILON = float('1e-10')\n\nexport const rgb2hsl = Fn(([rgb]: [Vec3]): Vec3 => {\n const HCV = rgb2hcv(rgb).toVar()\n const L = HCV.z.sub(HCV.y.div(2)).toVar()\n const S = HCV.y.div(float(1).sub(L.mul(2).sub(1).abs()).add(HSL_EPSILON)).toVar()\n return vec3(HCV.x, S, L)\n}).setLayout({\n name: 'rgb2hsl',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hslVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hsl(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hslVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10')\n\nexport const rgb2hsv = Fn(([c]: [Vec3]): Vec3 => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n const H = Q.z\n .add(Q.w.sub(Q.y).div(float(6).mul(d).add(HCV_EPSILON)))\n .abs()\n .toVar()\n const S = d.div(Q.x.add(HCV_EPSILON)).toVar()\n const V = Q.x.toVar()\n\n return vec3(H, S, V)\n}).setLayout({\n name: 'rgb2hsv',\n type: 'vec3',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hsvVec4 = Fn(([c]: [Vec4]): Vec4 => {\n return vec4(rgb2hsv(c.xyz), c.w)\n}).setLayout({\n name: 'rgb2hsvVec4',\n type: 'vec4',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, Float, float, vec4, select } from '../../../node'\n\nconst HUE_EPSILON = float('1e-10')\n\nexport const rgb2hue = Fn(([c]: [Vec3]): Float => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n return Q.z.add(Q.w.sub(Q.y).div(float(6).mul(d).add(HUE_EPSILON))).abs()\n}).setLayout({\n name: 'rgb2hue',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hueVec4 = Fn(([c]: [Vec4]): Float => {\n return rgb2hue(c.xyz)\n}).setLayout({\n name: 'rgb2hueVec4',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2xyz } from './rgb2xyz'\nimport { xyz2lab } from './xyz2lab'\n\nexport const rgb2lab = Fn(([rgb]: [Vec3]): Vec3 => {\n return xyz2lab(rgb2xyz(rgb))\n}).setLayout({\n name: 'rgb2lab',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2labVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2lab(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2labVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst RGB2XYZ = mat3(0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.072175, 0.0193339, 0.119192, 0.9503041)\n\nexport const rgb2xyz = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2XYZ.mul(rgb)\n}).setLayout({\n name: 'rgb2xyz',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2xyzVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2xyz(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, step, mix } from '../../../node'\n\nexport const xyz2lab = Fn(([xyz]: [Vec3]): Vec3 => {\n const n = xyz.div(vec3(95.047, 100, 108.883)).toVar()\n const c0 = n.pow(vec3(1 / 3)).toVar()\n const c1 = n\n .mul(7.787)\n .add(16 / 116)\n .toVar()\n const v = mix(c0, c1, step(n, vec3(0.008856))).toVar()\n const L = v.y.mul(116).sub(16).toVar()\n const A = v.x.sub(v.y).mul(500).toVar()\n const B = v.y.sub(v.z).mul(200).toVar()\n return vec3(L, A, B)\n}).setLayout({\n name: 'xyz2lab',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2labVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2lab(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2labVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2lab } from './rgb2lab'\nimport { lab2lch } from './lab2lch'\n\nexport const rgb2lch3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return lab2lch(rgb2lab(rgb))\n}).setLayout({\n name: 'rgb2lch3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2lch4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const lch = rgb2lch3(rgb.xyz)\n return vec4(lch, rgb.w)\n}).setLayout({\n name: 'rgb2lch4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2lch = rgb2lch3\n","import { Fn, mat3, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2OKLAB_A = mat3(\n 0.2104542553,\n 1.9779984951,\n 0.0259040371,\n 0.793617785,\n -2.428592205,\n 0.7827717662,\n -0.0040720468,\n 0.4505937099,\n -0.808675766\n)\n\nconst RGB2OKLAB_B = mat3(\n 0.4122214708,\n 0.2119034982,\n 0.0883024619,\n 0.5363325363,\n 0.6806995451,\n 0.2817188376,\n 0.0514459929,\n 0.1073969566,\n 0.6299787005\n)\n\nexport const rgb2oklab3 = Fn(([rgb]: [Vec3]): Vec3 => {\n const lms = RGB2OKLAB_B.mul(rgb)\n return RGB2OKLAB_A.mul(lms.sign().mul(lms.abs().pow(vec3(0.3333333333333))))\n}).setLayout({\n name: 'rgb2oklab3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2oklab4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const oklab = rgb2oklab3(rgb.xyz)\n return vec4(oklab, rgb.w)\n}).setLayout({\n name: 'rgb2oklab4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2oklab = rgb2oklab3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const rgb2srgbFloat = Fn(([c]: [Float]): Float => {\n return select(c.mul(12.92), float(1.055).mul(c.pow(0.4166666666666667)).sub(0.055), c.lessThan(0.0031308))\n}).setLayout({\n name: 'rgb2srgb',\n type: 'float',\n inputs: [{ name: 'c', type: 'float' }],\n})\n\nexport const rgb2srgbVec3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return vec3(\n rgb2srgbFloat(rgb.r.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.g.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.b.sub(SRGB_EPSILON))\n ).saturate()\n}).setLayout({\n name: 'rgb2srgbVec3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2srgbVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2srgbVec3(rgb.rgb), rgb.a)\n}).setLayout({\n name: 'rgb2srgbVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const rgb2srgb = rgb2srgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YIQ = mat3(0.3, 0.59, 0.11, 0.599, -0.2773, -0.3217, 0.213, -0.5251, 0.3121)\n\nexport const rgb2yiq3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YIQ.mul(rgb)\n}).setLayout({\n name: 'rgb2yiq3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yiq4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yiq = rgb2yiq3(rgb.xyz)\n return vec4(yiq, rgb.w)\n}).setLayout({\n name: 'rgb2yiq4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yiq = rgb2yiq3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YUV_HDTV = mat3(0.2126, -0.09991, 0.615, 0.7152, -0.33609, -0.55861, 0.0722, 0.426, -0.05639)\n\nconst RGB2YUV_SDTV = mat3(0.299, -0.14713, 0.615, 0.587, -0.28886, -0.51499, 0.114, 0.436, -0.10001)\n\nexport const rgb2yuv3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_HDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuv3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yuv = rgb2yuv3(rgb.xyz)\n return vec4(yuv, rgb.w)\n}).setLayout({\n name: 'rgb2yuv4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yuvSDTV = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_SDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuvSDTV',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv = rgb2yuv3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const srgb2rgbFloat = Fn(([v]: [Float]): Float => {\n return select(v.mul(0.0773993808), v.add(0.055).mul(0.947867298578199).pow(2.4), v.lessThan(0.04045))\n}).setLayout({\n name: 'srgb2rgb',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const srgb2rgbVec3 = Fn(([srgb]: [Vec3]): Vec3 => {\n return vec3(\n srgb2rgbFloat(srgb.r.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.g.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.b.add(SRGB_EPSILON))\n )\n}).setLayout({\n name: 'srgb2rgbVec3',\n type: 'vec3',\n inputs: [{ name: 'srgb', type: 'vec3' }],\n})\n\nexport const srgb2rgbVec4 = Fn(([srgb]: [Vec4]): Vec4 => {\n return vec4(srgb2rgbVec3(srgb.rgb), srgb.a)\n}).setLayout({\n name: 'srgb2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'srgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const srgb2rgb = srgb2rgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YIQ2RGB = mat3(1, 0.9469, 0.6235, 1, -0.2747, -0.6357, 1, -1.1085, 1.702)\n\nexport const yiq2rgb3 = Fn(([yiq]: [Vec3]): Vec3 => {\n return YIQ2RGB.mul(yiq)\n}).setLayout({\n name: 'yiq2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yiq', type: 'vec3' }],\n})\n\nexport const yiq2rgb4 = Fn(([yiq]: [Vec4]): Vec4 => {\n const rgb = yiq2rgb3(yiq.xyz)\n return vec4(rgb, yiq.w)\n}).setLayout({\n name: 'yiq2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yiq', type: 'vec4' }],\n})\n\nexport const yiq2rgb = yiq2rgb3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YUV2RGB_HDTV = mat3(1, 1, 1, 0, -0.21482, 2.12798, 1.28033, -0.38059, 0)\n\nconst YUV2RGB_SDTV = mat3(1, 1, 1, 0, -0.39465, 2.03211, 1.13983, -0.5806, 0)\n\nexport const yuv2rgb3 = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_HDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb4 = Fn(([yuv]: [Vec4]): Vec4 => {\n const rgb = yuv2rgb3(yuv.xyz)\n return vec4(rgb, yuv.w)\n}).setLayout({\n name: 'yuv2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yuv', type: 'vec4' }],\n})\n\nexport const yuv2rgbSDTV = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_SDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgbSDTV',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb = yuv2rgb3\n","import { Fn, Vec2, Float, float, vec2, floor, length, clamp, min, dot, cos, normalize, If } from '../../node'\n\n// Constants\nconst ARROWS_TILE_SIZE = float(32)\nconst ARROWS_HEAD_ANGLE = float(0.5)\n\n// Arrow tile center coordinate calculation\nexport const arrowsTileCenterCoord = Fn(([pos]: [Vec2]): Vec2 => {\n return floor(pos.div(ARROWS_TILE_SIZE)).add(0.5).mul(ARROWS_TILE_SIZE)\n}).setLayout({\n name: 'arrowsTileCenterCoord',\n type: 'vec2',\n inputs: [{ name: 'pos', type: 'vec2' }],\n})\n\n// Arrows with resolution parameter\nexport const arrowsWithResolution = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]): Float => {\n const scaledP = p.mul(resolution).toVar()\n scaledP.subAssign(arrowsTileCenterCoord(scaledP))\n const mag_v = length(v).toVar()\n\n const result = float(0).toVar()\n\n If(mag_v.greaterThan(0), () => {\n const dir_v = v.div(mag_v).toVar()\n mag_v.assign(clamp(mag_v, 5, ARROWS_TILE_SIZE.div(2)))\n const vScaled = dir_v.mul(mag_v).toVar()\n\n // Simplified arrow implementation based on GLSL default style\n const arrow = float(1)\n .add(\n min(\n float(0),\n dot(normalize(vScaled.sub(scaledP)), dir_v).sub(cos(ARROWS_HEAD_ANGLE.div(2)))\n )\n .mul(2)\n .mul(length(vScaled.sub(scaledP)))\n .add(min(float(0), dot(scaledP, dir_v).add(1)))\n .add(\n min(\n float(0),\n cos(ARROWS_HEAD_ANGLE.div(2)).sub(\n dot(normalize(vScaled.mul(0.33).sub(scaledP)), dir_v)\n )\n )\n .mul(mag_v)\n .mul(0.8)\n )\n )\n .saturate()\n result.assign(arrow)\n })\n\n return result\n}).setLayout({\n name: 'arrowsWithResolution',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n { name: 'resolution', type: 'vec2' },\n ],\n})\n\n// Arrows with default resolution\nexport const arrows = Fn(([p, v]: [Vec2, Vec2]): Float => {\n return arrowsWithResolution(p, v, vec2(1))\n}).setLayout({\n name: 'arrows',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4, Loop, int } from '../../node'\nimport { line } from './line'\n\nexport const axis = Fn(([st, M, pos, thickness]: [Vec2, Mat4, Vec3, Float]): Vec4 => {\n let result = vec4(0, 0, 0, 0).toVar()\n\n // Transform center position\n const center = M.mul(vec4(pos, 1)).toVar()\n center.xy.assign(center.xy.div(center.w))\n center.xy.assign(center.xy.div(2).add(0.5))\n\n // Define axis colors (RGB for XYZ)\n const axisColors = [\n vec4(1, 0, 0, 1), // Red for X axis\n vec4(0, 1, 0, 1), // Green for Y axis\n vec4(0, 0, 1, 1), // Blue for Z axis\n ]\n\n const axisDirections = [\n vec3(1, 0, 0), // X direction\n vec3(0, 1, 0), // Y direction\n vec3(0, 0, 1), // Z direction\n ]\n\n // Draw each axis\n Loop(int(3), ({ i }) => {\n const axisColor = (i.equal(int(0)) as any).select(\n axisColors[0],\n (i.equal(int(1)) as any).select(axisColors[1], axisColors[2])\n )\n\n const axisDir = (i.equal(int(0)) as any).select(\n axisDirections[0],\n (i.equal(int(1)) as any).select(axisDirections[1], axisDirections[2])\n )\n\n // Transform axis endpoint\n const axisPoint = (M as any).mul(vec4((pos as any).add(axisDir as any), 1)).toVar()\n axisPoint.xy.assign(axisPoint.xy.div(axisPoint.w))\n axisPoint.xy.assign(axisPoint.xy.div(2).add(0.5))\n\n // Draw line from center to axis endpoint\n const axisLine = line(st, center.xy, axisPoint.xy, thickness)\n result.addAssign((axisColor as any).mul(axisLine as any))\n })\n\n return result\n}).setLayout({\n name: 'axis',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat4' },\n { name: 'pos', type: 'vec3' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\nimport { fill } from './fill'\n\nexport const line = Fn(([st, a, b, thickness]: [Vec2, Vec2, Vec2, Float]): Float => {\n return fill(lineSDF(st, a, b), thickness)\n}).setLayout({\n name: 'line',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, clamp, dot, length, cross } from '../../node'\n\n// 2D line segment distance function\nexport const lineSDF2D = Fn(([st, a, b]: [Vec2, Vec2, Vec2]): Float => {\n const b_to_a = b.sub(a).toVar('b_to_a')\n const to_a = st.sub(a).toVar('to_a')\n const h = clamp(dot(to_a, b_to_a).div(dot(b_to_a, b_to_a)), 0, 1).toVar('h')\n return length(to_a.sub(h.mul(b_to_a)))\n}).setLayout({\n name: 'lineSDF2D',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\n// 3D line distance function\nexport const lineSDF3D = Fn(([p, a, b]: [Vec3, Vec3, Vec3]): Float => {\n return length(cross(p.sub(a), p.sub(b))).div(length(b.sub(a)))\n}).setLayout({\n name: 'lineSDF3D',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\n// Unified lineSDF function (defaults to 2D)\nexport const lineSDF = lineSDF2D\n","import { Fn, Float, smoothstep } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const fillWithEdge = Fn(([x, size, edge]: [Float, Float, Float]): Float => {\n return smoothstep(size.sub(edge), size.add(edge), x).oneMinus()\n}).setLayout({\n name: 'fillWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const fill = Fn(([x, size]: [Float, Float]): Float => {\n return aastep(size, x).oneMinus()\n}).setLayout({\n name: 'fill',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n ],\n})\n","import { Fn, Float, length, vec2, dFdx, dFdy, smoothstep } from '../../node'\n\nexport const aastep = Fn(([threshold, value]: [Float, Float]): Float => {\n const derivative = vec2(dFdx(value), dFdy(value))\n const afwidth = length(derivative).mul(0.7)\n return smoothstep(threshold.sub(afwidth), threshold.add(afwidth), value)\n}).setLayout({\n name: 'aastep',\n type: 'float',\n inputs: [\n { name: 'threshold', type: 'float' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X, float } from '../../node'\nimport { stroke } from './stroke'\n\n// Bridge effect for float\nexport const bridgeFloat = Fn(([c, d, s, w]: [Float, Float, Float, Float]): Float => {\n const maskedC = c.mul(float(1).sub(stroke(d, s, w.mul(2))))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeFloat',\n type: 'float',\n inputs: [\n { name: 'c', type: 'float' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec2\nexport const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec2',\n type: 'vec2',\n inputs: [\n { name: 'c', type: 'vec2' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec3\nexport const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'c', type: 'vec3' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec4\nexport const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec4',\n type: 'vec4',\n inputs: [\n { name: 'c', type: 'vec4' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Generic bridge function using auto type\nexport const bridge = Fn(([c, d, s, w]: [X, Float, Float, Float]): X => {\n const strokeMask = stroke(d, s, (w as any).mul(2))\n const maskedC = (c as any).mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridge',\n type: 'auto',\n inputs: [\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep, clamp } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const strokeWithEdge = Fn(([x, size, w, edge]: [Float, Float, Float, Float]): Float => {\n const d = smoothstep(size.sub(edge), size.add(edge), x.add(w.div(2))).sub(\n smoothstep(size.sub(edge), size.add(edge), x.sub(w.div(2)))\n )\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'strokeWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const stroke = Fn(([x, size, w]: [Float, Float, Float]): Float => {\n const d = aastep(size, x.add(w.div(2))).sub(aastep(size, x.sub(w.div(2))))\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'stroke',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, float, vec2, floor, ivec2 } from '../../node'\n\nexport const charLookupSimple = Fn(([index]: [Int]): Float => {\n const isValidChar = index.greaterThan(31).and(index.lessThan(127))\n return float(0).select(float(1), isValidChar)\n}).setLayout({\n name: 'charLookupSimple',\n type: 'float',\n inputs: [{ name: 'index', type: 'int' }],\n})\n\nexport const charSimple = Fn(([uv, charCode]: [Vec2, Int]): Float => {\n const charCoord = ivec2(floor(uv.mul(vec2(8, 16)))).toVar()\n charCoord.x.assign(charCoord.x.clamp(0, 7))\n charCoord.y.assign(charCoord.y.clamp(0, 15))\n const centerX = charCoord.x.sub(4).abs()\n const centerY = charCoord.y.sub(8).abs()\n const pattern = centerX.add(centerY).lessThan(charCode.mod(8) as any)\n return float(0).select(float(1), pattern)\n}).setLayout({\n name: 'charSimple',\n type: 'float',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'charCode', type: 'int' },\n ],\n})\n\n// Default char function using simplified implementation\nexport const char = charSimple\n","import { Fn, Vec2, Float } from '../../node'\nimport { circleSDFBasic } from '../sdf/circleSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const circleFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circleFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const circle = circleFill\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const circleSDF = Fn(([v, center]: [Vec2, Vec2]) => {\n return v.sub(center).length().mul(2)\n}).setLayout({\n name: 'circleSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const circleSDFBasic = Fn(([v]: [Vec2]) => {\n return v.sub(vec2(0.5)).length().mul(2)\n}).setLayout({\n name: 'circleSDFBasic',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, Vec3, Vec4, X, float, vec3, vec4, mix } from '../../node'\n\nexport const flipFloat = Fn(([v, pct]: [Float, Float]): Float => {\n return mix(v, float(1).sub(v), pct)\n}).setLayout({\n name: 'flipFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec3 = Fn(([v, pct]: [Vec3, Float]): Vec3 => {\n return mix(v, vec3(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec4 = Fn(([v, pct]: [Vec4, Float]): Vec4 => {\n return mix(v, vec4(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flip = Fn(([v, pct]: [X, Float]): X => {\n return mix(v, v.oneMinus(), pct)\n}).setLayout({\n name: 'flip',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'pct', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { hexSDF } from '../sdf/hexSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const hexFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(hexSDF(st), size)\n}).setLayout({\n name: 'hexFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const hexStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(hexSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'hexStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const hex = hexFill\n","import { Fn, Vec2, Float, abs, max, float } from '../../node'\n\nexport const hexSDF = Fn(([st]: [Vec2]): Float => {\n\t// Transform to centered coordinates [-1, 1]\n\tconst normalized = st.mul(2).sub(1).toVar()\n\tnormalized.assign(abs(normalized))\n\t\n\t// Hexagon SDF calculation using geometric properties\n\tconst sqrt3_2 = float(0.866025) // sqrt(3)/2\n\treturn max(\n\t\tabs(normalized.y), \n\t\tnormalized.x.mul(sqrt3_2).add(normalized.y.div(2))\n\t)\n}).setLayout({\n\tname: 'hexSDF',\n\ttype: 'float',\n\tinputs: [{ name: 'st', type: 'vec2' }],\n})","import { Fn, Vec2, Vec3, Vec4, Float, vec3, vec4, float } from '../../node'\nimport { circleFill } from './circle'\n\nexport const point2D = Fn(([st, pos, color, radius]: [Vec2, Vec2, Vec3, Float]): Vec4 => {\n const st_p = st.sub(pos)\n const circle = circleFill(st_p.add(0.5), radius)\n return vec4(color, 1).mul(circle)\n}).setLayout({\n name: 'point2D',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n { name: 'color', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n\nexport const pointSimple = Fn(([st, pos]: [Vec2, Vec2]): Vec4 => {\n return point2D(st, pos, vec3(1, 0, 0), float(0.02))\n}).setLayout({\n name: 'pointSimple',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n ],\n})\n\nexport const point = pointSimple\n","import { Fn, Vec2, Float, float } from '../../node'\nimport { rectSDF, rectSDFUniform } from '../sdf/rectSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const rectStroke = Fn(([st, size, strokeWidth]: [Vec2, Vec2, Float]): Float => {\n return stroke(rectSDF(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectStrokeUniform = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(rectSDFUniform(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStrokeUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectFill = Fn(([st, size]: [Vec2, Vec2]): Float => {\n return fill(rectSDF(st, size), float(1))\n}).setLayout({\n name: 'rectFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n ],\n})\n\nexport const rectFillUniform = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(rectSDFUniform(st, size), float(1))\n}).setLayout({\n name: 'rectFillUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const rect = rectFill\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const rectSDFBasic = Fn(([st]: [Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.abs().max(normalizedSt.y.abs())\n}).setLayout({\n name: 'rectSDFBasic',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const rectSDF = Fn(([st, s]: [Vec2, Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.div(s.x).abs().max(normalizedSt.y.div(s.y).abs())\n}).setLayout({\n name: 'rectSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const rectSDFUniform = Fn(([st, s]: [Vec2, Float]) => {\n return rectSDF(st, vec2(s))\n}).setLayout({\n name: 'rectSDFUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const rectSDFRounded = Fn(([p, b, r]: [Vec2, Vec2, Float]) => {\n const d = p.sub(0.5).mul(4.2).abs().sub(b).add(vec2(r)).toVar()\n return d.x.max(d.y).min(0).add(d.max(0).length()).sub(r)\n}).setLayout({\n name: 'rectSDFRounded',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { triSDF } from '../sdf/triSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const triFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(triSDF(st), size)\n}).setLayout({\n name: 'triFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const triStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(triSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'triStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const tri = triFill\n","import { Fn, Vec2, Float, max, abs, float } from '../../node'\n\nexport const triSDF = Fn(([st]: [Vec2]): Float => {\n\tconst normalized = st.sub(0.5).mul(5).toVar()\n\tconst sqrt3_2 = float(0.866025) // sqrt(3)/2\n\treturn max(\n\t\tabs(normalized.x).mul(sqrt3_2).add(normalized.y.div(2)),\n\t\tnormalized.y.div(-2)\n\t)\n}).setLayout({\n\tname: 'triSDF',\n\ttype: 'float',\n\tinputs: [{ name: 'st', type: 'vec2' }],\n})","import { struct, vec3 } from '../../../node'\n\nexport const AABB = struct({\n minBounds: vec3(),\n maxBounds: vec3(),\n})\n\nexport type AABBType = ReturnType<typeof AABB>\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbCentroid = Fn(([box]: [AABBType]): Vec3 => {\n return box.minBounds.add(box.maxBounds).mul(0.5)\n}).setLayout({\n name: 'aabbCentroid',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Bool } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbContain = Fn(([box, point]: [AABBType, Vec3]): Bool => {\n return point.x\n .greaterThan(box.minBounds.x)\n .and(point.x.lessThanEqual(box.maxBounds.x))\n .and(point.y.greaterThan(box.minBounds.y))\n .and(point.y.lessThanEqual(box.maxBounds.y))\n .and(point.z.greaterThan(box.minBounds.z))\n .and(point.z.lessThanEqual(box.maxBounds.z))\n}).setLayout({\n name: 'aabbContain',\n type: 'bool',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'point', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const diagonal = Fn(([box]: [AABBType]): Vec3 => {\n return box.maxBounds.sub(box.minBounds).abs()\n}).setLayout({\n name: 'diagonal',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Float } from '../../../node'\nimport { AABBType, AABB } from './aabb'\n\nexport const expand = Fn(([box, value]: [AABBType, Float]): AABBType => {\n return AABB({\n minBounds: box.minBounds.sub(value),\n maxBounds: box.maxBounds.add(value),\n })\n}).setLayout({\n name: 'expand',\n type: 'auto',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbIntersect = Fn(([box, rayOrigin, rayDir]: [AABBType, Vec3, Vec3]): Vec2 => {\n const tMin = box.minBounds.sub(rayOrigin).div(rayDir)\n const tMax = box.maxBounds.sub(rayOrigin).div(rayDir)\n const t1 = tMin.min(tMax)\n const t2 = tMin.max(tMax)\n const tNear = t1.x.max(t1.y).max(t1.z)\n const tFar = t2.x.min(t2.y).min(t2.z)\n return vec2(tNear, tFar)\n}).setLayout({\n name: 'aabbIntersect',\n type: 'vec2',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, max, abs } from '../../../node'\nimport { AABBType, AABB } from './aabb'\nimport { diagonal } from './diagonal'\n\nexport const square = Fn(([box]: [AABBType]): AABBType => {\n const diag = diagonal(box).mul(0.5).toVar('diag')\n const center = box.minBounds.add(diag).toVar('center')\n const maxDim = max(abs(diag.x), max(abs(diag.y), abs(diag.z))).toVar('maxDim')\n return AABB({\n minBounds: center.sub(maxDim),\n maxBounds: center.add(maxDim),\n })\n}).setLayout({\n name: 'square',\n type: 'auto',\n inputs: [{ name: 'box', type: 'auto' }],\n})","import { Fn, Float, length, cross } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const area = Fn(([tri]: [TriangleType]): Float => {\n return length(cross(tri.b.sub(tri.a), tri.c.sub(tri.a))).mul(0.5)\n}).setLayout({\n name: 'area',\n type: 'float',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, length, cross, dot, vec3, float } from '../../../node'\nimport { area } from './area'\nimport { TriangleType } from './triangle'\n\nexport const barycentricFromVec3 = Fn(([a, b, c]: [Vec3, Vec3, Vec3]): Vec3 => {\n const daa = dot(a, a).toVar('daa')\n const dab = dot(a, b).toVar('dab')\n const dbb = dot(b, b).toVar('dbb')\n const dca = dot(c, a).toVar('dca')\n const dcb = dot(c, b).toVar('dcb')\n const denom = daa.mul(dbb).sub(dab.mul(dab)).toVar('denom')\n const y = dbb.mul(dca).sub(dab.mul(dcb)).div(denom).toVar('y')\n const z = daa.mul(dcb).sub(dab.mul(dca)).div(denom).toVar('z')\n return vec3(float(1).sub(y).sub(z), y, z)\n}).setLayout({\n name: 'barycentricFromVec3',\n type: 'vec3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// barycentric(Triangle tri) - Triangle structから座標計算\nexport const barycentric = Fn(([tri]: [TriangleType]): Vec3 => {\n return barycentricFromVec3(tri.a, tri.b, tri.c)\n}).setLayout({\n name: 'barycentric',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n\nexport const barycentricFromPosition = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const f0 = a.sub(pos).toVar('f0')\n const f1 = b.sub(pos).toVar('f1')\n const f2 = c.sub(pos).toVar('f2')\n const areaValue = area(tri).toVar('area')\n return vec3(length(cross(f1, f2)), length(cross(f2, f0)), length(cross(f0, f1))).div(areaValue)\n}).setLayout({\n name: 'barycentricFromPosition',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleCentroid = Fn(([tri]: [TriangleType]): Vec3 => {\n return tri.a.add(tri.b).add(tri.c).div(3)\n}).setLayout({\n name: 'triangleCentroid',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, dot, length, cross, normalize, max, min, vec3, float, If, Return } from '../../../node'\nimport { barycentricFromVec3 } from './barycentric'\nimport { TriangleType } from './triangle'\n\nexport const closestPointWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a)\n const ac = c.sub(a)\n const p = pos.sub(dot(triNormal, pos.sub(a)).mul(triNormal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n Return(b.add(t.div(n).mul(bc)))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n Return(c.add(t.div(n).mul(ca)))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n Return(a.add(t.div(n).mul(ab)))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPointWithNormal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const closestPoint = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a) // .toVar('ab') @TODO FIX\n const ac = c.sub(a)\n const normal = normalize(cross(ac, ab))\n const p = pos.sub(dot(normal, pos.sub(a)).mul(normal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n Return(b.add(t.div(n).mul(bc)))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n Return(c.add(t.div(n).mul(ca)))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n Return(a.add(t.div(n).mul(ab)))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPoint',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Bool, Vec3, cross, dot } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleContain = Fn(([tri, pos]: [TriangleType, Vec3]): Bool => {\n const localA = tri.a.sub(pos).toVar('localA')\n const localB = tri.b.sub(pos).toVar('localB')\n const localC = tri.c.sub(pos).toVar('localC')\n const u = cross(localB, localC).toVar('u')\n const v = cross(localC, localA).toVar('v')\n const w = cross(localA, localB).toVar('w')\n return dot(u, v).greaterThanEqual(0).and(dot(u, w).greaterThanEqual(0))\n}).setLayout({\n name: 'triangleContain',\n type: 'bool',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, cross, dot, sign, sqrt, min } from '../../../node'\nimport { lengthSq } from '../../math/lengthSq'\nimport { TriangleType } from './triangle'\n\nexport const distanceSq = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const v21 = b.sub(a)\n const p1 = pos.sub(a)\n const v32 = c.sub(b)\n const p2 = pos.sub(b)\n const v13 = a.sub(c)\n const p3 = pos.sub(c)\n const nor = cross(v21, v13)\n\n const s1 = sign(dot(cross(v21, nor), p1))\n const s2 = sign(dot(cross(v32, nor), p2))\n const s3 = sign(dot(cross(v13, nor), p3))\n const signSum = s1.add(s2).add(s3)\n\n const edge1 = lengthSq(v21.mul(dot(v21, p1).div(lengthSq(v21)).saturate()).sub(p1))\n const edge2 = lengthSq(v32.mul(dot(v32, p2).div(lengthSq(v32)).saturate()).sub(p2))\n const edge3 = lengthSq(v13.mul(dot(v13, p3).div(lengthSq(v13)).saturate()).sub(p3))\n const edgeDistance = min(min(edge1, edge2), edge3)\n\n const planeDistance = dot(nor, p1).mul(dot(nor, p1)).div(lengthSq(nor))\n\n // @ts-ignore\n return sqrt(edgeDistance.select(planeDistance, signSum.lessThan(2))) as Float\n}).setLayout({\n name: 'distanceSq',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn } from '../../node'\nimport type { Vec2, X } from '../../node/types'\n\nexport const lengthSq = Fn(([v]: [X]): X => {\n return (v as Vec2).dot(v as Vec2) as X\n}).setLayout({\n name: 'lengthSq',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, cross, dot, float, struct, vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const Ray = struct({\n origin: vec3(),\n direction: vec3(),\n})\n\nexport type RayType = ReturnType<typeof Ray>\n\nexport const triangleIntersect = Fn(([tri, rayOrigin, rayDir]: [TriangleType, Vec3, Vec3]): Float => {\n const v1v0 = tri.b.sub(tri.a)\n const v2v0 = tri.c.sub(tri.a)\n const rov0 = rayOrigin.sub(tri.a)\n const point = cross(v1v0, v2v0)\n const q = cross(rov0, rayDir)\n const d = float(1).div(dot(rayDir, point))\n const u = d.mul(dot(q, v2v0).negate())\n const v = d.mul(dot(q, v1v0))\n const t = d.mul(dot(point, rov0).negate())\n\n const isOutside = u\n .lessThan(0)\n .or(u.greaterThan(1))\n .or(v.lessThan(0))\n .or(u.add(v).greaterThan(1))\n .or(t.lessThan(0))\n\n return float(9999999.9).select(t, isOutside)\n}).setLayout({\n name: 'triangleIntersect',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n\nexport const triangleIntersectRay = Fn(([tri, ray]: [TriangleType, RayType]): Float => {\n return triangleIntersect(tri, ray.origin, ray.direction)\n}).setLayout({\n name: 'triangleIntersectRay',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'ray', type: 'auto' },\n ],\n})\n","import { Fn, Vec3, cross, normalize } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const normal = Fn(([tri]: [TriangleType]): Vec3 => {\n return normalize(cross(tri.b.sub(tri.a), tri.c.sub(tri.a)))\n}).setLayout({\n name: 'normal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec3, length, sign, dot } from '../../../node'\nimport { normal } from './normal'\nimport { closestPointWithNormal } from './closestPoint'\nimport { TriangleType } from './triangle'\n\nexport const signedDistanceWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Float => {\n const nearest = closestPointWithNormal(tri, triNormal, pos).toVar('nearest')\n const delta = pos.sub(nearest).toVar('delta')\n const distance = length(delta).toVar('distance')\n return distance.mul(sign(dot(delta.div(distance), triNormal)))\n}).setLayout({\n name: 'signedDistanceWithNormal',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const signedDistance = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const triNormal = normal(tri).toVar('triNormal')\n return signedDistanceWithNormal(tri, triNormal, pos)\n}).setLayout({\n name: 'signedDistance',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const Triangle = struct({\n a: vec3(),\n b: vec3(),\n c: vec3(),\n})\n\nexport type TriangleType = ReturnType<typeof Triangle>\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const cnoiseVec2 = Fn(([P]: [Vec2]): Float => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y)\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'cnoiseVec2',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec2' }],\n})\n\nexport const cnoiseVec3 = Fn(([P]: [Vec3]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x)\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec3',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec3' }],\n})\n\nexport const cnoiseVec4 = Fn(([P]: [Vec4]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(1).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(gx00.step(vec4(0)).sub(0.5)))\n gy00.subAssign(sw00.mul(gy00.step(vec4(0)).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(gx01.step(vec4(0)).sub(0.5)))\n gy01.subAssign(sw01.mul(gy01.step(vec4(0)).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(gx10.step(vec4(0)).sub(0.5)))\n gy10.subAssign(sw10.mul(gy10.step(vec4(0)).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(gx11.step(vec4(0)).sub(0.5)))\n gy11.subAssign(sw11.mul(gy11.step(vec4(0)).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x)\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec4',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\n\nfunction fun(x: Float): Float\nfunction fun(x: Vec2): Vec2\nfunction fun(x: Vec3): Vec3\nfunction fun(x: Vec4): Vec4\nfunction fun(x: X): X {\n return x.sub(\n x\n .div(289)\n .floor()\n .mul(289)\n )\n}\n\nexport const mod289 = Fn(([x]: [Float]): Float => {\n return fun(x)\n}).setLayout({\n name: 'mod289',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const mod289Vec2 = Fn(([x]: [Vec2]): Vec2 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const mod289Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const mod289Vec4 = Fn(([x]: [Vec4]): Vec4 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec4',\n type: 'vec4',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\nimport { mod289, mod289Vec2, mod289Vec3, mod289Vec4 } from './mod289'\n\nfunction fun(v: Float): Float\nfunction fun(v: Vec2): Vec2\nfunction fun(v: Vec3): Vec3\nfunction fun(v: Vec4): Vec4\nfunction fun(v: X): X {\n return v.mul(34).add(1).mul(v)\n}\n\nexport const permute = Fn(([v]: [Float]): Float => {\n return mod289(fun(v))\n}).setLayout({\n name: 'permute',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const permuteVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return mod289Vec2(fun(v))\n}).setLayout({\n name: 'permuteVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const permuteVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return mod289Vec3(fun(v))\n}).setLayout({\n name: 'permuteVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const permuteVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return mod289Vec4(fun(v))\n}).setLayout({\n name: 'permuteVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const taylorInvSqrt = Fn(([r]: [X]): X => {\n return r.mul(-0.85373472095314).add(1.79284291400159)\n}).setLayout({\n name: 'taylorInvSqrt',\n type: 'auto',\n inputs: [{ name: 'r', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const quintic = Fn(([v]: [X]): X => {\n\tconst v3 = v.mul(v).mul(v).toVar('v3')\n\tconst inner = v.mul(v.mul(6).sub(15)).add(10).toVar('inner')\n\treturn v3.mul(inner)\n}).setLayout({\n\tname: 'quintic',\n\ttype: 'auto',\n\tinputs: [\n\t\t{\n\t\t\tname: 'v',\n\t\t\ttype: 'auto'\n\t\t}\n\t]\n})","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { snoise2, snoise3Vec3, snoise3Vec4 } from './snoise'\n\nexport const curlVec2 = Fn(([p]: [Vec2]): Vec2 => {\n const e = float(0.1).toVar('e')\n const dx = vec2(e, 0).toVar('dx')\n const dy = vec2(0, e).toVar('dy')\n const p_x0 = snoise2(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise2(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise2(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise2(p.add(dy)).toVar('p_y1')\n const x = p_x1.y.add(p_x0.y).toVar('x')\n const y = p_y1.x.sub(p_y0.x).toVar('y')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec2(x, y).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const curlVec3 = Fn(([p]: [Vec3]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec3(e, 0, 0).toVar('dx')\n const dy = vec3(0, e, 0).toVar('dy')\n const dz = vec3(0, 0, e).toVar('dz')\n const p_x0 = snoise3Vec3(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec3(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec3(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec3(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec3(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec3(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const curlVec4 = Fn(([p]: [Vec4]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec4(e, 0, 0, 1).toVar('dx')\n const dy = vec4(0, e, 0, 1).toVar('dy')\n const dz = vec4(0, 0, e, 1).toVar('dz')\n const p_x0 = snoise3Vec4(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec4(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec4(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec4(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec4(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec4(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec4',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { mod289Vec2, mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permute, permuteVec3, permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { grad4 } from '../math/grad4'\n\nexport const snoiseVec2 = Fn(([v]: [Vec2]): Float => {\n const C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439).toVar('C')\n const i = v.add(v.dot(C.yy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xx)).toVar('x0')\n const i1 = vec2(1, 0).select(vec2(0, 1), x0.x.greaterThan(x0.y)).toVar('i1')\n const x12 = x0.xyxy.add(C.xxzz).toVar('x12')\n x12.xy = x12.xy.sub(i1)\n i.assign(mod289Vec2(i))\n const p = permuteVec3(\n permuteVec3(i.y.add(vec3(0, i1.y, 1)))\n .add(i.x)\n .add(vec3(0, i1.x, 1))\n ).toVar('p')\n const m = float(0.5)\n .sub(vec3(x0.dot(x0), x12.xy.dot(x12.xy), x12.zw.dot(x12.zw)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n m.assign(m.mul(m))\n const x = p.mul(C.www).fract().mul(2).sub(1).toVar('x')\n const h = x.abs().sub(0.5).toVar('h')\n const ox = x.add(0.5).floor().toVar('ox')\n const a0 = x.sub(ox).toVar('a0')\n m.mulAssign(float(1.79284291400159).sub(float(0.85373472095314).mul(a0.mul(a0).add(h.mul(h)))))\n const g = vec3(a0.x.mul(x0.x).add(h.x.mul(x0.y)), a0.yz.mul(x12.xz).add(h.yz.mul(x12.yw))).toVar('g')\n return float(130).mul(m.dot(g))\n}).setLayout({\n name: 'snoiseVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const snoiseVec3 = Fn(([v]: [Vec3]): Float => {\n const C = vec2(1 / 6, 1 / 3).toVar('C')\n const D = vec4(0, 0.5, 1, 2).toVar('D')\n const i = v.add(v.dot(C.yyy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxx)).toVar('x0')\n const g = x0.yzx.step(x0.xyz).toVar('g')\n const l = float(1).sub(g).toVar('l')\n const i1 = g.xyz.min(l.zxy).toVar('i1')\n const i2 = g.xyz.max(l.zxy).toVar('i2')\n const x1 = x0.sub(i1).add(C.xxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyy).toVar('x2')\n const x3 = x0.sub(D.yyy).toVar('x3')\n i.assign(mod289Vec3(i))\n const p = permuteVec4(\n permuteVec4(\n permuteVec4(i.z.add(vec4(0, i1.z, i2.z, 1)))\n .add(i.y)\n .add(vec4(0, i1.y, i2.y, 1))\n )\n .add(i.x)\n .add(vec4(0, i1.x, i2.x, 1))\n ).toVar('p')\n const n_ = float(0.142857142857).toVar('n_')\n const ns = n_.mul(D.wyz).sub(D.xzx).toVar('ns')\n const j = p.sub(p.mul(ns.z).mul(ns.z).floor().mul(49)).toVar('j')\n const x_ = j.mul(ns.z).floor().toVar('x_')\n const y_ = j.sub(x_.mul(7)).floor().toVar('y_')\n const x = x_.mul(ns.x).add(ns.yyyy).toVar('x')\n const y = y_.mul(ns.x).add(ns.yyyy).toVar('y')\n const h = float(1).sub(x.abs()).sub(y.abs()).toVar('h')\n const b0 = vec4(x.xy, y.xy).toVar('b0')\n const b1 = vec4(x.zw, y.zw).toVar('b1')\n const s0 = b0.floor().mul(2).add(1).toVar('s0')\n const s1 = b1.floor().mul(2).add(1).toVar('s1')\n const sh = vec4(0).step(h).negate().toVar('sh')\n const a0 = b0.xzyw.add(s0.xzyw.mul(sh.xxyy)).toVar('a0')\n const a1 = b1.xzyw.add(s1.xzyw.mul(sh.zzww)).toVar('a1')\n const p0 = vec3(a0.xy, h.x).toVar('p0')\n const p1 = vec3(a0.zw, h.y).toVar('p1')\n const p2 = vec3(a1.xy, h.z).toVar('p2')\n const p3 = vec3(a1.zw, h.w).toVar('p3')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n const m = float(0.6)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n return float(42).mul(m.mul(m).dot(vec4(p0.dot(x0), p1.dot(x1), p2.dot(x2), p3.dot(x3))))\n}).setLayout({\n name: 'snoiseVec3',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const snoiseVec4 = Fn(([v]: [Vec4]): Float => {\n const C = vec4(0.138196601125011, 0.276393202250021, 0.414589803375032, -0.447213595499958).toVar('C')\n const i = v\n .add(v.dot(vec4(0.309016994374947451)))\n .floor()\n .toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxxx)).toVar('x0')\n const i0 = vec4(0).toVar('i0')\n const isX = x0.xxx.step(x0.yzw).toVar('isX')\n const isYZ = x0.yyz.step(x0.zww).toVar('isYZ')\n i0.x = isX.x.add(isX.y).add(isX.z)\n i0.yzw = float(1).sub(isX)\n i0.y = i0.y.add(isYZ.x).add(isYZ.y)\n i0.zw = i0.zw.add(float(1).sub(isYZ.xy))\n i0.z = i0.z.add(isYZ.z)\n i0.w = i0.w.add(float(1).sub(isYZ.z))\n const i3 = i0.clamp(0, 1).toVar('i3')\n const i2 = i0.sub(1).clamp(0, 1).toVar('i2')\n const i1 = i0.sub(2).clamp(0, 1).toVar('i1')\n const x1 = x0.sub(i1).add(C.xxxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyyy).toVar('x2')\n const x3 = x0.sub(i3).add(C.zzzz).toVar('x3')\n const x4 = x0.add(C.wwww).toVar('x4')\n i.assign(mod289Vec4(i))\n const j0 = permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x)).toVar('j0')\n const j1 = permuteVec4(\n permuteVec4(\n permuteVec4(\n permuteVec4(i.w.add(vec4(i1.w, i2.w, i3.w, 1)))\n .add(i.z)\n .add(vec4(i1.z, i2.z, i3.z, 1))\n )\n .add(i.y)\n .add(vec4(i1.y, i2.y, i3.y, 1))\n )\n .add(i.x)\n .add(vec4(i1.x, i2.x, i3.x, 1))\n ).toVar('j1')\n const ip = vec4(1 / 294, 1 / 49, 1 / 7, 0).toVar('ip')\n const p0 = grad4(j0, ip).toVar('p0')\n const p1 = grad4(j1.x, ip).toVar('p1')\n const p2 = grad4(j1.y, ip).toVar('p2')\n const p3 = grad4(j1.z, ip).toVar('p3')\n const p4 = grad4(j1.w, ip).toVar('p4')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n p4.mulAssign(taylorInvSqrt(p4.dot(p4)))\n const m0 = float(0.6)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .max(0)\n .toVar('m0')\n const m1 = float(0.6)\n .sub(vec2(x3.dot(x3), x4.dot(x4)))\n .max(0)\n .toVar('m1')\n m0.assign(m0.mul(m0))\n m1.assign(m1.mul(m1))\n return float(49).mul(\n m0\n .mul(m0)\n .dot(vec3(p0.dot(x0), p1.dot(x1), p2.dot(x2)))\n .add(m1.mul(m1).dot(vec2(p3.dot(x3), p4.dot(x4))))\n )\n}).setLayout({\n name: 'snoiseVec4',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const snoise2 = Fn(([x]: [Vec2]): Vec2 => {\n const s = snoiseVec2(x).toVar('s')\n const s1 = snoiseVec2(vec2(x.y.sub(19.1), x.x.add(47.2))).toVar('s1')\n return vec2(s, s1)\n}).setLayout({\n name: 'snoise2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const snoise3Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n const s = snoiseVec3(x).toVar('s')\n const s1 = snoiseVec3(vec3(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2))).toVar('s1')\n const s2 = snoiseVec3(vec3(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4))).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const snoise3Vec4 = Fn(([x]: [Vec4]): Vec3 => {\n const s = snoiseVec4(x).toVar('s')\n const s1 = snoiseVec4(vec4(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2), x.w)).toVar('s1')\n const s2 = snoiseVec4(vec4(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4), x.w)).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec4',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec4, vec4, vec3, float } from '../../node'\n\nexport const grad4 = Fn(([j, ip]: [Float, Vec4]): Vec4 => {\n const ones = vec4(1, 1, 1, -1).toVar('ones')\n const p = vec4(0).toVar('p')\n const s = vec4(0).toVar('s')\n p.xyz = vec3(j, j, j).mul(ip.xyz).fract().mul(7).floor().mul(ip.z).sub(1)\n p.w = float(1.5).sub(p.xyz.abs().dot(ones.xyz))\n s.assign(vec4(p.x.lessThan(0.0), p.y.lessThan(0.0), p.z.lessThan(0.0), p.w.lessThan(0.0)))\n p.xyz = p.xyz.add(s.xyz.mul(2).sub(1).mul(s.www))\n return p\n}).setLayout({\n name: 'grad4',\n type: 'vec4',\n inputs: [\n { name: 'j', type: 'float' },\n { name: 'ip', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, float, Loop, int } from '../../node'\nimport { snoiseVec2, snoiseVec3 } from './snoise'\nimport { gnoiseVec3Tiled } from './gnoise'\n\nconst FBM_OCTAVES = int(4)\nconst FBM_SCALE_SCALAR = 2\nconst FBM_AMPLITUDE_INITIAL = 0.5\nconst FBM_AMPLITUDE_SCALAR = 0.5\n\nexport const fbmVec2 = Fn(([st]: [Vec2]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const coord = st.toVar('coord')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec2(coord)))\n coord.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const fbmVec3 = Fn(([pos]: [Vec3]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const posVar = pos.toVar('posVar')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec3(posVar)))\n posVar.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const fbmVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const persistence = float(0.5).toVar('persistence')\n const lacunarity = float(2).toVar('lacunarity')\n const amplitude = float(0.5).toVar('amplitude')\n const total = float(0).toVar('total')\n const normalization = float(0).toVar('normalization')\n const pVar = p.toVar('pVar')\n Loop(FBM_OCTAVES, () => {\n const noiseValue = gnoiseVec3Tiled(pVar, tileLength.mul(lacunarity).div(2))\n .div(2)\n .add(0.5)\n .toVar('noiseValue')\n total.addAssign(noiseValue.mul(amplitude))\n normalization.addAssign(amplitude)\n amplitude.mulAssign(persistence)\n pVar.assign(pVar.mul(lacunarity))\n })\n return total.div(normalization)\n}).setLayout({\n name: 'fbmVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const fbm = fbmVec3\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float } from '../../node'\nimport { random, randomVec2, randomVec3 } from './random'\nimport { srandom3Vec3Tiled } from './srandom'\nimport { cubicVec2 } from '../math/cubic'\nimport { quintic } from '../math/quintic'\n\nexport const gnoise = Fn(([x]: [Float]): Float => {\n const i = x.floor().toVar('i')\n const f = x.fract().toVar('f')\n return random(i).mix(random(i.add(1)), float(0).smoothstep(float(1), f))\n}).setLayout({\n name: 'gnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const gnoiseVec2 = Fn(([st]: [Vec2]): Float => {\n const i = st.floor().toVar('i')\n const f = st.fract().toVar('f')\n const a = randomVec2(i).toVar('a')\n const b = randomVec2(i.add(vec2(1, 0))).toVar('b')\n const c = randomVec2(i.add(vec2(0, 1))).toVar('c')\n const d = randomVec2(i.add(vec2(1, 1))).toVar('d')\n const u = cubicVec2(f).toVar('u')\n return a.mix(b, u.x).add(c.sub(a).mul(u.y).mul(float(1).sub(u.x)).add(d.sub(b).mul(u.x).mul(u.y)))\n}).setLayout({\n name: 'gnoiseVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const gnoiseVec3 = Fn(([p]: [Vec3]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return float(-1).add(\n float(2).mul(\n randomVec3(i.add(vec3(0, 0, 0)))\n .mix(randomVec3(i.add(vec3(1, 0, 0))), u.x)\n .mix(randomVec3(i.add(vec3(0, 1, 0))).mix(randomVec3(i.add(vec3(1, 1, 0))), u.x), u.y)\n .mix(\n randomVec3(i.add(vec3(0, 0, 1)))\n .mix(randomVec3(i.add(vec3(1, 0, 1))), u.x)\n .mix(\n randomVec3(i.add(vec3(0, 1, 1))).mix(\n randomVec3(i.add(vec3(1, 1, 1))),\n u.x\n ),\n u.y\n ),\n u.z\n )\n )\n )\n}).setLayout({\n name: 'gnoiseVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const gnoiseVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return srandom3Vec3Tiled(i.add(vec3(0, 0, 0)), tileLength)\n .dot(f.sub(vec3(0, 0, 0)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 0)), tileLength).dot(f.sub(vec3(1, 0, 0))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 0)), tileLength)\n .dot(f.sub(vec3(0, 1, 0)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 0)), tileLength).dot(f.sub(vec3(1, 1, 0))),\n u.x\n ),\n u.y\n )\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 0, 1)), tileLength)\n .dot(f.sub(vec3(0, 0, 1)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 1)), tileLength).dot(f.sub(vec3(1, 0, 1))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 1)), tileLength)\n .dot(f.sub(vec3(0, 1, 1)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 1)), tileLength).dot(\n f.sub(vec3(1, 1, 1))\n ),\n u.x\n ),\n u.y\n ),\n u.z\n )\n}).setLayout({\n name: 'gnoiseVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const gnoise3 = Fn(([x]: [Vec3]): Vec3 => {\n return vec3(\n gnoiseVec3(x.add(vec3(123.456, 0.567, 0.37))),\n gnoiseVec3(x.add(vec3(0.11, 47.43, 19.17))),\n gnoiseVec3(x)\n )\n}).setLayout({\n name: 'gnoise3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, fract, sin } from '../../node'\n\nconst RANDOM_SCALE = vec4(443.897, 441.423, 0.0973, 0.1099)\n\nexport const random = Fn(([x]: [Float]): Float => {\n return x.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'random',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const randomVec2 = Fn(([st]: [Vec2]): Float => {\n return st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const randomVec3 = Fn(([pos]: [Vec3]): Float => {\n return pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()\n}).setLayout({\n name: 'randomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const randomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return dot_product.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const random2Float = Fn(([p]: [Float]): Vec2 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Float',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const p3 = p.xyx.mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random2Vec3 = Fn(([p3]: [Vec3]): Vec2 => {\n p3.assign(p3.mul(RANDOM_SCALE.xyz).fract())\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p3', type: 'vec3' }],\n})\n\nexport const random3Float = Fn(([p]: [Float]): Vec3 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Float',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random3Vec2 = Fn(([p]: [Vec2]): Vec3 => {\n const p3 = vec3(p.xyx).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yxz.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Vec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(p.mul(RANDOM_SCALE.xyz).fract())\n p.addAssign(p.dot(p.yxz.add(19.19)))\n return p.xxy.add(p.yzz).mul(p.zyx).fract()\n}).setLayout({\n name: 'random3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Float = Fn(([p]: [Float]): Vec4 => {\n const p4 = float(p).mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Float',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random4Vec2 = Fn(([p]: [Vec2]): Vec4 => {\n const p4 = p.xyxy.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec2',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random4Vec3 = Fn(([p]: [Vec3]): Vec4 => {\n const p4 = p.xyzx.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec3',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Vec4 = Fn(([p4]: [Vec4]): Vec4 => {\n p4.assign(p4.mul(RANDOM_SCALE).fract())\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec4',\n type: 'vec4',\n inputs: [{ name: 'p4', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, sin } from '../../node'\n\nexport const srandom = Fn(([x]: [Float]): Float => {\n return float(-1).add(float(2).mul(x.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandom',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const srandomVec2 = Fn(([st]: [Vec2]): Float => {\n return float(-1).add(float(2).mul(st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandomVec3 = Fn(([pos]: [Vec3]): Float => {\n return float(-1).add(float(2).mul(pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const srandomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return float(-1).add(float(2).mul(dot_product.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const srandom2Vec2 = Fn(([st]: [Vec2]): Vec2 => {\n const k = vec2(0.3183099, 0.3678794).toVar('k')\n st.assign(st.mul(k).add(k.yx))\n return vec2(-1).add(\n vec2(2).mul(\n float(16)\n .mul(k)\n .mul(st.x.mul(st.y).mul(st.x.add(st.y)).fract())\n .fract()\n )\n )\n}).setLayout({\n name: 'srandom2Vec2',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandom3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(\n vec3(\n p.dot(vec3(127.1, 311.7, 74.7)),\n p.dot(vec3(269.5, 183.3, 246.1)),\n p.dot(vec3(113.5, 271.9, 124.6))\n )\n )\n return float(-1).add(float(2).mul(p.sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandom3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const srandom2Vec2Tiled = Fn(([p, tileLength]: [Vec2, Float]): Vec2 => {\n p.assign(p.mod(vec2(tileLength)))\n return srandom2Vec2(p)\n}).setLayout({\n name: 'srandom2Vec2Tiled',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const srandom3Vec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Vec3 => {\n p.assign(p.mod(vec3(tileLength)))\n return srandom3Vec3(p)\n}).setLayout({\n name: 'srandom3Vec3Tiled',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\n\nexport const cubic = Fn(([v]: [Float]): Float => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicFloat',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const cubicVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const cubicVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const cubicVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const cubicFloatSlopes = Fn(([v, slope0, slope1]: [Float, Float, Float]): Float => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicFloatSlopes',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec2Slopes = Fn(([v, slope0, slope1]: [Vec2, Float, Float]): Vec2 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec2Slopes',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec3Slopes = Fn(([v, slope0, slope1]: [Vec3, Float, Float]): Vec3 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec3Slopes',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec4Slopes = Fn(([v, slope0, slope1]: [Vec4, Float, Float]): Vec4 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec4Slopes',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec3, dot, sqrt, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const gerstnerWave = Fn(([_uv, _dir, _steepness, _wavelength, _time]: [Vec2, Vec2, Float, Float, Float]) => {\n const k = PI.mul(2).div(_wavelength).toVar('k')\n const c = float(9.8).div(k).sqrt().toVar('c')\n const d = _dir.normalize().toVar('d')\n const f = k.mul(_uv.dot(d).sub(c.mul(_time))).toVar('f')\n const a = _steepness.div(k).toVar('a')\n return vec3(d.x.mul(a.mul(f.cos())), a.mul(f.sin()), d.y.mul(a.mul(f.cos())))\n}).setLayout({\n name: 'gerstnerWave',\n type: 'vec3',\n inputs: [\n { name: '_uv', type: 'vec2' },\n { name: '_dir', type: 'vec2' },\n { name: '_steepness', type: 'float' },\n { name: '_wavelength', type: 'float' },\n { name: '_time', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec2, vec3, vec4 } from '../../node'\nimport { srandom2Vec2, srandom3Vec3 } from './srandom'\n\nexport const noised = Fn(([p]: [Vec2]) => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = f\n .mul(f)\n .mul(f)\n .mul(f.mul(f.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = f\n .mul(f)\n .mul(f.mul(f.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom2Vec2(i.add(vec2(0, 0))).toVar('ga')\n const gb = srandom2Vec2(i.add(vec2(1, 0))).toVar('gb')\n const gc = srandom2Vec2(i.add(vec2(0, 1))).toVar('gc')\n const gd = srandom2Vec2(i.add(vec2(1, 1))).toVar('gd')\n\n const va = f.sub(vec2(0, 0)).dot(ga).toVar('va')\n const vb = f.sub(vec2(1, 0)).dot(gb).toVar('vb')\n const vc = f.sub(vec2(0, 1)).dot(gc).toVar('vc')\n const vd = f.sub(vec2(1, 1)).dot(gd).toVar('vd')\n\n return vec3(\n va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd))),\n ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(du.mul(u.yx.mul(va.sub(vb).sub(vc).add(vd)).add(vec2(vb, vc)).sub(va)))\n )\n}).setLayout({\n name: 'noised',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const noisedVec3 = Fn(([pos]: [Vec3]) => {\n const p = pos.floor().toVar('p')\n const w = pos.fract().toVar('w')\n const u = w\n .mul(w)\n .mul(w)\n .mul(w.mul(w.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = w\n .mul(w)\n .mul(w.mul(w.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom3Vec3(p.add(vec3(0, 0, 0))).toVar('ga')\n const gb = srandom3Vec3(p.add(vec3(1, 0, 0))).toVar('gb')\n const gc = srandom3Vec3(p.add(vec3(0, 1, 0))).toVar('gc')\n const gd = srandom3Vec3(p.add(vec3(1, 1, 0))).toVar('gd')\n const ge = srandom3Vec3(p.add(vec3(0, 0, 1))).toVar('ge')\n const gf = srandom3Vec3(p.add(vec3(1, 0, 1))).toVar('gf')\n const gg = srandom3Vec3(p.add(vec3(0, 1, 1))).toVar('gg')\n const gh = srandom3Vec3(p.add(vec3(1, 1, 1))).toVar('gh')\n\n const va = w.sub(vec3(0, 0, 0)).dot(ga).toVar('va')\n const vb = w.sub(vec3(1, 0, 0)).dot(gb).toVar('vb')\n const vc = w.sub(vec3(0, 1, 0)).dot(gc).toVar('vc')\n const vd = w.sub(vec3(1, 1, 0)).dot(gd).toVar('vd')\n const ve = w.sub(vec3(0, 0, 1)).dot(ge).toVar('ve')\n const vf = w.sub(vec3(1, 0, 1)).dot(gf).toVar('vf')\n const vg = w.sub(vec3(0, 1, 1)).dot(gg).toVar('vg')\n const vh = w.sub(vec3(1, 1, 1)).dot(gh).toVar('vh')\n\n const noiseValue = va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.z.mul(ve.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd)))\n .add(u.y.mul(u.z).mul(va.sub(vc).sub(ve).add(vg)))\n .add(u.z.mul(u.x).mul(va.sub(vb).sub(ve).add(vf)))\n .add(va.negate().add(vb).add(vc).sub(vd).add(ve).sub(vf).sub(vg).add(vh).mul(u.x).mul(u.y).mul(u.z))\n\n const gradientValue = ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.z.mul(ge.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(u.y.mul(u.z).mul(ga.sub(gc).sub(ge).add(gg)))\n .add(u.z.mul(u.x).mul(ga.sub(gb).sub(ge).add(gf)))\n .add(ga.negate().add(gb).add(gc).sub(gd).add(ge).sub(gf).sub(gg).add(gh).mul(u.x).mul(u.y).mul(u.z))\n .add(\n du.mul(\n vec3(vb, vc, ve)\n .sub(va)\n .add(\n u.yzx.mul(\n vec3(\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg),\n va.sub(vb).sub(ve).add(vf)\n )\n )\n )\n .add(\n u.zxy.mul(\n vec3(\n va.sub(vb).sub(ve).add(vf),\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg)\n )\n )\n )\n .add(\n u.yzx\n .mul(u.zxy)\n .mul(\n va\n .negate()\n .add(vb)\n .add(vc)\n .sub(vd)\n .add(ve)\n .sub(vf)\n .sub(vg)\n .add(vh)\n )\n )\n )\n )\n\n return vec4(noiseValue, gradientValue)\n}).setLayout({\n name: 'noisedVec3',\n type: 'vec4',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec4, mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const pnoise = Fn(([P, rep]: [Vec2, Vec2]) => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(Pi.mod(rep.xyxy))\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y).toVar('n_xy')\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'pnoise',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec2' },\n { name: 'rep', type: 'vec2' },\n ],\n})\n\nexport const pnoiseVec3 = Fn(([P, rep]: [Vec3, Vec3]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x).toVar('n_xyz')\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec3',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec3' },\n { name: 'rep', type: 'vec3' },\n ],\n})\n\nexport const pnoiseVec4 = Fn(([P, rep]: [Vec4, Vec4]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(1).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(vec4(0).step(gx00).sub(0.5)))\n gy00.subAssign(sw00.mul(vec4(0).step(gy00).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(vec4(0).step(gx01).sub(0.5)))\n gy01.subAssign(sw01.mul(vec4(0).step(gy01).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(vec4(0).step(gx10).sub(0.5)))\n gy10.subAssign(sw10.mul(vec4(0).step(gy10).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(vec4(0).step(gx11).sub(0.5)))\n gy11.subAssign(sw11.mul(vec4(0).step(gy11).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x).toVar('n_xyzw')\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec4',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec4' },\n { name: 'rep', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, vec4, mat3, step, mix, If, float, any } from '../../node'\nimport { mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\n\n// Basic psrdnoise 2D implementation\nexport const psrdnoise2D = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Vec2 => {\n const uv = vec2(x.x.add(x.y.div(2)), x.y).toVar('uv')\n const i0 = uv.floor().toVar('i0')\n const f0 = uv.fract().toVar('f0')\n const cmp = f0.x.step(f0.y).toVar('cmp')\n const o1 = vec2(cmp, cmp.oneMinus()).toVar('o1')\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(vec2(1, 1)).toVar('i2')\n\n const v0 = vec2(i0.x.sub(i0.y.div(2)), i0.y).toVar('v0')\n const v1 = vec2(v0.x.add(o1.x).sub(o1.y.div(2)), v0.y.add(o1.y)).toVar('v1')\n const v2 = vec2(v0.x.add(0.5), v0.y.add(1)).toVar('v2')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n\n let iu = vec3(i0.x, i1.x, i2.x).toVar('iu')\n let iv = vec3(i0.y, i1.y, i2.y).toVar('iv')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)), () => {\n const xw = vec3(v0.x, v1.x, v2.x).toVar('xw')\n const yw = vec3(v0.y, v1.y, v2.y).toVar('yw')\n\n If(period.x.greaterThan(0), () => {\n xw.assign(xw.mod(period.x))\n })\n\n If(period.y.greaterThan(0), () => {\n yw.assign(yw.mod(period.y))\n })\n\n iu.assign(xw.add(yw.div(2)).add(0.5).floor())\n iv.assign(yw.add(0.5).floor())\n })\n\n let hash = mod289Vec3(iu).toVar('hash')\n hash.assign(mod289Vec3(hash.mul(51).add(2).mul(hash).add(iv)))\n hash.assign(mod289Vec3(hash.mul(34).add(10).mul(hash)))\n\n const psi = hash.mul(0.07482).add(alpha).toVar('psi')\n const gx = psi.cos().toVar('gx')\n const gy = psi.sin().toVar('gy')\n\n const g0 = vec2(gx.x, gy.x).toVar('g0')\n const g1 = vec2(gx.y, gy.y).toVar('g1')\n const g2 = vec2(gx.z, gy.z).toVar('g2')\n\n const w = vec3(0.8)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w4 = w2.mul(w2).toVar('w4')\n const gdotx = vec3(g0.dot(x0), g1.dot(x1), g2.dot(x2)).toVar('gdotx')\n const n = w4.dot(gdotx).toVar('n')\n\n const w3 = w2.mul(w).toVar('w3')\n const dw = w3.mul(-8).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w4.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w4.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w4.z).add(x2.mul(dw.z)).toVar('dn2')\n const gradient = dn0.add(dn1).add(dn2).mul(10.9).toVar('gradient')\n\n return vec2(n.mul(10.9), gradient.length())\n}).setLayout({\n name: 'psrdnoise2D',\n type: 'vec2',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Basic psrdnoise 3D implementation\nexport const psrdnoise3D = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Vec3 => {\n const M = mat3(0, 1, 1, 1, 0, 1, 1, 1, 0).toVar('M')\n const Mi = mat3(-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5).toVar('Mi')\n\n const uvw = M.mul(x).toVar('uvw')\n const i0 = uvw.floor().toVar('i0')\n const f0 = uvw.fract().toVar('f0')\n\n const g_ = f0.yzz.step(f0.xyx).toVar('g_')\n const l_ = g_.oneMinus().toVar('l_')\n const g = vec3(l_.z, g_.xy).toVar('g')\n const l = vec3(l_.xy, g_.z).toVar('l')\n\n const o1 = g.min(l).toVar('o1')\n const o2 = g.max(l).toVar('o2')\n\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(o2).toVar('i2')\n const i3 = i0.add(vec3(1)).toVar('i3')\n\n let v0 = Mi.mul(i0).toVar('v0')\n let v1 = Mi.mul(i1).toVar('v1')\n let v2 = Mi.mul(i2).toVar('v2')\n let v3 = Mi.mul(i3).toVar('v3')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n const x3 = x.sub(v3).toVar('x3')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)).or(period.z.greaterThan(0)), () => {\n const vx = vec4(v0.x, v1.x, v2.x, v3.x).toVar('vx')\n const vy = vec4(v0.y, v1.y, v2.y, v3.y).toVar('vy')\n const vz = vec4(v0.z, v1.z, v2.z, v3.z).toVar('vz')\n\n If(period.x.greaterThan(0), () => vx.assign(vx.mod(period.x)))\n If(period.y.greaterThan(0), () => vy.assign(vy.mod(period.y)))\n If(period.z.greaterThan(0), () => vz.assign(vz.mod(period.z)))\n\n i0.assign(M.mul(vec3(vx.x, vy.x, vz.x)))\n i1.assign(M.mul(vec3(vx.y, vy.y, vz.y)))\n i2.assign(M.mul(vec3(vx.z, vy.z, vz.z)))\n i3.assign(M.mul(vec3(vx.w, vy.w, vz.w)))\n\n i0.assign(i0.add(0.5).floor())\n i1.assign(i1.add(0.5).floor())\n i2.assign(i2.add(0.5).floor())\n i3.assign(i3.add(0.5).floor())\n })\n\n const hash = permuteVec4(\n permuteVec4(permuteVec4(vec4(i0.z, i1.z, i2.z, i3.z)).add(vec4(i0.y, i1.y, i2.y, i3.y))).add(\n vec4(i0.x, i1.x, i2.x, i3.x)\n )\n ).toVar('hash')\n\n const theta = hash.mul(3.883222077).toVar('theta')\n const sz = hash.mul(-0.006920415).add(0.996539792).toVar('sz')\n const psi = hash.mul(0.108705628).toVar('psi')\n\n const Ct = theta.cos().toVar('Ct')\n const St = theta.sin().toVar('St')\n const sz_prime = sz.mul(sz).oneMinus().sqrt().toVar('sz_prime')\n\n const gx = Ct.mul(sz_prime).toVar('gx')\n const gy = St.mul(sz_prime).toVar('gy')\n const gz = sz.toVar('gz')\n\n If(alpha.notEqual(0), () => {\n const Sp = psi.sin().toVar('Sp')\n const Cp = psi.cos().toVar('Cp')\n const px = Ct.mul(sz_prime).toVar('px')\n const py = St.mul(sz_prime).toVar('py')\n const pz = sz.toVar('pz')\n\n const Ctp = St.mul(Sp).sub(Ct.mul(Cp)).toVar('Ctp')\n const qx = Ctp.mul(St).mix(Sp, sz).toVar('qx')\n const qy = Ctp.negate().mul(Ct).mix(Cp, sz).toVar('qy')\n const qz = py.mul(Cp).add(px.mul(Sp)).negate().toVar('qz')\n\n const Sa = vec4(alpha.sin()).toVar('Sa')\n const Ca = vec4(alpha.cos()).toVar('Ca')\n\n gx.assign(Ca.mul(px).add(Sa.mul(qx)))\n gy.assign(Ca.mul(py).add(Sa.mul(qy)))\n gz.assign(Ca.mul(pz).add(Sa.mul(qz)))\n })\n\n const g0 = vec3(gx.x, gy.x, gz.x).toVar('g0')\n const g1 = vec3(gx.y, gy.y, gz.y).toVar('g1')\n const g2 = vec3(gx.z, gy.z, gz.z).toVar('g2')\n const g3 = vec3(gx.w, gy.w, gz.w).toVar('g3')\n\n let w = vec4(0.5)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w3 = w2.mul(w).toVar('w3')\n const gdotx = vec4(g0.dot(x0), g1.dot(x1), g2.dot(x2), g3.dot(x3)).toVar('gdotx')\n const n = w3.dot(gdotx).toVar('n')\n\n const dw = w2.mul(-6).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w3.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w3.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w3.z).add(x2.mul(dw.z)).toVar('dn2')\n const dn3 = g3.mul(w3.w).add(x3.mul(dw.w)).toVar('dn3')\n const gradient = dn0.add(dn1).add(dn2).add(dn3).mul(39.5).toVar('gradient')\n\n return vec3(n.mul(39.5), gradient.xy)\n}).setLayout({\n name: 'psrdnoise3D',\n type: 'vec3',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Simplified overloads\nexport const psrdnoise = Fn(([x]: [Vec2]): Float => {\n return psrdnoise2D(x, vec2(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\n// Two-parameter overload for compatibility\nexport const psrdnoise2 = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise2',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoisePeriod = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoisePeriod',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoiseAlpha = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Float => {\n return psrdnoise2D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoiseAlpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\nexport const psrdnoise3 = Fn(([x]: [Vec3]): Float => {\n return psrdnoise3D(x, vec3(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise3',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const psrdnoise3Period = Fn(([x, period]: [Vec3, Vec3]): Float => {\n return psrdnoise3D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise3Period',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n ],\n})\n\nexport const psrdnoise3Alpha = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Float => {\n return psrdnoise3D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoise3Alpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float, If } from '../../node'\nimport { random2Vec2 } from './random'\nimport { TAU } from '../math/const'\n\nexport const voronoi = Fn(([uv, time]: [Vec2, Float]): Vec3 => {\n const i_uv = uv.floor().toVar('i_uv')\n const f_uv = uv.fract().toVar('f_uv')\n const rta = vec3(0, 0, 10).toVar('rta')\n\n // Unroll nested loop: for j=-1 to 1, for i=-1 to 1\n // j=-1, i=-1\n const neighbor_m1m1 = vec2(-1, -1).toVar('neighbor_m1m1')\n const point_m1m1 = random2Vec2(i_uv.add(neighbor_m1m1)).toVar('point_m1m1')\n point_m1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_m1m1.mul(TAU)).sin())))\n const diff_m1m1 = neighbor_m1m1.add(point_m1m1).sub(f_uv).toVar('diff_m1m1')\n const dist_m1m1 = diff_m1m1.length().toVar('dist_m1m1')\n If(dist_m1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_m1m1)\n rta.z.assign(dist_m1m1)\n })\n\n // j=-1, i=0\n const neighbor_0m1 = vec2(0, -1).toVar('neighbor_0m1')\n const point_0m1 = random2Vec2(i_uv.add(neighbor_0m1)).toVar('point_0m1')\n point_0m1.assign(float(0.5).add(float(0.5).mul(time.add(point_0m1.mul(TAU)).sin())))\n const diff_0m1 = neighbor_0m1.add(point_0m1).sub(f_uv).toVar('diff_0m1')\n const dist_0m1 = diff_0m1.length().toVar('dist_0m1')\n If(dist_0m1.lessThan(rta.z), () => {\n rta.xy.assign(point_0m1)\n rta.z.assign(dist_0m1)\n })\n\n // j=-1, i=1\n const neighbor_1m1 = vec2(1, -1).toVar('neighbor_1m1')\n const point_1m1 = random2Vec2(i_uv.add(neighbor_1m1)).toVar('point_1m1')\n point_1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_1m1.mul(TAU)).sin())))\n const diff_1m1 = neighbor_1m1.add(point_1m1).sub(f_uv).toVar('diff_1m1')\n const dist_1m1 = diff_1m1.length().toVar('dist_1m1')\n If(dist_1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_1m1)\n rta.z.assign(dist_1m1)\n })\n\n // j=0, i=-1\n const neighbor_m10 = vec2(-1, 0).toVar('neighbor_m10')\n const point_m10 = random2Vec2(i_uv.add(neighbor_m10)).toVar('point_m10')\n point_m10.assign(float(0.5).add(float(0.5).mul(time.add(point_m10.mul(TAU)).sin())))\n const diff_m10 = neighbor_m10.add(point_m10).sub(f_uv).toVar('diff_m10')\n const dist_m10 = diff_m10.length().toVar('dist_m10')\n If(dist_m10.lessThan(rta.z), () => {\n rta.xy.assign(point_m10)\n rta.z.assign(dist_m10)\n })\n\n // j=0, i=0\n const neighbor_00 = vec2(0, 0).toVar('neighbor_00')\n const point_00 = random2Vec2(i_uv.add(neighbor_00)).toVar('point_00')\n point_00.assign(float(0.5).add(float(0.5).mul(time.add(point_00.mul(TAU)).sin())))\n const diff_00 = neighbor_00.add(point_00).sub(f_uv).toVar('diff_00')\n const dist_00 = diff_00.length().toVar('dist_00')\n If(dist_00.lessThan(rta.z), () => {\n rta.xy.assign(point_00)\n rta.z.assign(dist_00)\n })\n\n // j=0, i=1\n const neighbor_10 = vec2(1, 0).toVar('neighbor_10')\n const point_10 = random2Vec2(i_uv.add(neighbor_10)).toVar('point_10')\n point_10.assign(float(0.5).add(float(0.5).mul(time.add(point_10.mul(TAU)).sin())))\n const diff_10 = neighbor_10.add(point_10).sub(f_uv).toVar('diff_10')\n const dist_10 = diff_10.length().toVar('dist_10')\n If(dist_10.lessThan(rta.z), () => {\n rta.xy.assign(point_10)\n rta.z.assign(dist_10)\n })\n\n // j=1, i=-1\n const neighbor_m11 = vec2(-1, 1).toVar('neighbor_m11')\n const point_m11 = random2Vec2(i_uv.add(neighbor_m11)).toVar('point_m11')\n point_m11.assign(float(0.5).add(float(0.5).mul(time.add(point_m11.mul(TAU)).sin())))\n const diff_m11 = neighbor_m11.add(point_m11).sub(f_uv).toVar('diff_m11')\n const dist_m11 = diff_m11.length().toVar('dist_m11')\n If(dist_m11.lessThan(rta.z), () => {\n rta.xy.assign(point_m11)\n rta.z.assign(dist_m11)\n })\n\n // j=1, i=0\n const neighbor_01 = vec2(0, 1).toVar('neighbor_01')\n const point_01 = random2Vec2(i_uv.add(neighbor_01)).toVar('point_01')\n point_01.assign(float(0.5).add(float(0.5).mul(time.add(point_01.mul(TAU)).sin())))\n const diff_01 = neighbor_01.add(point_01).sub(f_uv).toVar('diff_01')\n const dist_01 = diff_01.length().toVar('dist_01')\n If(dist_01.lessThan(rta.z), () => {\n rta.xy.assign(point_01)\n rta.z.assign(dist_01)\n })\n\n // j=1, i=1\n const neighbor_11 = vec2(1, 1).toVar('neighbor_11')\n const point_11 = random2Vec2(i_uv.add(neighbor_11)).toVar('point_11')\n point_11.assign(float(0.5).add(float(0.5).mul(time.add(point_11.mul(TAU)).sin())))\n const diff_11 = neighbor_11.add(point_11).sub(f_uv).toVar('diff_11')\n const dist_11 = diff_11.length().toVar('dist_11')\n If(dist_11.lessThan(rta.z), () => {\n rta.xy.assign(point_11)\n rta.z.assign(dist_11)\n })\n\n return rta\n}).setLayout({\n name: 'voronoi',\n type: 'vec3',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'time', type: 'float' },\n ],\n})\n\nexport const voronoiVec2 = Fn(([p]: [Vec2]): Vec3 => {\n return voronoi(p, float(0))\n}).setLayout({\n name: 'voronoiVec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const voronoiVec3 = Fn(([p]: [Vec3]): Vec3 => {\n return voronoi(p.xy, p.z)\n}).setLayout({\n name: 'voronoiVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, int, smoothstep, float, Loop } from '../../node'\nimport { random3Vec2, random3Vec3 } from './random'\n\nexport const voronoise = Fn(([p, u, v]: [Vec2, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec2(xOffset, yOffset).toVar('g')\n const o = random3Vec2(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o.xy).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoise',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n\nexport const voronoiseVec3 = Fn(([p, u, v]: [Vec3, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: zLoop }) => {\n const zOffset = zLoop.sub(int(2)).toFloat().toVar('zOffset')\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec3(xOffset, yOffset, zOffset).toVar('g')\n const o = random3Vec3(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o).add(0.5).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoiseVec3',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, mat2 } from '../../node'\nimport { randomVec2 } from './random'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const wavelet = Fn(([p, phase, k]: [Vec2, Float, Float]): Float => {\n const d = float(0).toVar('d')\n const s = float(1).toVar('s')\n const m = float(0).toVar('m')\n\n Loop(int(4), ({ i }) => {\n const q = p.mul(s).toVar('q')\n const a = randomVec2(q.floor()).mul(1000).toVar('a')\n\n q.assign(q.fract().sub(0.5).mul(rotate2d(a)))\n\n d.addAssign(\n q.x\n .mul(10)\n .add(phase)\n .sin()\n .mul(float(0.25).smoothstep(0, q.dot(q)))\n .div(s)\n )\n\n p.assign(p.mul(mat2(0.54, -0.84, 0.84, 0.54)).add(i.toFloat()))\n m.addAssign(float(1).div(s))\n s.mulAssign(k)\n })\n\n return d.div(m)\n}).setLayout({\n name: 'wavelet',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3K = Fn(([p, k]: [Vec3, Float]): Float => {\n return wavelet(p.xy, p.z, k)\n}).setLayout({\n name: 'waveletVec3K',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3 = Fn(([p]: [Vec3]): Float => {\n return waveletVec3K(p, float(1.24))\n}).setLayout({\n name: 'waveletVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const waveletVec2Phase = Fn(([p, phase]: [Vec2, Float]): Float => {\n return wavelet(p, phase, float(1.24))\n}).setLayout({\n name: 'waveletVec2Phase',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const waveletVec2 = Fn(([p]: [Vec2]): Float => {\n return wavelet(p, float(0), float(1.24))\n}).setLayout({\n name: 'waveletVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n","import { Fn, Float, Mat2, mat2 } from '../../node'\n\nexport const rotate2d = Fn(([r]: [Float]): Mat2 => {\n const c = r.cos()\n const s = r.sin()\n return mat2(c, s, s.negate(), c)\n}).setLayout({\n name: 'rotate2d',\n type: 'mat2',\n inputs: [\n {\n name: 'r',\n type: 'float',\n },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, vec2, vec3, If } from '../../node'\nimport { random2Vec2, random3Vec3 } from './random'\nimport { distEuclidean } from '../math/dist'\n\nexport const worley2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec2(0).toVar('off1')\n const pos1 = vec2(0).toVar('pos1')\n const off2 = vec2(0).toVar('off2')\n const pos2 = vec2(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n const g = vec2(i.toFloat().sub(1), j.toFloat().sub(1)).toVar('g')\n const o = random2Vec2(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worleyVec2 = Fn(([p]: [Vec2]): Float => {\n return float(1).sub(worley2Vec2(p).x)\n}).setLayout({\n name: 'worleyVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worley2Vec3 = Fn(([p]: [Vec3]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec3(0).toVar('off1')\n const pos1 = vec3(0).toVar('pos1')\n const off2 = vec3(0).toVar('off2')\n const pos2 = vec3(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n Loop(int(3), ({ i: k }) => {\n const g = vec3(i.toFloat().sub(1), j.toFloat().sub(1), k.toFloat().sub(1)).toVar('g')\n const o = random3Vec3(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const worleyVec3 = Fn(([p]: [Vec3]): Float => {\n return float(1).sub(worley2Vec3(p).x)\n}).setLayout({\n name: 'worleyVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, abs, distance, max, pow } from '../../node'\n\nconst DIST_MINKOWSKI_P = 2.0\n\nexport const distEuclidean = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distance(a, b)\n}).setLayout({\n name: 'distEuclidean',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n\nexport const distManhattan = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return abs(a.x.sub(b.x)).add(abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distManhattan3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distManhattan4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n .add(abs(a.w.sub(b.w)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distChebychev = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return max(abs(a.x.sub(b.x)), abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distChebychev3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), abs(a.z.sub(b.z))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distChebychev4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), max(abs(a.z.sub(b.z)), abs(a.w.sub(b.w)))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distMinkowski = Fn(([a, b]: [Vec2, Vec2]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(pow(abs(a.x.sub(b.x)), p).add(pow(abs(a.y.sub(b.y)), p)), 1 / p)\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distMinkowski3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distMinkowski4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p))\n .add(pow(abs(a.w.sub(b.w)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const dist = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distEuclidean(a, b)\n}).setLayout({\n name: 'dist',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, X, dFdx, dFdy, fract, float, select } from '../../node'\nimport { mapRange } from './map'\n\nexport const aafloor = Fn(([x]: [X]): X => {\n const afwidth = dFdx(x).pow(2).add(dFdy(x).pow(2)).sqrt().mul(2).toVar()\n const fx = fract(x).toVar()\n const idx = afwidth.oneMinus().toVar()\n return select(x.sub(fx), mapRange(fx, idx, float(1), x.sub(fx), x), fx.lessThan(idx))\n}).setLayout({\n name: 'aafloor',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const map = Fn(([v, iMin, iMax]: [X, X, X]): X => {\n return v.sub(iMin).div(iMax.sub(iMin))\n}).setLayout({\n name: 'map',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n ],\n})\n\nexport const mapRange = Fn(([v, iMin, iMax, oMin, oMax]: [X, X, X, X, X]): X => {\n return oMin.add(oMax.sub(oMin).mul(v.sub(iMin).div(iMax.sub(iMin))))\n}).setLayout({\n name: 'mapRange',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n { name: 'oMin', type: 'auto' },\n { name: 'oMax', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec2, X, dFdx, dFdy, fract, length, mix, smoothstep, vec2, select, float } from '../../node'\n\nconst nyquist = Fn(([x, width]: [Float, Float]): Float => {\n const cutoffStart = float(0.25).toVar('cutoffStart') // NYQUIST_FILTER_CENTER - NYQUIST_FILTER_WIDTH\n const cutoffEnd = float(0.75).toVar('cutoffEnd') // NYQUIST_FILTER_CENTER + NYQUIST_FILTER_WIDTH\n const f = smoothstep(cutoffEnd, cutoffStart, width).toVar('f')\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'width', type: 'float' },\n ],\n})\n\nexport const aafract = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n .mul(2)\n .toVar('afwidth')\n const fx = fract(x).toVar('fx')\n const idx = afwidth.oneMinus().toVar('idx')\n const v = select(fx.div(idx as any), fx.oneMinus().div(afwidth as any), fx.lessThan(idx as any)).toVar('v')\n return nyquist(v as any, afwidth as any)\n}).setLayout({\n name: 'aafract',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n\n// Vector overloads\nexport const aafractVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(aafract(v.x), aafract(v.y))\n}).setLayout({\n name: 'aafractVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, X, dFdx, dFdy, length, vec2, floor, abs } from '../../node'\nimport { nyquist } from './nyquist'\n\nexport const aamirror = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n const v = abs(x.sub(floor(x.add(0.5)))).mul(2)\n return nyquist(v, afwidth)\n}).setLayout({\n name: 'aamirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, X, mix, smoothstep, float } from '../../node'\n\nexport const nyquist = Fn(([x, width]: [X, Float]): X => {\n const cutoffStart = 0.25\n const cutoffEnd = 0.75\n const f = smoothstep(cutoffEnd, cutoffStart, width)\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'width', type: 'float' },\n ],\n})\n","import { Fn, X, select } from '../../node'\n\nexport const absi = Fn(([x]: [X]): X => {\n return select(x.mul(-1), x, x.lessThan(0))\n}).setLayout({\n name: 'absi',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, step } from '../../node'\n\nexport const adaptiveThreshold = Fn(([v, blur_v, b]: [Float, Float, Float]): Float => {\n return step(blur_v.add(b), v)\n}).setLayout({\n name: 'adaptiveThreshold',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n\nexport const adaptiveThresholdSimple = Fn(([v, blur_v]: [Float, Float]): Float => {\n return step(blur_v.sub(0.05), v)\n}).setLayout({\n name: 'adaptiveThresholdSimple',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\nexport const bump = Fn(([x, k]: [X, X]): X => {\n return x.mul(x).sub(1).negate().sub(k).saturate()\n}).setLayout({\n name: 'bump',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n\nexport const bumpSimple = Fn(([x]: [X]): X => {\n return x.mul(x).sub(1).negate().max(0)\n}).setLayout({\n name: 'bumpSimple',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { X, Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\nimport { cubic, cubicVec2, cubicVec3, cubicVec4 } from './cubic'\n\nexport const cubicMix = Fn(([a, b, t]: [Float, Float, Float]): X => {\n return a.add(b.sub(a).mul(cubic(t)))\n}).setLayout({\n name: 'cubicMix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec2 = Fn(([a, b, t]: [Vec2, Vec2, Vec2]): X => {\n return a.add(b.sub(a).mul(cubicVec2(t)))\n}).setLayout({\n name: 'cubicMixVec2',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\nexport const cubicMixVec3 = Fn(([a, b, t]: [Vec3, Vec3, Vec3]): X => {\n return a.add(b.sub(a).mul(cubicVec3(t)))\n}).setLayout({\n name: 'cubicMixVec3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec4 = Fn(([a, b, t]: [Vec4, Vec4, Vec4]): X => {\n return a.add(b.sub(a).mul(cubicVec4(t)))\n}).setLayout({\n name: 'cubicMixVec4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n","import { X, Fn } from '../../node'\n\nexport const decimate = Fn(([v, p]: [X, X]): X => {\n return v.mul(p).floor().div(p)\n}).setLayout({\n name: 'decimate',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'p', type: 'auto' },\n ],\n})","import { Fn, Float, cos, fwidth, smoothstep } from '../../node'\nimport { TWO_PI } from './const'\n\nexport const fcos = Fn(([x]: [Float]): Float => {\n const w = fwidth(x)\n return cos(x).mul(smoothstep(TWO_PI, 0, w))\n}).setLayout({\n name: 'fcos',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const frac = Fn(([x]: [X]): X => {\n return x.fract()\n}).setLayout({\n name: 'frac',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, float, select } from '../../node'\n\nexport const gain = Fn(([x, k]: [X, X]): X => {\n const conditionValue = select(x.oneMinus(), x, x.lessThan(0.5))\n const a = float(0.5).mul(float(2).mul(conditionValue).pow(k)).toVar('a')\n return select(a.oneMinus(), a, x.lessThan(0.5))\n}).setLayout({\n name: 'gain',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n","import { Fn, X, dot } from '../../node'\n\nexport const gaussian = Fn(([d, s]: [X<'vec2' | 'vec3' | 'vec4' | 'ivec2' | 'ivec3' | 'ivec4'>, X]): X => {\n const dotProduct = dot(d, d)\n const variance = s.mul(s).mul(2)\n return dotProduct.negate().div(variance).exp()\n}).setLayout({\n name: 'gaussian',\n type: 'float',\n inputs: [\n { name: 'd', type: 'auto' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { PI } from './const'\nimport { Fn, Int, Vec2, Vec3, float, vec2, vec3, uint } from '../../node'\n\nexport const hammersley = Fn(([index, numSamples]: [Int, Int]): Vec2 => {\n const tof = float(0.5).div(float(2147483648)).toVar('tof')\n const bits = uint(index).toVar('bits')\n\n bits.assign(bits.shiftLeft(uint(16)).bitOr(bits.shiftRight(uint(16))))\n bits.assign(\n bits\n .bitAnd(uint(0x55555555))\n .shiftLeft(uint(1))\n .bitOr(bits.bitAnd(uint(0xaaaaaaaa)).shiftRight(uint(1)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x33333333))\n .shiftLeft(uint(2))\n .bitOr(bits.bitAnd(uint(0xcccccccc)).shiftRight(uint(2)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x0f0f0f0f))\n .shiftLeft(uint(4))\n .bitOr(bits.bitAnd(uint(0xf0f0f0f0)).shiftRight(uint(4)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x00ff00ff))\n .shiftLeft(uint(8))\n .bitOr(bits.bitAnd(uint(0xff00ff00)).shiftRight(uint(8)))\n )\n\n return vec2(float(index).div(float(numSamples)), float(bits).mul(tof))\n}).setLayout({\n name: 'hammersley',\n type: 'vec2',\n inputs: [\n { name: 'index', type: 'int' },\n { name: 'numSamples', type: 'int' },\n ],\n})\n\nexport const hemisphereCosSample = Fn(([u]: [Vec2]): Vec3 => {\n const phi = float(2).mul(PI).mul(u.x).toVar('phi')\n const cosTheta2 = float(1).sub(u.y).toVar('cosTheta2')\n const cosTheta = cosTheta2.sqrt().toVar('cosTheta')\n const sinTheta = float(1).sub(cosTheta2).sqrt().toVar('sinTheta')\n return vec3(phi.cos().mul(sinTheta), phi.sin().mul(sinTheta), cosTheta)\n}).setLayout({\n name: 'hemisphereCosSample',\n type: 'vec3',\n inputs: [{ name: 'u', type: 'vec2' }],\n})\n","import { Fn, Float, max, float } from '../../node'\n\nexport const highPass = Fn(([v, b]: [Float, Float]): Float => {\n return max(v.sub(b), 0).div(float(1).sub(b))\n}).setLayout({\n name: 'highPass',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n","import { Fn, all } from '../../node'\nimport type { Bool, Float, Vec2, Vec3, Vec4, X } from '../../node/types'\n\nexport const inside = Fn(([x, min, max]: [X, X, X]): Bool => {\n return all(x.greaterThanEqual(min).and(x.lessThanEqual(max)))\n}).setLayout({\n name: 'inside',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'min', type: 'auto' },\n { name: 'max', type: 'auto' },\n ],\n})\n\nexport const insideFloat = Fn(([x, min, max]: [Float, Float, Float]): Bool => {\n return x.greaterThanEqual(min).and(x.lessThanEqual(max))\n}).setLayout({\n name: 'insideFloat',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'min', type: 'float' },\n { name: 'max', type: 'float' },\n ],\n})\n\nexport const insideVec2 = Fn(([v, min, max]: [Vec2, Vec2, Vec2]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n}).setLayout({\n name: 'insideVec2',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'min', type: 'vec2' },\n { name: 'max', type: 'vec2' },\n ],\n})\n\nexport const insideVec3 = Fn(([v, min, max]: [Vec3, Vec3, Vec3]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n .and(v.z.greaterThanEqual(min.z).and(v.z.lessThanEqual(max.z)))\n}).setLayout({\n name: 'insideVec3',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'min', type: 'vec3' },\n { name: 'max', type: 'vec3' },\n ],\n})\n\nexport const insideAABB = Fn(([v, aabb]: [Vec2, Vec4]): Bool => {\n return insideVec2(v, aabb.xy, aabb.zw)\n}).setLayout({\n name: 'insideAABB',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'aabb', type: 'vec4' },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const invCubic = Fn(([v]: [X]): X => {\n return float(0.5).sub(float(1).sub(float(2).mul(v)).asin().div(3).sin())\n}).setLayout({\n name: 'invCubic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const invQuartic = Fn(([v]: [X]): X => {\n return v.oneMinus().sqrt().oneMinus().sqrt()\n}).setLayout({\n name: 'invQuartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const inverse = Fn(([m]: [X]): X => {\n return float(1).div(m)\n}).setLayout({\n name: 'reciprocal',\n type: 'auto',\n inputs: [{ name: 'm', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const mirror = Fn(([x]: [X]): X => {\n const f = x.fract()\n const m = x.mod(2).floor()\n const fm = f.mul(m)\n return f.add(m).sub(fm.mul(2))\n}).setLayout({\n name: 'mirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, max } from '../../node'\n\nexport const mmax2 = Fn(([v]: [Vec2]): Float => {\n return max(v.x, v.y)\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmax3 = Fn(([v]: [Vec3]): Float => {\n return max(v.x, max(v.y, v.z))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmax4 = Fn(([v]: [Vec4]): Float => {\n return max(max(v.x, v.y), max(v.z, v.w))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const mmax = mmax4\n","import { Fn, X, mix, max, step, clamp } from '../../node'\n\n// Basic mmix function - wrapper around standard mix\nexport const mmix = Fn(([a, b, c]: [X, X, X]): X => {\n return mix(a, b, c)\n}).setLayout({\n name: 'mmix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n ],\n})\n\n// Three-value interpolation with percentage control\nexport const mmix3 = Fn(([a, b, c, pct]: [X, X, X, X]): X => {\n return mix(mix(a, b, pct.mul(2)), mix(b, c, max(pct, 0.5).sub(0.5).mul(2)), step(0.5, pct))\n}).setLayout({\n name: 'mmix3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n\n// Four-value interpolation with percentage control\nexport const mmix4 = Fn(([a, b, c, d, pct]: [X, X, X, X, X]): X => {\n return mix(\n mix(a, b, pct.mul(3)),\n mix(b, mix(c, d, max(pct, 0.66).sub(0.66).mul(3)), clamp(pct, 0.33, 0.66).sub(0.33).mul(3)),\n step(0.33, pct)\n )\n}).setLayout({\n name: 'mmix4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n","import { Fn, Vec2, X, vec4 } from '../../node'\n\n// 2D modulo function that returns both cell coordinates and wrapped position\n// Returns vec4(cellX, cellY, wrappedX, wrappedY)\nexport const mod2 = Fn(([p, s]: [Vec2, X]): X => {\n const halfS = s.div(2).toVar()\n const pShifted = p.add(halfS).toVar()\n const c = pShifted.div(s).floor().toVar()\n const wrapped = pShifted.mod(s).sub(halfS)\n return vec4(c.x, c.y, wrapped.x, wrapped.y)\n}).setLayout({\n name: 'mod2',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract cell coordinates from mod2 result\nexport const mod2Cell = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.xy\n}).setLayout({\n name: 'mod2Cell',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract wrapped position from mod2 result\nexport const mod2Wrap = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.zw\n}).setLayout({\n name: 'mod2Wrap',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { Fn, Int } from '../../node'\n\nexport const modi = Fn(([x, y]: [Int, Int]): Int => {\n const xf = x.toFloat()\n const yf = y.toFloat()\n const quotient = xf.div(yf).floor()\n return x.sub(quotient.mul(yf).toInt())\n}).setLayout({\n name: 'modi',\n type: 'int',\n inputs: [\n { name: 'x', type: 'int' },\n { name: 'y', type: 'int' },\n ],\n})\n","import { Fn, Float, Vec4, fract, vec3, vec4, float } from '../../node'\n\nconst PackUpscale = float(256.0 / 255.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst ShiftRight8 = float(1 / 256)\n\nexport const pack = Fn(([v]: [Float]): Vec4 => {\n const r = vec4(fract(v.mul(PackFactors)), v).toVar()\n r.yzw.assign(r.yzw.sub(r.xyz.mul(ShiftRight8)))\n return r.mul(PackUpscale)\n}).setLayout({\n name: 'pack',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'float' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const parabola = Fn(([x, k]: [Float, Float]): Float => {\n return x.mul(4).mul(x.oneMinus()).pow(k)\n}).setLayout({\n name: 'parabola',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\n// Square function - computes x^2 with quadratic energy amplification\nexport const pow2 = Fn(([v]: [X]): X => {\n return v.mul(v)\n}).setLayout({\n name: 'pow2',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow3 = Fn(([x]: [X]): X => {\n return x.mul(x).mul(x)\n}).setLayout({\n name: 'pow3',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow5 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n return v2.mul(v2).mul(x)\n}).setLayout({\n name: 'pow5',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow7 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n const v4 = v2.mul(v2).toVar('v4')\n const v6 = v4.mul(v2).toVar('v6')\n return v6.mul(x)\n}).setLayout({\n name: 'pow7',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, Float, float } from '../../node'\n\nexport const powFast = Fn(([a, b]: [X, X]): X => {\n return a.div((float(1) as any).sub(b).mul(a).add(b))\n}).setLayout({\n name: 'powFast',\n type: 'auto',\n inputs: [\n {\n name: 'a',\n type: 'auto'\n },\n {\n name: 'b', \n type: 'auto'\n }\n ]\n})","import { Fn, Vec4, Mat3, mat3, vec3, float } from '../../../node'\n\nexport const quat2mat3 = Fn(([q]: [Vec4]): Mat3 => {\n const qxx = q.x.mul(q.x).toVar('qxx')\n const qyy = q.y.mul(q.y).toVar('qyy')\n const qzz = q.z.mul(q.z).toVar('qzz')\n const qxz = q.x.mul(q.z).toVar('qxz')\n const qxy = q.x.mul(q.y).toVar('qxy')\n const qyw = q.y.mul(q.w).toVar('qyw')\n const qzw = q.z.mul(q.w).toVar('qzw')\n const qyz = q.y.mul(q.z).toVar('qyz')\n const qxw = q.x.mul(q.w).toVar('qxw')\n\n return mat3(\n vec3(float(1).sub(float(2).mul(qyy.add(qzz))), float(2).mul(qxy.sub(qzw)), float(2).mul(qxz.add(qyw))),\n vec3(float(2).mul(qxy.add(qzw)), float(1).sub(float(2).mul(qxx.add(qzz))), float(2).mul(qyz.sub(qxw))),\n vec3(float(2).mul(qxz.sub(qyw)), float(2).mul(qyz.add(qxw)), float(1).sub(float(2).mul(qxx.add(qyy))))\n )\n}).setLayout({\n name: 'quat2mat3',\n type: 'mat3',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Mat4 } from '../../../node'\nimport { quat2mat3 } from './quat2mat3'\nimport { toMat4 } from '../toMat4'\n\nexport const quat2mat4 = Fn(([q]: [Vec4]): Mat4 => {\n return toMat4(quat2mat3(q))\n}).setLayout({\n name: 'quat2mat4',\n type: 'mat4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Mat3, Mat4, mat4, vec4 } from '../../node'\n\nexport const toMat4 = Fn(([m]: [Mat3]): Mat4 => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'toMat4',\n type: 'mat4',\n inputs: [\n {\n name: 'm',\n type: 'mat3',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatAdd = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.add(b.xyz), a.w.add(b.w))\n}).setLayout({\n name: 'quatAdd',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatConj = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w)\n}).setLayout({\n name: 'quatConj',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatDiv = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.div(s), q.w.div(s))\n}).setLayout({\n name: 'quatDiv',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatIdentity = Fn(([]): Vec4 => {\n return vec4(0, 0, 0, 1)\n}).setLayout({\n name: 'quatIdentity',\n type: 'vec4',\n inputs: [],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatConj } from './quatConj'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatInverse = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(quatConj(q), quatLengthSq(q))\n}).setLayout({\n name: 'quatInverse',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\n\nexport const quatLengthSq = Fn(([q]: [Vec4]): Float => {\n return q.xyz.dot(q.xyz).add(q.w.mul(q.w))\n}).setLayout({\n name: 'quatLengthSq',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatLength = Fn(([q]: [Vec4]): Float => {\n return quatLengthSq(q).sqrt()\n}).setLayout({\n name: 'quatLength',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4, If, Return, float } from '../../../node'\n\nexport const quatLerp = Fn(([qa, qb, t]: [Vec4, Vec4, Float]): Vec4 => {\n const cosHalfTheta = qa.w.mul(qb.w).add(qa.xyz.dot(qb.xyz)).toVar('cosHalfTheta')\n const adjustedQb = qb.negate().select(qb, cosHalfTheta.lessThan(0)).toVar('adjustedQb')\n const absCosHalfTheta = cosHalfTheta.abs().toVar('absCosHalfTheta')\n\n If(absCosHalfTheta.greaterThanEqual(1), () => {\n Return(qa)\n })\n\n const halfTheta = absCosHalfTheta.acos().toVar('halfTheta')\n const sinHalfTheta = float(1).sub(absCosHalfTheta.mul(absCosHalfTheta)).sqrt().toVar('sinHalfTheta')\n\n If(sinHalfTheta.abs().lessThan(0.001), () => {\n Return(qa.div(2).add(adjustedQb.div(2)).normalize())\n })\n\n const ratioA = float(1).sub(t).mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioA')\n const ratioB = t.mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioB')\n\n return qa.mul(ratioA).add(adjustedQb.mul(ratioB)).normalize()\n}).setLayout({\n name: 'quatLerp',\n type: 'vec4',\n inputs: [\n {\n name: 'qa',\n type: 'vec4',\n },\n {\n name: 'qb',\n type: 'vec4',\n },\n {\n name: 't',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatMul = Fn(([q1, q2]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n q2.xyz.mul(q1.w).add(q1.xyz.mul(q2.w)).add(q1.xyz.cross(q2.xyz)),\n q1.w.mul(q2.w).sub(q1.xyz.dot(q2.xyz))\n )\n}).setLayout({\n name: 'quatMul',\n type: 'vec4',\n inputs: [\n {\n name: 'q1',\n type: 'vec4',\n },\n {\n name: 'q2',\n type: 'vec4',\n },\n ],\n})\n\nexport const quatMulScalar = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.mul(s), q.w.mul(s))\n}).setLayout({\n name: 'quatMulScalar',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatNeg = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w.negate())\n}).setLayout({\n name: 'quatNeg',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatLength } from './quatLength'\n\nexport const quatNorm = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(q, quatLength(q))\n}).setLayout({\n name: 'quatNorm',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatSub = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.sub(b.xyz), a.w.sub(b.w))\n}).setLayout({\n name: 'quatSub',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const quartic = Fn(([v]: [X]): X => {\n\tconst v2 = v.mul(v).toVar('v2')\n\treturn v2.mul((float(2) as any).sub(v2))\n}).setLayout({\n\tname: 'quartic',\n\ttype: 'auto',\n\tinputs: [\n\t\t{\n\t\t\tname: 'v',\n\t\t\ttype: 'auto'\n\t\t}\n\t]\n})","import { Fn, Float, Mat3, Vec3, float, mat3, vec3 } from '../../node'\n\nexport const rotate3d = Fn(([a, r]: [Vec3, Float]): Mat3 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec3(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s))\n )\n const col2 = vec3(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s))\n )\n const col3 = vec3(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c)\n )\n return mat3(col1, col2, col3)\n}).setLayout({\n name: 'rotate3d',\n type: 'mat3',\n inputs: [\n {\n name: 'a',\n type: 'vec3'\n },\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dX = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(1, 0, 0),\n vec3(0, c, s),\n vec3(0, s.negate(), c)\n )\n}).setLayout({\n name: 'rotate3dX',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dY = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(c, 0, s.negate()),\n vec3(0, 1, 0),\n vec3(s, 0, c)\n )\n}).setLayout({\n name: 'rotate3dY',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dZ = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(c, s, 0),\n vec3(s.negate(), c, 0),\n vec3(0, 0, 1)\n )\n}).setLayout({\n name: 'rotate3dZ',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, Vec3, float, mat4, vec4 } from '../../node'\n\nexport const rotate4d = Fn(([a, r]: [Vec3, Float]): Mat4 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec4(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s)),\n 0\n )\n const col2 = vec4(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s)),\n 0\n )\n const col3 = vec4(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c),\n 0\n )\n const col4 = vec4(0, 0, 0, 1)\n return mat4(col1, col2, col3, col4)\n}).setLayout({\n name: 'rotate4d',\n type: 'mat4',\n inputs: [\n {\n name: 'a',\n type: 'vec3'\n },\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dX = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(\n vec4(1, 0, 0, 0),\n vec4(0, c, s, 0),\n vec4(0, s.negate(), c, 0),\n vec4(0, 0, 0, 1)\n )\n}).setLayout({\n name: 'rotate4dX',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dY = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, 0, s.negate(), 0), vec4(0, 1, 0, 0), vec4(s, 0, c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dY',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float',\n },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dZ = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(\n vec4(c, s, 0, 0),\n vec4(s.negate(), c, 0, 0),\n vec4(0, 0, 1, 0),\n vec4(0, 0, 0, 1)\n )\n}).setLayout({\n name: 'rotate4dZ',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, X, float } from '../../node'\n\nconst MEDIUMP_FLT_MAX = float(65504.0)\n\nexport const saturateMediump = Fn(([x]: [X]): X => {\n\treturn x.min(MEDIUMP_FLT_MAX)\n}).setLayout({\n\tname: 'saturateMediump',\n\ttype: 'auto',\n\tinputs: [{ name: 'x', type: 'auto' }],\n})","import { Fn, Float, Vec2, mat2, Mat2 } from '../../node'\n\nexport const scale2d = Fn(([s]: [Float]): Mat2 => {\n return mat2(s, 0, 0, s)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 's',\n type: 'float',\n },\n ]\n})\n\nexport const scale2dVec = Fn(([s]: [Vec2]): Mat2 => {\n return mat2(s.x, 0, 0, s.y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 's',\n type: 'vec2',\n },\n ]\n})\n\nexport const scale2dXY = Fn(([x, y]: [Float, Float]): Mat2 => {\n return mat2(x, 0, 0, y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 'x',\n type: 'float',\n },\n {\n name: 'y', \n type: 'float',\n },\n ]\n})","import { Fn, Float, Vec3, Mat3, mat3 } from '../../node'\n\nexport const scale3d = Fn(([s]: [Float]): Mat3 => {\n return mat3(s, 0, 0, 0, s, 0, 0, 0, s)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale3dVec = Fn(([s]: [Vec3]): Mat3 => {\n return mat3(s.x, 0, 0, 0, s.y, 0, 0, 0, s.z)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n","import { Fn, Float, Vec3, Vec4, Mat4, mat4 } from '../../node'\n\nexport const scale4d = Fn(([s]: [Float]): Mat4 => {\n return mat4(s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale4dXYZ = Fn(([x, y, z]: [Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' }\n ]\n})\n\nexport const scale4dXYZW = Fn(([x, y, z, w]: [Float, Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' },\n { name: 'w', type: 'float' }\n ]\n})\n\nexport const scale4dVec3 = Fn(([s]: [Vec3]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n\nexport const scale4dVec4 = Fn(([s]: [Vec4]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, s.w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec4' }]\n})","import { Fn, X } from '../../node'\nimport { quintic } from './quintic'\n\nexport const smootherstep = Fn(([a, b, v]: [X, X, X]): X => {\n\tconst normalized = v.sub(a).div(b.sub(a)).toVar('normalized')\n\tconst saturated = normalized.saturate().toVar('saturated')\n\treturn quintic(saturated)\n}).setLayout({\n\tname: 'smootherstep',\n\ttype: 'auto',\n\tinputs: [\n\t\t{ name: 'a', type: 'auto' },\n\t\t{ name: 'b', type: 'auto' },\n\t\t{ name: 'v', type: 'auto' }\n\t]\n})","import { Fn, Mat3, Mat4, mat3 } from '../../node'\n\nexport const toMat3 = Fn(([m]: [Mat4]): Mat3 => {\n return mat3(m[0].xyz, m[1].xyz, m[2].xyz)\n}).setLayout({\n name: 'toMat3',\n type: 'mat3',\n inputs: [\n {\n name: 'm',\n type: 'mat4',\n },\n ],\n})\n","import { Fn, Float, Mat4, Vec3, X, mat4 } from '../../node'\n\nexport const translate4d = Fn(([x, y, z]: [X, X?, X?]): Mat4 => {\n if (y === undefined && z === undefined) {\n const t = x as Vec3\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n t.x, t.y, t.z, 1\n )\n } else {\n const tx = x as Float\n const ty = y as Float\n const tz = z as Float\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n tx, ty, tz, 1\n )\n }\n}).setLayout({\n name: 'translate4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'y', type: 'auto' },\n { name: 'z', type: 'auto' }\n ]\n})","import { Fn, Float, Vec3, Vec4, dot, vec3, vec4, float } from '../../node'\n\nconst UnpackDownscale = float(255.0 / 256.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst UnpackFactors = UnpackDownscale.div(vec4(PackFactors, 1.0))\n\nexport const unpack8 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(8, 8 * 8, 8 * 8 * 8)\n return dot(v, f).div(512.0)\n}).setLayout({\n name: 'unpack8',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack16 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(16, 16 * 16, 16 * 16 * 16)\n return dot(v, f).div(4096.0)\n}).setLayout({\n name: 'unpack16',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack32 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(32, 32 * 32, 32 * 32 * 32)\n return dot(v, f).div(32768.0)\n}).setLayout({\n name: 'unpack32',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack64 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(64, 64 * 64, 64 * 64 * 64)\n return dot(v, f).div(262144.0)\n}).setLayout({\n name: 'unpack64',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack128 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(128, 128 * 128, 128 * 128 * 128)\n return dot(v, f).div(2097152.0)\n}).setLayout({\n name: 'unpack128',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack256 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(256, 256 * 256, 256 * 256 * 256)\n return dot(v, f).div(16581375.0)\n}).setLayout({\n name: 'unpack256',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpackBase = Fn(([v, base]: [Vec3, Float]): Float => {\n const base3 = base.mul(base).mul(base)\n const f = vec3(base, base.mul(base), base3)\n return dot(v, f).div(base3)\n}).setLayout({\n name: 'unpackBase',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'base', type: 'float' },\n ],\n})\n\nexport const unpack = Fn(([v]: [Vec4]): Float => {\n return dot(v, UnpackFactors)\n}).setLayout({\n name: 'unpack',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const unpackDefault = Fn(([v]: [Vec3]): Float => {\n return unpack256(v)\n}).setLayout({\n name: 'unpackDefault',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const sphereSDF = Fn(([p]: [Vec3]) => {\n return p.length()\n}).setLayout({\n name: 'sphereSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const sphereSDFRadius = Fn(([p, s]: [Vec3, Float]) => {\n return p.length().sub(s)\n}).setLayout({\n name: 'sphereSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3 } from '../../node'\n\nexport const boxSDF = Fn(([p]: [Vec3]) => {\n const d = p.abs().toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' }\n ]\n})\n\nexport const boxSDFSize = Fn(([p, b]: [Vec3, Vec3]) => {\n const d = p.abs().sub(b).toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDFSize',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' }\n ]\n})","import { Fn, Vec2 } from '../../node'\n\nexport const aspect = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n const result = st.toVar('result')\n result.x.assign(result.x.mul(s.x.div(s.y)))\n return result\n}).setLayout({\n name: 'aspect',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' }\n ]\n})","import { Fn, Vec2, Float, mat2, atan2, cos, sin, mod, vec2, float } from '../../node'\n\nconst PI = float(3.1415926535897932384626433832795)\nconst TWO_PI = float(6.283185307179586476925286766559)\nconst BRACKETING_ANGLE_DELTA = PI.div(20.0)\n\nexport const bracketingAxis0 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n return vec2(cos(angle0), sin(angle0))\n}).setLayout({\n name: 'bracketingAxis0',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingAxis1 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n const vAxis0 = vec2(cos(angle0), sin(angle0))\n const RotateByAngleDelta = mat2(\n cos(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA).negate(),\n cos(BRACKETING_ANGLE_DELTA)\n )\n return RotateByAngleDelta.mul(vAxis0)\n}).setLayout({\n name: 'bracketingAxis1',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingBlend = Fn(([dir]: [Vec2]): Float => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n return fractional.div(BRACKETING_ANGLE_DELTA)\n}).setLayout({\n name: 'bracketingBlend',\n type: 'float',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, floor, fract } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const brickTile = Fn(([t]: [Vec4]): Vec4 => {\n const result = t.toVar('result')\n result.x.assign(result.x.add(mod(result.w, 2).mul(0.5)))\n result.z.assign(floor(result.z.add(result.x)))\n result.x.assign(fract(result.x))\n return result\n}).setLayout({\n name: 'brickTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const brickTileVec2 = Fn(([st]: [Vec2]): Vec4 => {\n return brickTile(sqTile(st))\n}).setLayout({\n name: 'brickTileVec2',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const brickTileFloat = Fn(([st, s]: [Vec2, Float]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const brickTileVec2Scale = Fn(([st, s]: [Vec2, Vec2]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4, fract, floor } from '../../node'\n\nexport const sqTile = Fn(([st]: [Vec2]): Vec4 => {\n return vec4(fract(st), floor(st))\n}).setLayout({\n name: 'sqTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const sqTileScale = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return sqTile(st.mul(scale))\n}).setLayout({\n name: 'sqTileScale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, atan2, length, acos, vec2, vec3 } from '../../node'\n\nexport const cart2polar = Fn(([st]: [Vec2]): Vec2 => {\n return vec2(atan2(st.y, st.x), length(st))\n}).setLayout({\n name: 'cart2polar',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const cart2polar3D = Fn(([st]: [Vec3]): Vec3 => {\n const r = length(st).toVar('r')\n const phi = acos(st.z.div(r)).toVar('phi')\n const theta = atan2(st.y, st.x).toVar('theta')\n return vec3(r, phi, theta)\n}).setLayout({\n name: 'cart2polar3D',\n type: 'vec3',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction center(x: Float): Float\nfunction center(v: Vec2): Vec2\nfunction center(v: Vec3): Vec3\nfunction center(v: any): any {\n return v.mul(2).sub(1)\n}\n\nexport const centerFloat = Fn(([x]: [Float]): Float => {\n return center(x)\n}).setLayout({\n name: 'centerFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const centerVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return center(v)\n}).setLayout({\n name: 'centerVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const centerVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return center(v)\n}).setLayout({\n name: 'centerVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const checkerTile = Fn(([t]: [Vec4]): Float => {\n const c = mod(t.zw, 2).toVar('c')\n return abs(c.x.sub(c.y))\n}).setLayout({\n name: 'checkerTile',\n type: 'float',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const checkerTileVec2 = Fn(([v]: [Vec2]): Float => {\n return checkerTile(sqTile(v))\n}).setLayout({\n name: 'checkerTileVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const checkerTileFloat = Fn(([v, s]: [Vec2, Float]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const checkerTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileVec2Scale',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, select } from '../../node'\n\n// Perspective projection version\nexport const depth2viewZ = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return near.mul(far).div(far.sub(near).mul(depth).sub(far))\n}).setLayout({\n name: 'depth2viewZ',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Orthographic projection version\nexport const depth2viewZOrthographic = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return depth.mul(near.sub(far)).sub(near)\n}).setLayout({\n name: 'depth2viewZOrthographic',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Combined version with orthographic flag\nexport const depth2viewZCombined = Fn(([depth, near, far, orthographic]: [Float, Float, Float, Float]): Float => {\n const perspective = near.mul(far).div(far.sub(near).mul(depth).sub(far))\n const ortho = depth.mul(near.sub(far)).sub(near)\n return select(ortho, perspective, orthographic.greaterThan(0.5))\n}).setLayout({\n name: 'depth2viewZCombined',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n { name: 'orthographic', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, X, texture, float, vec3, int, Loop, If } from '../../node'\nimport { lookAtBasic } from './lookAt'\n\nconst DISPLACE_DEPTH = float(1).constant('DISPLACE_DEPTH')\nconst DISPLACE_PRECISION = float(0.01).constant('DISPLACE_PRECISION')\nconst DISPLACE_MAX_ITERATIONS = int(120).constant('DISPLACE_MAX_ITERATIONS')\n\nexport const displace = Fn(([tex, ro, rd]: [X, Vec3, Vec3]): Vec3 => {\n const dz = ro.z.sub(DISPLACE_DEPTH).toVar('dz')\n const t = dz.div(rd.z).toVar('t')\n const prev = vec3(ro.x.sub(rd.x.mul(t)), ro.y.sub(rd.y.mul(t)), ro.z.sub(rd.z.mul(t))).toVar('prev')\n const curr = prev.toVar('curr')\n const lastD = prev.z.toVar('lastD')\n const hmap = float(0).toVar('hmap')\n const df = float(0).toVar('df')\n\n Loop(DISPLACE_MAX_ITERATIONS, () => {\n prev.assign(curr)\n curr.assign(prev.add(rd.mul(DISPLACE_PRECISION)))\n hmap.assign(texture(tex, curr.xy.sub(0.5)).r)\n df.assign(curr.z.sub(hmap.mul(DISPLACE_DEPTH)))\n\n If(df.lessThan(0), () => {\n const t = lastD.div(df.abs().add(lastD)).toVar('t')\n return prev.add(t.mul(curr.sub(prev))).add(vec3(0.5, 0.5, 0))\n })\n\n lastD.assign(df)\n })\n\n return vec3(0, 0, 1)\n}).setLayout({\n name: 'displace',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'rd', type: 'vec3' },\n ],\n})\n\nexport const displaceUV = Fn(([tex, ro, uv]: [X, Vec3, Vec2]): Vec3 => {\n const rd = lookAtBasic(ro.negate())\n .mul(vec3(uv.sub(float(0.5)), 1).normalize())\n .toVar('rd')\n return displace(tex, ro, rd)\n}).setLayout({\n name: 'displaceUV',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'uv', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, mat3 } from '../../node'\n\nexport const lookAtForward = Fn(([forward, up]: [Vec3, Vec3]) => {\n const zaxis = forward.normalize().toVar()\n const xaxis = up.cross(zaxis).normalize().toVar()\n const yaxis = zaxis.cross(xaxis).toVar()\n return mat3(xaxis, yaxis, zaxis)\n}).setLayout({\n name: 'lookAtForward',\n type: 'mat3',\n inputs: [\n { name: 'forward', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAt = Fn(([eye, target, up]: [Vec3, Vec3, Vec3]) => {\n const forward = target.sub(eye).normalize().toVar()\n return lookAtForward(forward, up)\n}).setLayout({\n name: 'lookAt',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtRoll = Fn(([eye, target, roll]: [Vec3, Vec3, Float]) => {\n const up = vec3(roll.sin(), roll.cos(), 0).toVar()\n return lookAt(eye, target, up)\n}).setLayout({\n name: 'lookAtRoll',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtBasic = Fn(([forward]: [Vec3]) => {\n return lookAtForward(forward, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtBasic',\n type: 'mat3',\n inputs: [{ name: 'forward', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, vec3, cos, sin, sqrt, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const equirect2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const phi = PI.sub(uv.y.mul(PI)).toVar('phi')\n const theta = uv.x.mul(TWO_PI).toVar('theta')\n const dir = vec3(cos(theta), 0, sin(theta)).toVar('dir')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'equirect2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec3, Mat4, mat3 } from '../../node'\nimport { rotate3dX, rotate3dY, rotate3dZ } from '../math'\nimport { translateMat3 } from './translate'\n\nexport const eulerView = Fn(([position, euler]: [Vec3, Vec3]): Mat4 => {\n const rotZ = rotate3dZ(euler.z)\n const rotX = rotate3dX(euler.x)\n const rotY = rotate3dY(euler.y)\n const identity = mat3(1).toVar('identity')\n const rotation = rotY.mul(rotX).mul(rotZ).mul(identity).toVar('rotation')\n return translateMat3(rotation, position)\n}).setLayout({\n name: 'eulerView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'euler', type: 'vec3' },\n ],\n})\n","import { Fn, Mat3, Vec3, vec4, mat4 } from '../../node'\n\nexport const translateMat3 = Fn(([m, translation]: [Mat3, Vec3]) => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(translation, 1))\n}).setLayout({\n name: 'translateMat3',\n type: 'mat4',\n inputs: [\n { name: 'm', type: 'mat3' },\n { name: 'translation', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec3, sqrt, cos, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const fisheye2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const ndc = uv.mul(2).sub(1).toVar('ndc')\n const R = sqrt(ndc.x.mul(ndc.x).add(ndc.y.mul(ndc.y))).toVar('R')\n const dir = vec3(ndc.x.div(R), 0, ndc.y.div(R)).toVar('dir')\n const phi = R.mul(PI).mul(0.52).toVar('phi')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'fisheye2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4 } from '../../node'\n\nexport const flipYVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(v.x, v.y.oneMinus())\n}).setLayout({\n name: 'flipY',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const flipYVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return vec3(v.x, v.y.oneMinus(), v.z)\n}).setLayout({\n name: 'flipY',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const flipYVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(v.x, v.y.oneMinus(), v.z, v.w)\n}).setLayout({\n name: 'flipY',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec2, Vec4, vec2, vec4, float, floor, dot, select } from '../../node'\n\nexport const hexTile = Fn(([st]: [Vec2]): Vec4 => {\n const s = vec2(1, 1.7320508).toVar('s')\n const o = vec2(0.5, 1).toVar('o')\n const stYX = vec2(st.y, st.x).toVar('stYX')\n const i = floor(vec4(stYX, stYX.sub(o)).div(vec4(s, s)))\n .add(0.5)\n .toVar('i')\n const f = vec4(stYX.sub(i.xy.mul(s)), stYX.sub(i.zw.add(0.5).mul(s))).toVar('f')\n const dotXY = dot(f.xy, f.xy)\n const dotZW = dot(f.zw, f.zw)\n return select(vec4(f.wz.add(float(0.5)), i.zw.add(o)), vec4(f.yx.add(float(0.5)), i.xy), dotXY.lessThan(dotZW))\n}).setLayout({\n name: 'hexTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, vec2, float, length, atan2, floor, min, max, cos, sin } from '../../node'\n\nconst TWO_PI = 6.283185307179586\n\nconst kaleidoscopeCore = (coord: Vec2, segmentCount: Float, phase: Float) => {\n const uv = coord.sub(0.5).toVar('uv')\n const radius = length(uv).toVar('radius')\n const angle = atan2(uv.y, uv.x).toVar('angle')\n const segmentAngle = float(TWO_PI).div(segmentCount).toVar('segmentAngle')\n const adjustedAngle = angle.sub(segmentAngle.mul(floor(angle.div(segmentAngle)))).toVar('adjustedAngle')\n const finalAngle = min(adjustedAngle, segmentAngle.sub(adjustedAngle)).toVar('finalAngle')\n const kuv = vec2(cos(finalAngle.add(phase)), sin(finalAngle.add(phase)))\n .mul(radius)\n .add(0.5)\n .toVar('kuv')\n return max(min(kuv, kuv.mul(-1).add(2)), kuv.negate())\n}\n\nexport const kaleidoscope = Fn(([coord, segmentCount, phase]: [Vec2, Float, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, phase)\n}).setLayout({\n name: 'kaleidoscope',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const kaleidoscopeDefault = Fn(([coord]: [Vec2]): Vec2 => {\n return kaleidoscopeCore(coord, float(8), float(0))\n}).setLayout({\n name: 'kaleidoscopeDefault',\n type: 'vec2',\n inputs: [{ name: 'coord', type: 'vec2' }],\n})\n\nexport const kaleidoscopeCount = Fn(([coord, segmentCount]: [Vec2, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, float(0))\n}).setLayout({\n name: 'kaleidoscopeCount',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const linearizeDepth = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n const normalizedDepth = depth.mul(2).sub(1).toVar('normalizedDepth')\n return near\n .mul(far)\n .mul(2)\n .div(far.add(near).sub(normalizedDepth.mul(far.sub(near))))\n}).setLayout({\n name: 'linearizeDepth',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4 } from '../../node'\nimport { sqTile } from './sqTile'\nimport { mirror } from '../math/mirror'\n\nexport const mirrorTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.xy.add(t.zw)), t.z, t.w)\n}).setLayout({\n name: 'mirrorTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorTile(sqTile(v))\n}).setLayout({\n name: 'mirrorTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const mirrorTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const mirrorXTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.x.add(t.z)), t.y, t.z, t.w)\n}).setLayout({\n name: 'mirrorXTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorXTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorXTile(sqTile(v))\n}).setLayout({\n name: 'mirrorXTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorYTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(t.x, mirror(t.y.add(t.w)), t.z, t.w)\n}).setLayout({\n name: 'mirrorYTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorYTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorYTile(sqTile(v))\n}).setLayout({\n name: 'mirrorYTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Vec2, floor } from '../../node'\n\nexport const nearest = Fn(([v, res]: [Vec2, Vec2]): Vec2 => {\n const offset = res.sub(1).reciprocal().mul(0.5).toVar('offset')\n return floor(v.mul(res)).div(res).add(offset)\n}).setLayout({\n name: 'nearest',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'res', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const orthographic = Fn(([l, r, b, t, n, f]: [Float, Float, Float, Float, Float, Float]): Mat4 => {\n const width = r.sub(l).toVar('width')\n const height = t.sub(b).toVar('height')\n const depth = f.sub(n).toVar('depth')\n\n return mat4(\n vec4(width.reciprocal().mul(2), 0, 0, 0),\n vec4(0, height.reciprocal().mul(2), 0, 0),\n vec4(0, 0, depth.reciprocal().mul(-2), 0),\n vec4(r.add(l).div(width).negate(), t.add(b).div(height).negate(), f.add(n).div(depth).negate(), 1)\n )\n}).setLayout({\n name: 'orthographic',\n type: 'mat4',\n inputs: [\n { name: 'l', type: 'float' },\n { name: 'r', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 't', type: 'float' },\n { name: 'n', type: 'float' },\n { name: 'f', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, X, texture, float, vec2, vec3, int, Loop, If, Break } from '../../node'\n\nconst PARALLAXMAPPING_SCALE = float(0.01).constant('PARALLAXMAPPING_SCALE')\nconst PARALLAXMAPPING_NUMSEARCHES = float(10).constant('PARALLAXMAPPING_NUMSEARCHES')\n\nexport const parallaxMappingSimple = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const initialHeight = texture(tex, T).r.toVar('initialHeight')\n const texCoordOffset = PARALLAXMAPPING_SCALE.mul(V.xy).mul(initialHeight).toVar('texCoordOffset')\n return T.sub(texCoordOffset)\n}).setLayout({\n name: 'parallaxMappingSimple',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingSteep = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.mul(0.5).toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingSteep',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingRelief = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const deltaTexCoord = dtex.mul(0.5).toVar('deltaTexCoord')\n const deltaHeight = layerHeight.mul(0.5).toVar('deltaHeight')\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n\n Loop(int(5), ({ i }) => {\n deltaTexCoord.mulAssign(0.5)\n deltaHeight.mulAssign(0.5)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n\n If(heightFromTexture.greaterThan(currentLayerHeight), () => {\n currentTextureCoords.subAssign(deltaTexCoord)\n currentLayerHeight.addAssign(deltaHeight)\n }).Else(() => {\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n })\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingRelief',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingOcclusion = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const curLayerHeight = float(0).toVar('curLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n const prevTCoords = currentTextureCoords.toVar('prevTCoords')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(curLayerHeight), () => {\n Break()\n })\n curLayerHeight.addAssign(layerHeight)\n prevTCoords.assign(currentTextureCoords)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const nextH = heightFromTexture.sub(curLayerHeight).toVar('nextH')\n const prevH = texture(tex, prevTCoords).r.sub(curLayerHeight).add(layerHeight).toVar('prevH')\n const weight = nextH.div(nextH.sub(prevH)).toVar('weight')\n const finalTexCoords = prevTCoords\n .mul(weight)\n .add(currentTextureCoords.mul(float(1).sub(weight)))\n .toVar('finalTexCoords')\n\n return finalTexCoords\n}).setLayout({\n name: 'parallaxMappingOcclusion',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMapping = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n return parallaxMappingOcclusion(tex, V, T)\n}).setLayout({\n name: 'parallaxMapping',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, tan, float } from '../../node'\n\nexport const perspective = Fn(([fov, aspect, near, far]: [Float, Float, Float, Float]): Mat4 => {\n const f = float(1)\n .div(tan(fov.div(2)))\n .toVar('f')\n const nf = float(1).div(near.sub(far)).toVar('nf')\n // prettier-ignore\n return mat4(\n f.div(aspect), 0, 0, 0,\n 0, f, 0, 0,\n 0, 0, far.add(near).mul(nf), -1,\n 0, 0, float(2).mul(far).mul(near).mul(nf), 0\n )\n}).setLayout({\n name: 'perspective',\n type: 'mat4',\n inputs: [\n { name: 'fov', type: 'float' },\n { name: 'aspect', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, cos, sin, vec2, vec3 } from '../../node'\n\nexport const polar2cart = Fn(([polar]: [Vec2]): Vec2 => {\n return vec2(cos(polar.x), sin(polar.x)).mul(polar.y)\n}).setLayout({\n name: 'polar2cart',\n type: 'vec2',\n inputs: [{ name: 'polar', type: 'vec2' }],\n})\n\nexport const polar2cart3D = Fn(([r, phi, theta]: [Float, Float, Float]): Vec3 => {\n const x = r.mul(cos(theta)).mul(sin(phi)).toVar('x')\n const y = r.mul(sin(theta)).mul(sin(phi)).toVar('y')\n const z = r.mul(cos(phi)).toVar('z')\n return vec3(x, y, z)\n}).setLayout({\n name: 'polar2cart3D',\n type: 'vec3',\n inputs: [\n { name: 'r', type: 'float' },\n { name: 'phi', type: 'float' },\n { name: 'theta', type: 'float' },\n ],\n})\n","import { Fn, Vec2, mix, vec2, step } from '../../node'\n\nexport const ratio = Fn(([v, s]: [Vec2, Vec2]): Vec2 => {\n const wideAspect = vec2(v.x.mul(s.x.div(s.y)).sub(s.x.mul(0.5).sub(s.y.mul(0.5)).div(s.y)), v.y)\n const tallAspect = vec2(v.x, v.y.mul(s.y.div(s.x)).sub(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.x)))\n return mix(wideAspect, tallAspect, step(s.x, s.y))\n}).setLayout({\n name: 'ratio',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, floor, fract } from '../../node'\n\nexport const sprite = Fn(([st, grid, index]: [Vec2, Vec2, Float]): Vec2 => {\n const adjustedIndex = index.add(grid.x).toVar('adjustedIndex')\n const f = vec2(1).div(grid).toVar('f')\n const cell = vec2(floor(adjustedIndex), grid.y.sub(floor(adjustedIndex.mul(f.x)))).toVar('cell')\n return fract(st.add(cell).mul(f))\n}).setLayout({\n name: 'sprite',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'grid', type: 'vec2' },\n { name: 'index', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Mat3, mat3, normalize, cross } from '../../node'\n\nexport const tbn = Fn(([t, b, n]: [Vec3, Vec3, Vec3]): Mat3 => {\n return mat3(t, b, n)\n}).setLayout({\n name: 'tbn',\n type: 'mat3',\n inputs: [\n { name: 't', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'n', type: 'vec3' },\n ],\n})\n\nexport const tbnFromNormal = Fn(([n, up]: [Vec3, Vec3]): Mat3 => {\n const t = normalize(cross(up, n)).toVar('t')\n const b = cross(n, t).toVar('b')\n return tbn(t, b, n)\n}).setLayout({\n name: 'tbnFromNormal',\n type: 'mat3',\n inputs: [\n { name: 'n', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { lookAt, lookAtRoll } from './lookAt'\nimport { translateMat3 } from './translate'\n\nexport const lookAtView = Fn(([position, target, up]: [Vec3, Vec3, Vec3]) => {\n const m = lookAt(position, target, up).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtViewRoll = Fn(([position, target, roll]: [Vec3, Vec3, Float]) => {\n const m = lookAtRoll(position, target, roll).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtViewRoll',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtViewBasic = Fn(([position, target]: [Vec3, Vec3]) => {\n return lookAtView(position, target, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtViewBasic',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const rotate2DCenter = Fn(([v, r, c]: [Vec2, Float, Vec2]) => {\n return rotate2d(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotate2DCenter',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec2' },\n ],\n})\n\nexport const rotate2DBasic = Fn(([v, r]: [Vec2, Float]) => {\n return rotate2DCenter(v, r, vec2(0.5))\n}).setLayout({\n name: 'rotate2DBasic',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const rotate2DAxis = Fn(([v, xAxis]: [Vec2, Vec2]) => {\n const negYAxis = vec2(xAxis.y.negate(), xAxis.x).toVar()\n return vec2(v.dot(negYAxis), v.dot(xAxis))\n}).setLayout({\n name: 'rotate2DAxis',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'xAxis', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dX } from '../math/rotate4dX'\n\n// vec4 rotateX(in vec4 v, in float r, in vec4 c)\nexport const rotateXVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dX(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateXVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateX(in vec4 v, in float r)\nexport const rotateXVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dX(r).mul(v)\n}).setLayout({\n name: 'rotateXVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r, in vec3 c)\nexport const rotateXVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dX(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateXVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r)\nexport const rotateXVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dX(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateXVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dY } from '../math/rotate4dY'\n\n// vec4 rotateY(in vec4 v, in float r, in vec4 c)\nexport const rotateYVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dY(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateYVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateY(in vec4 v, in float r)\nexport const rotateYVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dY(r).mul(v)\n}).setLayout({\n name: 'rotateYVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r, in vec3 c)\nexport const rotateYVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dY(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateYVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r)\nexport const rotateYVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dY(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateYVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dZ } from '../math/rotate4dZ'\n\n// vec4 rotateZ(in vec4 v, in float r, in vec4 c)\nexport const rotateZVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dZ(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateZVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateZ(in vec4 v, in float r)\nexport const rotateZVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dZ(r).mul(v)\n}).setLayout({\n name: 'rotateZVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r, in vec3 c)\nexport const rotateZVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dZ(r)\n .mul(vec4(v.sub(c), 0))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateZVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r)\nexport const rotateZVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dZ(r).mul(vec4(v, 0)).xyz\n}).setLayout({\n name: 'rotateZVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const unratio = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return vec2(st.x, st.y.mul(s.x.div(s.y)).add(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.y)))\n}).setLayout({\n name: 'unratio',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction uncenter(x: Float): Float\nfunction uncenter(v: Vec2): Vec2\nfunction uncenter(v: Vec3): Vec3\nfunction uncenter(v: any): any {\n return v.mul(0.5).add(0.5)\n}\n\nexport const uncenterFloat = Fn(([x]: [Float]): Float => {\n return uncenter(x)\n}).setLayout({\n name: 'uncenterFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const uncenterVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const uncenterVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const viewZ2depth = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).mul(far).div(far.sub(near).mul(viewZ))\n}).setLayout({\n name: 'viewZ2depth',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\nexport const viewZ2depthOrthographic = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).div(near.sub(far))\n}).setLayout({\n name: 'viewZ2depthOrthographic',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, atan2, acos } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const xyz2equirect = Fn(([d]: [Vec3]): Vec2 => {\n return vec2(atan2(d.z, d.x).add(PI), acos(d.y.negate())).div(vec2(TWO_PI, PI))\n}).setLayout({\n name: 'xyz2equirect',\n type: 'vec2',\n inputs: [{ name: 'd', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mat2, vec2, vec4, floor, fract, dot } from '../../node'\n\nexport const triTile = Fn(([st]: [Vec2]): Vec4 => {\n const transformed = st.mul(mat2(vec2(1, -1 / 1.7320508), vec2(0, 2 / 1.7320508))).toVar()\n const f = vec4(transformed, transformed.negate()).toVar()\n const i = floor(f).toVar()\n const fFractional = fract(f).toVar()\n\n const dotXY = dot(fFractional.xy, fFractional.xy)\n const dotZW = dot(fFractional.zw, fFractional.zw)\n\n const condition = dotXY.lessThan(dotZW)\n const trueValue = vec4(fFractional.xy, vec2(2, 1).mul(i.xy))\n const falseValue = vec4(fFractional.zw, vec2(2, 1).mul(i.zw).add(1).negate())\n\n return falseValue.select(trueValue, condition)\n}).setLayout({\n name: 'triTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triTileScaled = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return triTile(st.mul(scale))\n}).setLayout({\n name: 'triTileScaled',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs, vec4 } from '../../node'\nimport { rotate2DBasic } from './rotate'\nimport { sqTile } from './sqTile'\n\nexport const windmillTile = Fn(([t, turn]: [Vec4, Float]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(turn)), t.zw)\n}).setLayout({\n name: 'windmillTile',\n type: 'vec4',\n inputs: [\n { name: 't', type: 'vec4' },\n { name: 'turn', type: 'float' },\n ],\n})\n\nexport const windmillTileDefault = Fn(([t]: [Vec4]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(6.283185307179586)), t.zw)\n}).setLayout({\n name: 'windmillTileDefault',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const windmillTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return windmillTileDefault(sqTile(v))\n}).setLayout({\n name: 'windmillTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const windmillTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const windmillTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n"],"mappings":"AAAA,OAAS,MAAAA,GAAW,OAAAC,GAAK,OAAAC,OAAW,kBCApC,OAAS,SAAAC,OAAa,eAGf,IAAMC,GAAYD,GAAM,YAAa,EAC/BE,GAASF,GAAM,YAAa,EAC5BG,GAAUH,GAAM,kBAAiC,EACjDI,GAAKJ,GAAM,iBAAiC,EAC5CK,GAASL,GAAM,iBAAiC,EAChDM,GAAMN,GAAM,iBAAiC,EAC7CO,GAASP,GAAM,iBAAkC,EACjDQ,GAAeR,GAAM,iBAAkC,EACvDS,GAAeT,GAAM,aAAa,EAClCU,GAAMV,GAAM,iBAA6B,EACzCW,GAAUX,GAAM,IAAO,EACvBY,GAAeZ,GAAM,YAAY,EACjCa,GAAyBb,GAAM,YAAa,EAC5Cc,GAAed,GAAM,UAAU,EAC/Be,GAAUX,GAAG,IAAI,GAAG,EACpBY,GAAUhB,GAAM,GAAG,EAAE,IAAII,EAAE,EDfjC,IAAMa,GAASC,GAAG,CAAC,CAAC,CAAC,IACbC,GAAI,EAAG,CAAC,EAAE,IAAI,EAAE,IAAIC,GAAI,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EETD,OAAS,MAAAC,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAAsB,CAC7C,IAAMC,EAAI,EAAE,IAAI,CAAC,EAAE,OAAOC,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAG,EAAE,SAAS,EAAG,CAAC,EAClEC,EAAIC,GAAOH,CAAC,EAClB,OAAOE,EAAE,IAAI,CAAC,EAAE,OAAOD,GAAM,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAG,EAAG,EAAE,SAAS,EAAG,CAAC,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECXD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAUC,GAAG,CAAC,CAAC,CAAC,IACdC,GAAM,CAAC,EAAE,IAAIC,GAAOD,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECTD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBCAjC,OAAS,MAAAC,GAAW,SAAAC,OAAa,kBAE1B,IAAMC,GAAYF,GAAG,CAAC,CAAC,CAAC,IAAsB,CAC7C,IAAMG,EAAIF,GAAM,kBAAM,EAChBG,EAAIH,GAAM,EAAI,EAAE,EAChBI,EAAIJ,GAAM,EAAI,EAAE,EAChBK,EAAKL,GAAM,KAAS,GAAK,EACzBM,EAAKN,GAAM,MAAU,IAAM,EAC3BO,EAAKP,GAAM,MAAU,IAAM,EAC3BQ,EAAK,EAAE,IAAI,CAAC,EAClB,OAAOA,EAAG,IAAI,MAAM,EAAE,OACdA,EACS,IAAI,KAAK,EACT,IAAI,EAAE,IAAI,GAAG,CAAC,EACd,IAAI,GAAG,EACP,OACOA,EACS,IAAIH,CAAE,EACN,IAAI,EAAE,IAAIC,CAAE,CAAC,EACb,IAAIC,CAAE,EACN,OAAOC,EAAG,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,EAAG,EAAE,SAASJ,CAAC,CAAC,EACxE,EAAE,SAASD,CAAC,CACpB,EACR,EAAE,SAASD,CAAC,CACpB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ED1BM,IAAMO,GAAWC,GAAG,CAAC,CAAC,CAAC,IACfC,GAAM,CAAC,EAAE,IAAIC,GAAUD,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EETD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAcC,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAM,CAAC,EACL,IAAIC,GAAUD,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,EACL,OAAOC,GAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAG,EAAG,EAAE,SAAS,EAAG,CAAC,CAClF,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECZD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IACjB,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAClD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAgBD,GAAG,CAAC,CAAC,CAAC,IAAc,CACzC,IAAME,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAC1DC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACtE,OAAQD,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,GAAO,SAAAC,OAAa,kBAEtB,IAAMC,GAAcF,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAUD,GAAG,CAAC,CAAC,CAAC,IACd,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IAAc,CACtC,IAAME,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7BC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAChD,OAAQD,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAWD,GAAG,CAAC,CAAC,CAAC,IAAc,CACpC,IAAME,EAAI,EAAE,IAAI,CAAC,EACjB,OAAOA,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAChBC,GAAI,EAAE,IAAI,EAAE,EAAE,IAAIC,EAAO,CAAC,EAAE,IAAIC,GAAIC,GAAM,CAAC,EAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECTD,OAAS,MAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAeC,GAAG,CAAC,CAAC,CAAC,IAAsB,CAChD,IAAMC,EAAK,EAAE,IAAI,CAAC,EACZC,EAAWD,EAAG,IAAI,CAAC,EACzB,OAAOE,GAAIC,GAAQ,IAAI,EAAE,EAAE,IAAIH,CAAE,CAAC,EACzB,IAAII,GAAIC,GAAM,CAAC,EAAGJ,EAAS,IAAI,EAAE,CAAC,CAAC,EACnC,IAAI,CAAC,EACL,OACOC,GAAIC,GAAQ,IAAI,GAAG,EAAE,IAAIF,EAAS,IAAI,CAAC,CAAC,CAAC,EAChC,IAAIG,GAAIC,GAAM,CAAC,EAAGJ,EAAS,IAAI,GAAG,CAAC,CAAC,EACpC,IAAI,CAAC,EACL,IAAI,CAAC,EACd,EAAE,SAAS,EAAG,CACtB,CAChB,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECpBD,OAAS,MAAAK,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAaC,GAAG,CAAC,CAAC,CAAC,IACjBC,GAAIC,GAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIC,EAAO,CAAC,EACvC,IAAIC,GAAIF,GAAM,CAAC,EAAGA,GAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECXD,OAAS,MAAAG,OAAa,kBAEf,IAAMC,GAAgBD,GAAG,CAAC,CAAC,CAAC,IACnB,EAAU,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG,EAAE,MAAM,CAAC,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAmBD,GAAG,CAAC,CAAC,CAAC,IAAc,CAC5C,IAAME,EAAc,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EACtCC,EAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EACtCC,EAAO,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAC9CC,EAAUF,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,EAC1D,OAAQ,EAAU,OAAOC,EAAQH,CAAW,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECZD,OAAS,MAAAI,OAAa,kBAEf,IAAMC,GAAiBD,GAAG,CAAC,CAAC,CAAC,IACpB,EAAU,OAAO,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAG,EAAE,MAAM,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAWD,GAAG,CAAC,CAAC,CAAC,IACf,CACd,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAcD,GAAG,CAAC,CAAC,CAAC,IAClB,CACd,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,CACd,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAcD,GAAG,CAAC,CAAC,CAAC,IAClB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAiBF,GAAG,CAAC,CAAC,CAAC,IAAc,CAC1C,IAAMG,EAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACxB,OAAOF,GAAOE,EAAGA,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,SAAS,EAAG,CAAC,CACzE,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAeD,GAAG,CAAC,CAAC,CAAC,IACnB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CACrC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAeF,GAAG,CAAC,CAAC,CAAC,IAAc,CACxC,IAAMG,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACtBC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAC1C,OAAOH,GAAOE,EAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IAAc,CACtC,IAAME,EAAK,EAAE,IAAI,CAAC,EAClB,OAAOA,EAAG,IAAIA,CAAE,EAAE,IAAIA,CAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CACzD,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAeF,GAAG,CAAC,CAAC,CAAC,IAAc,CACxC,IAAMG,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EACvBC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,EACnD,OAAOH,GAAOE,EAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IACjB,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAASC,GAAG,CAAC,CAAC,CAAC,IACbC,GAAI,EAAE,IAAI,CAAC,EAAE,IAAIC,EAAc,CAAC,EAAE,IAAI,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAChBC,GAAIC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAC5C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAAUC,GAAG,CAAC,CAAC,CAAC,IACdC,GAAI,EAAE,IAAIC,EAAc,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAgB,SAAAC,GAAO,QAAAC,OAAY,kBAErC,IAAMC,GAAWH,GAAG,CAAC,CAACI,CAAI,IAAoB,CAC7C,IAAMC,EAAOJ,GAAM,CAAC,EAAE,IAAIG,EAAK,CAAC,EAAE,MAAM,EACxC,OAAOH,GAAM,CAAC,EACL,IAAIC,GAAK,CAAC,EAAE,IAAIE,EAAK,IAAI,IAAIC,CAAI,EAAE,IAAID,EAAK,CAAC,CAAC,CAAC,EAC/C,SAAS,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,ECXD,OAAS,MAAAE,GAAU,SAAAC,GAAO,QAAAC,OAAe,kBAEzC,IAAMC,GAAQF,GAAM,GAAG,EAEVG,GAAeJ,GAAG,CAAC,CAACK,CAAC,IACnBA,EAAE,IAAIF,EAAK,CACzB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAmBN,GAAG,CAAC,CAACK,CAAC,IACvBH,GAAKE,GAAaC,EAAE,GAAG,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EClBD,OAAS,MAAAE,GAAgB,SAAAC,GAAO,QAAAC,OAAY,kBCA5C,OAAS,MAAAC,GAAiB,SAAAC,GAAO,QAAAC,OAAY,kBAEtC,IAAMC,GAAUH,GAAG,CAAC,CAACI,CAAG,IAAqB,CAC5C,IAAMC,EAAID,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EACzCE,EAAIL,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAChDG,EAAIN,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EACtD,OAAOF,GAAKG,EAAGC,EAAGC,CAAC,EAAE,SAAS,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,OAAQ,CAAC,CAC/C,CAAC,EDRM,IAAMC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC3C,IAAMC,EAAMC,GAAQF,EAAI,CAAC,EAAE,MAAM,EAC3BG,EAAIC,GAAM,CAAC,EAAE,IAAIJ,EAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,MAAM,EACnE,OAAOC,EAAI,IAAI,EAAG,EAAE,IAAIE,CAAC,EAAE,IAAIH,EAAI,CAAC,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAcN,GAAG,CAAC,CAACC,CAAG,IACpBM,GAAKR,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EEnBD,OAAS,MAAAO,GAAgB,QAAAC,OAAY,kBAG9B,IAAMC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQD,EAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,CAC/D,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYE,GAAcH,GAAG,CAAC,CAACC,CAAG,IACpBG,GAAKL,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECjBD,OAAS,MAAAI,GAAI,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAwB,kBAEjD,IAAMC,GAAWL,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAMC,EAASL,GAAKI,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EACpDE,EAAMP,GAAMK,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAI,aAAa,EACjD,OAAOH,GAAKG,EAAI,EAAGC,EAAQC,CAAG,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWT,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAMI,EAAML,GAASC,EAAI,GAAG,EAC5B,OAAOF,GAAKM,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAUN,GCrBvB,OAAS,MAAAO,GAAgB,QAAAC,OAAY,kBCArC,OAAS,MAAAC,GAAgB,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,OAAY,kBAG1D,IAAMC,GAAYF,GAAK,aAAe,EAAG,aAAa,EAEzCG,GAAUN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC3C,IAAMC,EAAKD,EAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,MAAM,EAClCE,EAAKF,EAAI,EAAE,IAAI,GAAG,EAAE,IAAIC,CAAE,EAAE,MAAM,EAClCE,EAAKF,EAAG,IAAID,EAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAElCI,EAAYV,GAAM,OAAQ,EAC1BW,EAAQX,GAAM,EAAE,EAAE,IAAI,GAAG,EACzBY,EAASZ,GAAM,KAAK,EAEpBa,EAAWZ,GAAOO,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAIG,CAAK,EAAE,IAAIC,CAAM,EAAGJ,EAAG,YAAYE,CAAS,CAAC,EACjFI,EAAWb,GAAOM,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAII,CAAK,EAAE,IAAIC,CAAM,EAAGL,EAAG,YAAYG,CAAS,CAAC,EACjFK,EAAWd,GAAOQ,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAIE,CAAK,EAAE,IAAIC,CAAM,EAAGH,EAAG,YAAYC,CAAS,CAAC,EAEvF,OAAON,GAAU,IAAI,GAAG,EAAE,IAAIF,GAAKW,EAAUC,EAAUC,CAAQ,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcjB,GAAG,CAAC,CAACO,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC/BD,OAAS,MAAAW,GAAgB,QAAAC,GAAM,QAAAC,OAAY,kBAG3C,IAAMC,GAAUF,GACR,UACA,WACA,UACA,SACA,UACA,QACA,SACA,UACA,SACR,EAEaG,GAAUJ,GAAG,CAAC,CAACK,CAAG,IAChBF,GAAQ,IAAIE,EAAI,IAAI,GAAI,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EFzBM,IAAME,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcJ,GAAG,CAAC,CAACC,CAAG,IACpBI,GAAKN,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EGlBD,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAEpC,IAAMC,GAAWH,GAAG,CAAC,CAACI,CAAG,IAAoB,CAC5C,IAAMC,EAAUD,EAAI,EAAE,IAAI,YAAa,EACvC,OAAOH,GAAKG,EAAI,EAAGA,EAAI,EAAE,IAAIC,EAAQ,IAAI,CAAC,EAAGD,EAAI,EAAE,IAAIC,EAAQ,IAAI,CAAC,CAAC,CAC7E,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACI,CAAG,IAAoB,CAC5C,IAAMG,EAAMJ,GAASC,EAAI,GAAG,EAC5B,OAAOF,GAAKK,EAAKH,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GCpBvB,OAAS,MAAAM,GAAgB,QAAAC,OAAY,kBAI9B,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAG,IACjBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAWJ,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMI,EAAMN,GAASE,EAAI,GAAG,EAC5B,OAAOK,GAAKD,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYM,GAAUR,GCrBvB,OAAS,MAAAS,GAAU,SAAAC,GAAO,QAAAC,OAAe,kBAEzC,IAAMC,GAAYF,GAAM,CAAC,EAAE,IAAI,GAAG,EAErBG,GAAeJ,GAAG,CAAC,CAACK,CAAC,IACnBA,EAAE,IAAIF,EAAS,CAC7B,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAmBN,GAAG,CAAC,CAACK,CAAC,IACvBH,GAAKE,GAAaC,EAAE,GAAG,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EClBD,OAAS,MAAAE,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAcF,GAAK,EAAG,EAAG,EAAG,YAAc,aAAe,aAAe,YAAc,aAAe,YAAY,EAEjHG,GAAcH,GACZ,aACA,cACA,aACA,cACA,aACA,aACA,YACA,aACA,WACR,EAEaI,GAAaL,GAAG,CAAC,CAACM,CAAK,IAAoB,CAChD,IAAMC,EAAMJ,GAAY,IAAIG,CAAK,EACjC,OAAOF,GAAY,IAAIG,EAAI,IAAIA,CAAG,EAAE,IAAIA,CAAG,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACM,CAAK,IAAoB,CAChD,IAAMG,EAAMJ,GAAWC,EAAM,GAAG,EAChC,OAAOJ,GAAKO,EAAKH,EAAM,CAAC,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYI,GAAYL,GClCzB,OAAS,MAAAM,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,kBCAlD,OAAS,MAAAC,GAA6B,OAAAC,OAAW,eAE1C,IAAMC,GAAQF,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAQJ,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAQL,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIA,GAAIE,EAAE,EAAGA,EAAE,CAAC,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYG,GAAOD,GDxBb,IAAME,GAAWC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMC,EAAIC,GAAMC,GAAM,CAAC,EAAE,IAAIH,CAAG,CAAC,EAAE,MAAM,EACnCI,EAAOD,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,MAAM,EAC7BI,EAAMF,GAAM,CAAC,EAAE,IAAIH,CAAG,EAAE,IAAIC,CAAC,EAAE,IAAIG,CAAI,EAAE,IAAIE,GAAK,EAAGF,CAAI,CAAC,EAAE,MAAM,EACxE,OAAOG,GAAKF,EAAKJ,CAAC,EAAE,SAAS,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EEZD,OAAS,MAAAO,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAE1D,IAAMC,GAAcJ,GAAM,OAAO,EAAE,SAAS,EAE/BK,GAAUN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC3C,IAAMC,EAASL,GAAKI,EAAI,EAAGA,EAAI,EAAG,GAAIN,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EACvDQ,EAAUN,GAAKI,EAAI,EAAGA,EAAI,EAAG,EAAGN,GAAM,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EACxDS,EAAUN,GAAOI,EAAQC,EAASF,EAAI,EAAE,SAASA,EAAI,CAAC,CAAC,EAAE,MAAM,EAE/DI,EAASR,GAAKO,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,EAAGH,EAAI,CAAC,EAAE,MAAM,EAC5DK,EAAUT,GAAKI,EAAI,EAAGG,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAAE,MAAM,EAC7DG,EAAUT,GAAOO,EAAQC,EAASL,EAAI,EAAE,SAASG,EAAQ,CAAC,CAAC,EAAE,MAAM,EAEnEI,EAAID,EAAQ,EAAE,IAAIA,EAAQ,EAAE,IAAIA,EAAQ,CAAC,CAAC,EAAE,MAAM,EAClDE,EAAIF,EAAQ,EAAE,IAAIA,EAAQ,CAAC,EAAE,IAAIZ,GAAM,CAAC,EAAE,IAAIa,CAAC,EAAE,IAAIT,EAAW,CAAC,EAAE,IAAIQ,EAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EACpG,OAAOX,GAAKa,EAAGD,EAAGD,EAAQ,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAchB,GAAG,CAAC,CAACO,CAAG,IACpBJ,GAAKG,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC5BD,OAAS,MAAAU,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,kBAGlD,IAAMC,GAAcC,GAAM,OAAO,EAEpBC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC3C,IAAMC,EAAMC,GAAQF,CAAG,EAAE,MAAM,EACzBG,EAAIF,EAAI,EAAE,IAAIA,EAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAClCG,EAAIH,EAAI,EAAE,IAAIJ,GAAM,CAAC,EAAE,IAAIM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIP,EAAW,CAAC,EAAE,MAAM,EAChF,OAAOS,GAAKJ,EAAI,EAAGG,EAAGD,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcP,GAAG,CAAC,CAACC,CAAG,IACpBO,GAAKT,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECtBD,OAAS,MAAAQ,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAE1D,IAAMC,GAAcJ,GAAM,OAAO,EAEpBK,GAAUN,GAAG,CAAC,CAACO,CAAC,IAAoB,CACzC,IAAMC,EAAIL,GAAK,EAAGF,GAAM,EAAE,EAAE,IAAI,CAAC,EAAGA,GAAM,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,EAAE,MAAM,EACzDQ,EAASN,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACxCE,EAAUP,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIP,GAAOK,EAAQC,EAASH,EAAE,EAAE,SAASA,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDK,EAAST,GAAKQ,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGJ,EAAE,CAAC,EAAE,MAAM,EACxCM,EAAUV,GAAKI,EAAE,EAAGI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIV,GAAOQ,EAAQC,EAASN,EAAE,EAAE,SAASI,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDI,EAAID,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,EAChCE,EAAIF,EAAE,EACH,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIb,GAAM,CAAC,EAAE,IAAIc,CAAC,EAAE,IAAIV,EAAW,CAAC,CAAC,EACtD,IAAI,EACJ,MAAM,EACTY,EAAIF,EAAE,IAAID,EAAE,EAAE,IAAIT,EAAW,CAAC,EAAE,MAAM,EACtCa,EAAIJ,EAAE,EAAE,MAAM,EAEpB,OAAOZ,GAAKc,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAcnB,GAAG,CAAC,CAACO,CAAC,IAClBJ,GAAKG,GAAQC,EAAE,GAAG,EAAGA,EAAE,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECnCD,OAAS,MAAAa,GAAuB,SAAAC,GAAO,QAAAC,GAAM,UAAAC,OAAc,kBAE3D,IAAMC,GAAcH,GAAM,OAAO,EAEpBI,GAAUL,GAAG,CAAC,CAACM,CAAC,IAAqB,CAC1C,IAAMC,EAAIL,GAAK,EAAGD,GAAM,EAAE,EAAE,IAAI,CAAC,EAAGA,GAAM,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,EAAE,MAAM,EACzDO,EAASN,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACxCE,EAAUP,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIP,GAAOK,EAAQC,EAASH,EAAE,EAAE,SAASA,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDK,EAAST,GAAKQ,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGJ,EAAE,CAAC,EAAE,MAAM,EACxCM,EAAUV,GAAKI,EAAE,EAAGI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIV,GAAOQ,EAAQC,EAASN,EAAE,EAAE,SAASI,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDI,EAAID,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,EACtC,OAAOA,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIZ,GAAM,CAAC,EAAE,IAAIa,CAAC,EAAE,IAAIV,EAAW,CAAC,CAAC,EAAE,IAAI,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYW,GAAcf,GAAG,CAAC,CAACM,CAAC,IAClBD,GAAQC,EAAE,GAAG,CAC3B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC5BD,OAAS,MAAAU,GAAgB,QAAAC,OAAY,kBCArC,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,kBAG3C,IAAMC,GAAUF,GAAK,SAAW,SAAW,SAAW,SAAW,SAAW,QAAU,SAAW,QAAU,QAAS,EAEvGG,GAAUJ,GAAG,CAAC,CAACK,CAAG,IAChBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECnBD,OAAS,MAAAE,GAAuB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,kBAEtD,IAAMC,GAAUL,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC3C,IAAMC,EAAID,EAAI,IAAIL,GAAK,OAAQ,IAAK,OAAO,CAAC,EAAE,MAAM,EAC9CO,EAAKD,EAAE,IAAIN,GAAK,EAAI,CAAC,CAAC,EAAE,MAAM,EAC9BQ,EAAKF,EACF,IAAI,KAAK,EACT,IAAI,GAAK,GAAG,EACZ,MAAM,EACTG,EAAIN,GAAII,EAAIC,EAAIN,GAAKI,EAAGN,GAAK,OAAQ,CAAC,CAAC,EAAE,MAAM,EAC/CU,EAAID,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAC/BE,EAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,EAChCG,EAAIH,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,EACtC,OAAOT,GAAKU,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcd,GAAG,CAAC,CAACM,CAAG,IACpBJ,GAAKG,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EFtBM,IAAMS,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcJ,GAAG,CAAC,CAACC,CAAG,IACpBI,GAAKN,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EGlBD,OAAS,MAAAK,GAAgB,QAAAC,OAAY,kBAI9B,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAG,IACjBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAWJ,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMI,EAAMN,GAASE,EAAI,GAAG,EAC5B,OAAOK,GAAKD,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYM,GAAUR,GCrBvB,OAAS,MAAAS,GAAI,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAwB,kBAEjD,IAAMC,GAAcH,GACZ,YACA,aACA,YACA,WACA,aACA,YACA,aACA,YACA,WACR,EAEMI,GAAcJ,GACZ,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACR,EAEaK,GAAaN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC9C,IAAMC,EAAMH,GAAY,IAAIE,CAAG,EAC/B,OAAOH,GAAY,IAAII,EAAI,KAAK,EAAE,IAAIA,EAAI,IAAI,EAAE,IAAIN,GAAK,cAAe,CAAC,CAAC,CAAC,CACnF,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYO,GAAaT,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC9C,IAAMG,EAAQJ,GAAWC,EAAI,GAAG,EAChC,OAAOJ,GAAKO,EAAOH,EAAI,CAAC,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAYL,GC5CzB,OAAS,MAAAM,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAEjE,IAAMC,GAAeJ,GAAM,OAAO,EAErBK,GAAgBN,GAAG,CAAC,CAACO,CAAC,IACpBH,GAAOG,EAAE,IAAI,KAAK,EAAGN,GAAM,KAAK,EAAE,IAAIM,EAAE,IAAI,iBAAkB,CAAC,EAAE,IAAI,IAAK,EAAGA,EAAE,SAAS,QAAS,CAAC,CAChH,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACS,CAAG,IACrBP,GACCI,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,EACrCC,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,EACrCC,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,CAC7C,EAAE,SAAS,CAClB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAeV,GAAG,CAAC,CAACS,CAAG,IACrBN,GAAKK,GAAaC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAGYE,GAAWH,GCjCxB,OAAS,MAAAI,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAUF,GAAK,GAAK,IAAM,IAAM,KAAO,OAAS,OAAS,KAAO,OAAS,KAAM,EAExEG,GAAWJ,GAAG,CAAC,CAACK,CAAG,IACjBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACK,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOH,GAAKK,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAUJ,GCrBvB,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAeF,GAAK,MAAQ,QAAU,KAAO,MAAQ,QAAU,QAAU,MAAQ,KAAO,OAAQ,EAEhGG,GAAeH,GAAK,KAAO,QAAU,KAAO,KAAO,QAAU,QAAU,KAAO,KAAO,OAAQ,EAEtFI,GAAWL,GAAG,CAAC,CAACM,CAAG,IACjBH,GAAa,IAAIG,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWP,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOJ,GAAKM,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcT,GAAG,CAAC,CAACM,CAAG,IACpBF,GAAa,IAAIE,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GC/BvB,OAAS,MAAAM,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAEjE,IAAMC,GAAeJ,GAAM,OAAO,EAErBK,GAAgBN,GAAG,CAAC,CAACO,CAAC,IACpBH,GAAOG,EAAE,IAAI,WAAY,EAAGA,EAAE,IAAI,IAAK,EAAE,IAAI,gBAAiB,EAAE,IAAI,GAAG,EAAGA,EAAE,SAAS,MAAO,CAAC,CAC3G,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACS,CAAI,IACtBP,GACCI,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,EACtCC,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,EACtCC,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,CAC9C,CACP,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,EAEYK,GAAeV,GAAG,CAAC,CAACS,CAAI,IACtBN,GAAKK,GAAaC,EAAK,GAAG,EAAGA,EAAK,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,EAGYE,GAAWH,GCjCxB,OAAS,MAAAI,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAUF,GAAK,EAAG,MAAQ,MAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,KAAK,EAEjEG,GAAWJ,GAAG,CAAC,CAACK,CAAG,IACjBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACK,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOH,GAAKK,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAUJ,GCrBvB,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAeF,GAAK,EAAG,EAAG,EAAG,EAAG,QAAU,QAAS,QAAS,QAAU,CAAC,EAEvEG,GAAeH,GAAK,EAAG,EAAG,EAAG,EAAG,QAAU,QAAS,QAAS,OAAS,CAAC,EAE/DI,GAAWL,GAAG,CAAC,CAACM,CAAG,IACjBH,GAAa,IAAIG,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWP,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOJ,GAAKM,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcT,GAAG,CAAC,CAACM,CAAG,IACpBF,GAAa,IAAIE,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GC/BvB,OAAS,MAAAM,GAAiB,SAAAC,GAAO,QAAAC,GAAM,SAAAC,GAAO,UAAAC,GAAQ,SAAAC,GAAO,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,aAAAC,GAAW,MAAAC,OAAU,eAGjG,IAAMC,GAAmBV,GAAM,EAAE,EAC3BW,GAAoBX,GAAM,EAAG,EAGtBY,GAAwBb,GAAG,CAAC,CAACc,CAAG,IAC9BX,GAAMW,EAAI,IAAIH,EAAgB,CAAC,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAgB,CAC5E,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAGYI,GAAuBf,GAAG,CAAC,CAACgB,EAAGC,EAAGC,CAAU,IAAiC,CAClF,IAAMC,EAAUH,EAAE,IAAIE,CAAU,EAAE,MAAM,EACxCC,EAAQ,UAAUN,GAAsBM,CAAO,CAAC,EAChD,IAAMC,EAAQhB,GAAOa,CAAC,EAAE,MAAM,EAExBI,EAASpB,GAAM,CAAC,EAAE,MAAM,EAE9B,OAAAS,GAAGU,EAAM,YAAY,CAAC,EAAG,IAAM,CACvB,IAAME,EAAQL,EAAE,IAAIG,CAAK,EAAE,MAAM,EACjCA,EAAM,OAAOf,GAAMe,EAAO,EAAGT,GAAiB,IAAI,CAAC,CAAC,CAAC,EACrD,IAAMY,EAAUD,EAAM,IAAIF,CAAK,EAAE,MAAM,EAGjCI,EAAQvB,GAAM,CAAC,EACZ,IACOK,GACQL,GAAM,CAAC,EACPM,GAAIE,GAAUc,EAAQ,IAAIJ,CAAO,CAAC,EAAGG,CAAK,EAAE,IAAId,GAAII,GAAkB,IAAI,CAAC,CAAC,CAAC,CACrF,EACS,IAAI,CAAC,EACL,IAAIR,GAAOmB,EAAQ,IAAIJ,CAAO,CAAC,CAAC,EAChC,IAAIb,GAAIL,GAAM,CAAC,EAAGM,GAAIY,EAASG,CAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAC7C,IACOhB,GACQL,GAAM,CAAC,EACPO,GAAII,GAAkB,IAAI,CAAC,CAAC,EAAE,IACtBL,GAAIE,GAAUc,EAAQ,IAAI,GAAI,EAAE,IAAIJ,CAAO,CAAC,EAAGG,CAAK,CAC5D,CACR,EACS,IAAIF,CAAK,EACT,IAAI,EAAG,CACxB,CAChB,EACC,SAAS,EAClBC,EAAO,OAAOG,CAAK,CAC3B,CAAC,EAEMH,CACf,CAAC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,MAAO,CAC3C,CACR,CAAC,EAGYI,GAASzB,GAAG,CAAC,CAACgB,EAAGC,CAAC,IAChBF,GAAqBC,EAAGC,EAAGf,GAAK,CAAC,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EC1ED,OAAS,MAAAwB,GAAmC,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,eCAzE,OAAS,MAAAC,OAAuB,eCAhC,OAAS,MAAAC,GAAuB,SAAAC,GAAO,OAAAC,GAAK,UAAAC,GAAQ,SAAAC,OAAa,eAG1D,IAAMC,GAAYL,GAAG,CAAC,CAACM,EAAIC,EAAGC,CAAC,IAAiC,CAC/D,IAAMC,EAASD,EAAE,IAAID,CAAC,EAAE,MAAM,QAAQ,EAChCG,EAAOJ,EAAG,IAAIC,CAAC,EAAE,MAAM,MAAM,EAC7BI,EAAIV,GAAMC,GAAIQ,EAAMD,CAAM,EAAE,IAAIP,GAAIO,EAAQA,CAAM,CAAC,EAAG,EAAG,CAAC,EAAE,MAAM,GAAG,EAC3E,OAAON,GAAOO,EAAK,IAAIC,EAAE,IAAIF,CAAM,CAAC,CAAC,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYG,GAAYZ,GAAG,CAAC,CAACa,EAAGN,EAAGC,CAAC,IACtBL,GAAOC,GAAMS,EAAE,IAAIN,CAAC,EAAGM,EAAE,IAAIL,CAAC,CAAC,CAAC,EAAE,IAAIL,GAAOK,EAAE,IAAID,CAAC,CAAC,CAAC,CACpE,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYO,GAAUT,GChCvB,OAAS,MAAAU,GAAW,cAAAC,OAAkB,eCAtC,OAAS,MAAAC,GAAW,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,cAAAC,OAAkB,eAEzD,IAAMC,GAASN,GAAG,CAAC,CAACO,EAAWC,CAAK,IAA6B,CAChE,IAAMC,EAAaP,GAAKC,GAAKK,CAAK,EAAGJ,GAAKI,CAAK,CAAC,EAC1CE,EAAUT,GAAOQ,CAAU,EAAE,IAAI,EAAG,EAC1C,OAAOJ,GAAWE,EAAU,IAAIG,CAAO,EAAGH,EAAU,IAAIG,CAAO,EAAGF,CAAK,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,YAAa,KAAM,OAAQ,EACnC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDVM,IAAMG,GAAeC,GAAG,CAAC,CAACC,EAAGC,EAAMC,CAAI,IAC/BC,GAAWF,EAAK,IAAIC,CAAI,EAAGD,EAAK,IAAIC,CAAI,EAAGF,CAAC,EAAE,SAAS,CACrE,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYI,GAAOL,GAAG,CAAC,CAACC,EAAGC,CAAI,IACjBI,GAAOJ,EAAMD,CAAC,EAAE,SAAS,CACvC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EFpBM,IAAMM,GAAOC,GAAG,CAAC,CAACC,EAAIC,EAAGC,EAAGC,CAAS,IAC7BC,GAAKC,GAAQL,EAAIC,EAAGC,CAAC,EAAGC,CAAS,CAC/C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EDZM,IAAMG,GAAOC,GAAG,CAAC,CAACC,EAAIC,EAAGC,EAAKC,CAAS,IAAuC,CAC7E,IAAIC,EAASC,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,EAG9BC,EAASL,EAAE,IAAII,GAAKH,EAAK,CAAC,CAAC,EAAE,MAAM,EACzCI,EAAO,GAAG,OAAOA,EAAO,GAAG,IAAIA,EAAO,CAAC,CAAC,EACxCA,EAAO,GAAG,OAAOA,EAAO,GAAG,IAAI,CAAC,EAAE,IAAI,EAAG,CAAC,EAG1C,IAAMC,EAAa,CACXF,GAAK,EAAG,EAAG,EAAG,CAAC,EACfA,GAAK,EAAG,EAAG,EAAG,CAAC,EACfA,GAAK,EAAG,EAAG,EAAG,CAAC,CACvB,EAEMG,EAAiB,CACfC,GAAK,EAAG,EAAG,CAAC,EACZA,GAAK,EAAG,EAAG,CAAC,EACZA,GAAK,EAAG,EAAG,CAAC,CACpB,EAGA,OAAAC,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChB,IAAMC,EAAaD,EAAE,MAAMD,GAAI,CAAC,CAAC,EAAU,OACnCJ,EAAW,CAAC,EACXK,EAAE,MAAMD,GAAI,CAAC,CAAC,EAAU,OAAOJ,EAAW,CAAC,EAAGA,EAAW,CAAC,CAAC,CACpE,EAEMO,EAAWF,EAAE,MAAMD,GAAI,CAAC,CAAC,EAAU,OACjCH,EAAe,CAAC,EACfI,EAAE,MAAMD,GAAI,CAAC,CAAC,EAAU,OAAOH,EAAe,CAAC,EAAGA,EAAe,CAAC,CAAC,CAC5E,EAGMO,EAAad,EAAU,IAAII,GAAMH,EAAY,IAAIY,CAAc,EAAG,CAAC,CAAC,EAAE,MAAM,EAClFC,EAAU,GAAG,OAAOA,EAAU,GAAG,IAAIA,EAAU,CAAC,CAAC,EACjDA,EAAU,GAAG,OAAOA,EAAU,GAAG,IAAI,CAAC,EAAE,IAAI,EAAG,CAAC,EAGhD,IAAMC,EAAWC,GAAKjB,EAAIM,EAAO,GAAIS,EAAU,GAAIZ,CAAS,EAC5DC,EAAO,UAAWS,EAAkB,IAAIG,CAAe,CAAC,CAChE,CAAC,EAEMZ,CACf,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EKxDD,OAAS,MAAAc,GAAgC,SAAAC,OAAa,eCAtD,OAAS,MAAAC,GAAW,cAAAC,GAAY,SAAAC,OAAa,eAGtC,IAAMC,GAAiBC,GAAG,CAAC,CAACC,EAAGC,EAAMC,EAAGC,CAAI,IAA2C,CACtF,IAAMC,EAAIC,GAAWJ,EAAK,IAAIE,CAAI,EAAGF,EAAK,IAAIE,CAAI,EAAGH,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAC9DG,GAAWJ,EAAK,IAAIE,CAAI,EAAGF,EAAK,IAAIE,CAAI,EAAGH,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,CAClE,EACA,OAAOI,GAAMF,EAAG,EAAG,CAAC,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAASR,GAAG,CAAC,CAACC,EAAGC,EAAMC,CAAC,IAAoC,CACjE,IAAME,EAAII,GAAOP,EAAMD,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAIM,GAAOP,EAAMD,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EACzE,OAAOI,GAAMF,EAAG,EAAG,CAAC,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ED1BM,IAAMK,GAAcC,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAClBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIC,GAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3C,IAAIE,GAAOJ,EAAGC,EAAGC,CAAC,CAAC,CACzC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYG,GAAaP,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,GAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIA,CAAU,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYC,GAAaT,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,GAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIA,CAAU,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYE,GAAaV,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,GAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIA,CAAU,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYG,GAASX,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAmC,CAChE,IAAMI,EAAaF,GAAOJ,EAAGC,EAAIC,EAAU,IAAI,CAAC,CAAC,EAEjD,OADiBH,EAAU,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EACxC,IAAIA,CAAU,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EEhFD,OAAS,MAAAI,GAAsB,SAAAC,GAAO,QAAAC,GAAM,SAAAC,GAAO,SAAAC,OAAa,eAEzD,IAAMC,GAAmBL,GAAG,CAAC,CAACM,CAAK,IAAoB,CACtD,IAAMC,EAAcD,EAAM,YAAY,EAAE,EAAE,IAAIA,EAAM,SAAS,GAAG,CAAC,EACjE,OAAOL,GAAM,CAAC,EAAE,OAAOA,GAAM,CAAC,EAAGM,CAAW,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,KAAM,CAAC,CAC/C,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACS,EAAIC,CAAQ,IAA0B,CAC7D,IAAMC,EAAYP,GAAMD,GAAMM,EAAG,IAAIP,GAAK,EAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAC1DS,EAAU,EAAE,OAAOA,EAAU,EAAE,MAAM,EAAG,CAAC,CAAC,EAC1CA,EAAU,EAAE,OAAOA,EAAU,EAAE,MAAM,EAAG,EAAE,CAAC,EAC3C,IAAMC,EAAUD,EAAU,EAAE,IAAI,CAAC,EAAE,IAAI,EACjCE,EAAUF,EAAU,EAAE,IAAI,CAAC,EAAE,IAAI,EACjCG,EAAUF,EAAQ,IAAIC,CAAO,EAAE,SAASH,EAAS,IAAI,CAAC,CAAQ,EACpE,OAAOT,GAAM,CAAC,EAAE,OAAOA,GAAM,CAAC,EAAGa,CAAO,CAChD,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,WAAY,KAAM,KAAM,CACxC,CACR,CAAC,EAGYC,GAAOP,GC7BpB,OAAS,MAAAQ,OAAuB,eCAhC,OAAS,MAAAC,GAAU,QAAAC,OAAY,eAExB,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAGC,CAAM,IACxBD,EAAE,IAAIC,CAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYC,GAAiBL,GAAG,CAAC,CAACG,CAAC,IACrBA,EAAE,IAAIF,GAAK,EAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDdM,IAAMK,GAAaC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACxBC,GAAKC,GAAeH,CAAE,EAAGC,CAAI,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAeL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACvCC,GAAOH,GAAeH,CAAE,EAAGC,EAAMI,CAAW,CAC1D,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAAST,GE5BtB,OAAS,MAAAU,GAA0B,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,eAE1D,IAAMC,GAAYL,GAAG,CAAC,CAACM,EAAGC,CAAG,IACrBH,GAAIE,EAAGL,GAAM,CAAC,EAAE,IAAIK,CAAC,EAAGC,CAAG,CACzC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAAWR,GAAG,CAAC,CAACM,EAAGC,CAAG,IACpBH,GAAIE,EAAGJ,GAAK,CAAC,EAAE,IAAII,CAAC,EAAGC,CAAG,CACxC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAWT,GAAG,CAAC,CAACM,EAAGC,CAAG,IACpBH,GAAIE,EAAGH,GAAK,CAAC,EAAE,IAAIG,CAAC,EAAGC,CAAG,CACxC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYG,GAAOV,GAAG,CAAC,CAACM,EAAGC,CAAG,IAChBH,GAAIE,EAAGA,EAAE,SAAS,EAAGC,CAAG,CACtC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EC5CD,OAAS,MAAAI,OAAuB,eCAhC,OAAS,MAAAC,GAAiB,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,eAE1C,IAAMC,GAASJ,GAAG,CAAC,CAACK,CAAE,IAAqB,CAEjD,IAAMC,EAAaD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAC1CC,EAAW,OAAOL,GAAIK,CAAU,CAAC,EAGjC,IAAMC,EAAUJ,GAAM,OAAQ,EAC9B,OAAOD,GACND,GAAIK,EAAW,CAAC,EAChBA,EAAW,EAAE,IAAIC,CAAO,EAAE,IAAID,EAAW,EAAE,IAAI,CAAC,CAAC,CAClD,CACD,CAAC,EAAE,UAAU,CACZ,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CACtC,CAAC,EDZM,IAAME,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACrBC,GAAKC,GAAOH,CAAE,EAAGC,CAAI,CACnC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACpCC,GAAOH,GAAOH,CAAE,EAAGC,EAAMI,CAAW,CAClD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAAMT,GE5BnB,OAAS,MAAAU,GAA6B,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAGxD,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,EAAKC,EAAOC,CAAM,IAAuC,CACjF,IAAMC,EAAOJ,EAAG,IAAIC,CAAG,EACjBI,EAASC,GAAWF,EAAK,IAAI,EAAG,EAAGD,CAAM,EAC/C,OAAOI,GAAKL,EAAO,CAAC,EAAE,IAAIG,CAAM,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYG,GAAcT,GAAG,CAAC,CAACC,EAAIC,CAAG,IACxBH,GAAQE,EAAIC,EAAKQ,GAAK,EAAG,EAAG,CAAC,EAAGC,GAAM,GAAI,CAAC,CACzD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYC,GAAQH,GC7BrB,OAAS,MAAAI,GAAiB,SAAAC,OAAa,eCAvC,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAeF,GAAG,CAAC,CAACG,CAAE,IAAc,CACzC,IAAMC,EAAeD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAC5C,OAAOC,EAAa,EAAE,IAAI,EAAE,IAAIA,EAAa,EAAE,IAAI,CAAC,CAC5D,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAUL,GAAG,CAAC,CAACG,EAAIG,CAAC,IAAoB,CAC7C,IAAMF,EAAeD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAC5C,OAAOC,EAAa,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIF,EAAa,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAI,CAAC,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBP,GAAG,CAAC,CAACG,EAAIG,CAAC,IACzBD,GAAQF,EAAIF,GAAKK,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYE,GAAiBR,GAAG,CAAC,CAACS,EAAGC,EAAGC,CAAC,IAA2B,CAC7D,IAAMC,EAAIH,EAAE,IAAI,EAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,IAAIC,CAAC,EAAE,IAAIT,GAAKU,CAAC,CAAC,EAAE,MAAM,EAC9D,OAAOC,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAID,CAAC,CAC/D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EDxCM,IAAME,GAAaC,GAAG,CAAC,CAACC,EAAIC,EAAMC,CAAW,IACrCC,GAAOC,GAAQJ,EAAIC,CAAI,EAAGI,GAAM,CAAC,EAAGH,CAAW,CAC7D,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYI,GAAoBP,GAAG,CAAC,CAACC,EAAIC,EAAMC,CAAW,IAC5CC,GAAOI,GAAeP,EAAIC,CAAI,EAAGI,GAAM,CAAC,EAAGH,CAAW,CACpE,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYM,GAAWT,GAAG,CAAC,CAACC,EAAIC,CAAI,IACtBQ,GAAKL,GAAQJ,EAAIC,CAAI,EAAGI,GAAM,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EAEYK,GAAkBX,GAAG,CAAC,CAACC,EAAIC,CAAI,IAC7BQ,GAAKF,GAAeP,EAAIC,CAAI,EAAGI,GAAM,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYM,GAAOH,GEnDpB,OAAS,MAAAI,OAAuB,eCAhC,OAAS,MAAAC,GAAiB,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,eAE1C,IAAMC,GAASJ,GAAG,CAAC,CAACK,CAAE,IAAqB,CACjD,IAAMC,EAAaD,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EACtCE,EAAUJ,GAAM,OAAQ,EAC9B,OAAOF,GACNC,GAAII,EAAW,CAAC,EAAE,IAAIC,CAAO,EAAE,IAAID,EAAW,EAAE,IAAI,CAAC,CAAC,EACtDA,EAAW,EAAE,IAAI,EAAE,CACpB,CACD,CAAC,EAAE,UAAU,CACZ,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CACtC,CAAC,EDRM,IAAME,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACrBC,GAAKC,GAAOH,CAAE,EAAGC,CAAI,CACnC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACpCC,GAAOH,GAAOH,CAAE,EAAGC,EAAMI,CAAW,CAClD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAAMT,GE5BnB,OAAS,UAAAU,GAAQ,QAAAC,OAAY,kBAEtB,IAAMC,GAAOF,GAAO,CACnB,UAAWC,GAAK,EAChB,UAAWA,GAAK,CACxB,CAAC,ECLD,OAAS,MAAAE,OAAgB,kBAGlB,IAAMC,GAAeD,GAAG,CAAC,CAACE,CAAG,IACrBA,EAAI,UAAU,IAAIA,EAAI,SAAS,EAAE,IAAI,EAAG,CACtD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,OAAsB,kBAGxB,IAAMC,GAAcD,GAAG,CAAC,CAACE,EAAKC,CAAK,IAC3BA,EAAM,EACJ,YAAYD,EAAI,UAAU,CAAC,EAC3B,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,EAC1C,IAAIC,EAAM,EAAE,YAAYD,EAAI,UAAU,CAAC,CAAC,EACxC,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,EAC1C,IAAIC,EAAM,EAAE,YAAYD,EAAI,UAAU,CAAC,CAAC,EACxC,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EClBD,OAAS,MAAAE,OAAgB,kBAGlB,IAAMC,GAAWD,GAAG,CAAC,CAACE,CAAG,IACjBA,EAAI,UAAU,IAAIA,EAAI,SAAS,EAAE,IAAI,CACnD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,OAAuB,kBAGzB,IAAMC,GAASC,GAAG,CAAC,CAACC,EAAKC,CAAK,IACtBC,GAAK,CACJ,UAAWF,EAAI,UAAU,IAAIC,CAAK,EAClC,UAAWD,EAAI,UAAU,IAAIC,CAAK,CAC1C,CAAC,CACR,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,OAAY,kBAG9B,IAAMC,GAAgBF,GAAG,CAAC,CAACG,EAAKC,EAAWC,CAAM,IAAoC,CACpF,IAAMC,EAAOH,EAAI,UAAU,IAAIC,CAAS,EAAE,IAAIC,CAAM,EAC9CE,EAAOJ,EAAI,UAAU,IAAIC,CAAS,EAAE,IAAIC,CAAM,EAC9CG,EAAKF,EAAK,IAAIC,CAAI,EAClBE,EAAKH,EAAK,IAAIC,CAAI,EAClBG,EAAQF,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EAC/BG,EAAOF,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EACpC,OAAOR,GAAKS,EAAOC,CAAI,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,ECnBD,OAAS,MAAAC,GAAiB,OAAAC,GAAK,OAAAC,OAAW,kBAInC,IAAMC,GAASC,GAAG,CAAC,CAACC,CAAG,IAA4B,CAClD,IAAMC,EAAOC,GAASF,CAAG,EAAE,IAAI,EAAG,EAAE,MAAM,MAAM,EAC1CG,EAASH,EAAI,UAAU,IAAIC,CAAI,EAAE,MAAM,QAAQ,EAC/CG,EAASC,GAAIC,GAAIL,EAAK,CAAC,EAAGI,GAAIC,GAAIL,EAAK,CAAC,EAAGK,GAAIL,EAAK,CAAC,CAAC,CAAC,EAAE,MAAM,QAAQ,EAC7E,OAAOM,GAAK,CACJ,UAAWJ,EAAO,IAAIC,CAAM,EAC5B,UAAWD,EAAO,IAAIC,CAAM,CACpC,CAAC,CACT,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EChBD,OAAS,MAAAI,GAAW,UAAAC,GAAQ,SAAAC,OAAa,kBAGlC,IAAMC,GAAOH,GAAG,CAAC,CAACI,CAAG,IACbH,GAAOC,GAAME,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAGA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAG,CACvE,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,GAAU,UAAAC,GAAQ,SAAAC,GAAO,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,kBAInD,IAAMC,GAAsBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAgC,CACvE,IAAMC,EAAMC,GAAIJ,EAAGA,CAAC,EAAE,MAAM,KAAK,EAC3BK,EAAMD,GAAIJ,EAAGC,CAAC,EAAE,MAAM,KAAK,EAC3BK,EAAMF,GAAIH,EAAGA,CAAC,EAAE,MAAM,KAAK,EAC3BM,EAAMH,GAAIF,EAAGF,CAAC,EAAE,MAAM,KAAK,EAC3BQ,EAAMJ,GAAIF,EAAGD,CAAC,EAAE,MAAM,KAAK,EAC3BQ,EAAQN,EAAI,IAAIG,CAAG,EAAE,IAAID,EAAI,IAAIA,CAAG,CAAC,EAAE,MAAM,OAAO,EACpDK,EAAIJ,EAAI,IAAIC,CAAG,EAAE,IAAIF,EAAI,IAAIG,CAAG,CAAC,EAAE,IAAIC,CAAK,EAAE,MAAM,GAAG,EACvDE,EAAIR,EAAI,IAAIK,CAAG,EAAE,IAAIH,EAAI,IAAIE,CAAG,CAAC,EAAE,IAAIE,CAAK,EAAE,MAAM,GAAG,EAC7D,OAAOG,GAAKC,GAAM,CAAC,EAAE,IAAIH,CAAC,EAAE,IAAIC,CAAC,EAAGD,EAAGC,CAAC,CAChD,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYG,GAAcf,GAAG,CAAC,CAACgB,CAAG,IACpBjB,GAAoBiB,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAA0BjB,GAAG,CAAC,CAACgB,EAAKE,CAAG,IAAkC,CAC9E,IAAMjB,EAAIe,EAAI,EACRd,EAAIc,EAAI,EACRb,EAAIa,EAAI,EACRG,EAAKlB,EAAE,IAAIiB,CAAG,EAAE,MAAM,IAAI,EAC1BE,EAAKlB,EAAE,IAAIgB,CAAG,EAAE,MAAM,IAAI,EAC1BG,EAAKlB,EAAE,IAAIe,CAAG,EAAE,MAAM,IAAI,EAC1BI,EAAYC,GAAKP,CAAG,EAAE,MAAM,MAAM,EACxC,OAAOH,GAAKW,GAAOC,GAAML,EAAIC,CAAE,CAAC,EAAGG,GAAOC,GAAMJ,EAAIF,CAAE,CAAC,EAAGK,GAAOC,GAAMN,EAAIC,CAAE,CAAC,CAAC,EAAE,IAAIE,CAAS,CACtG,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECjDD,OAAS,MAAAI,OAAgB,kBAGlB,IAAMC,GAAmBD,GAAG,CAAC,CAACE,CAAG,IACzBA,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAI,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,GAAU,OAAAC,GAAK,UAAAC,GAAQ,SAAAC,GAAO,aAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAW,SAAAC,GAAO,MAAAC,GAAI,UAAAC,OAAc,kBAIpF,IAAMC,GAAyBC,GAAG,CAAC,CAACC,EAAKC,EAAWC,CAAG,IAAwC,CAC9F,IAAM,EAAIF,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAKF,EAAE,IAAI,CAAC,EACZG,EAAKF,EAAE,IAAI,CAAC,EACZG,EAAIL,EAAI,IAAIM,GAAIP,EAAWC,EAAI,IAAI,CAAC,CAAC,EAAE,IAAID,CAAS,CAAC,EACrDQ,EAAKF,EAAE,IAAI,CAAC,EACZG,EAAUC,GAAoBN,EAAIC,EAAIG,CAAE,EAE9C,OAAAG,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMG,EAAKT,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBW,EAAIC,GAAOF,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIK,EAAIN,EAAE,IAAIJ,CAAC,CAAC,EAAE,IAAIW,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAOjB,EAAE,IAAIa,EAAE,IAAIF,CAAC,EAAE,IAAID,CAAE,CAAC,CAAC,CACtC,CAAC,EAEDD,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMW,EAAK,EAAE,IAAIjB,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAIC,GAAOM,CAAE,EAAE,MAAM,GAAG,EACxBL,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIa,EAAId,EAAE,IAAIH,CAAC,CAAC,EAAE,IAAIU,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAOhB,EAAE,IAAIY,EAAE,IAAIF,CAAC,EAAE,IAAIO,CAAE,CAAC,CAAC,CACtC,CAAC,EAEDT,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMI,EAAIC,GAAOV,CAAE,EAAE,MAAM,GAAG,EACxBW,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIH,EAAIE,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIO,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAO,EAAE,IAAIJ,EAAE,IAAIF,CAAC,EAAE,IAAIT,CAAE,CAAC,CAAC,CACtC,CAAC,EAEM,EAAE,IAAIK,EAAQ,CAAC,EAAE,IAAIP,EAAE,IAAIO,EAAQ,CAAC,CAAC,EAAE,IAAIN,EAAE,IAAIM,EAAQ,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYY,GAAevB,GAAG,CAAC,CAACC,EAAKE,CAAG,IAAkC,CACnE,IAAMqB,EAAIvB,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAKF,EAAE,IAAIoB,CAAC,EACZjB,EAAKF,EAAE,IAAImB,CAAC,EACZC,EAASC,GAAUC,GAAMpB,EAAID,CAAE,CAAC,EAChCE,EAAIL,EAAI,IAAIM,GAAIgB,EAAQtB,EAAI,IAAIqB,CAAC,CAAC,EAAE,IAAIC,CAAM,CAAC,EAC/Cf,EAAKF,EAAE,IAAIgB,CAAC,EACZb,EAAUC,GAAoBN,EAAIC,EAAIG,CAAE,EAE9C,OAAAG,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMG,EAAKT,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBW,EAAIC,GAAOF,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIK,EAAIN,EAAE,IAAIJ,CAAC,CAAC,EAAE,IAAIW,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAOjB,EAAE,IAAIa,EAAE,IAAIF,CAAC,EAAE,IAAID,CAAE,CAAC,CAAC,CACtC,CAAC,EAEDD,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMW,EAAKE,EAAE,IAAInB,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAIC,GAAOM,CAAE,EAAE,MAAM,GAAG,EACxBL,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIa,EAAId,EAAE,IAAIH,CAAC,CAAC,EAAE,IAAIU,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAOhB,EAAE,IAAIY,EAAE,IAAIF,CAAC,EAAE,IAAIO,CAAE,CAAC,CAAC,CACtC,CAAC,EAEDT,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMI,EAAIC,GAAOV,CAAE,EAAE,MAAM,GAAG,EACxBW,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIH,EAAIE,EAAE,IAAIgB,CAAC,CAAC,EAAE,IAAIT,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnEM,GAAOG,EAAE,IAAIP,EAAE,IAAIF,CAAC,EAAE,IAAIT,CAAE,CAAC,CAAC,CACtC,CAAC,EAEMkB,EAAE,IAAIb,EAAQ,CAAC,EAAE,IAAIP,EAAE,IAAIO,EAAQ,CAAC,CAAC,EAAE,IAAIN,EAAE,IAAIM,EAAQ,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECpFD,OAAS,MAAAiB,GAAgB,SAAAC,GAAO,OAAAC,OAAW,kBAGpC,IAAMC,GAAkBH,GAAG,CAAC,CAACI,EAAKC,CAAG,IAAkC,CACtE,IAAMC,EAASF,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCE,EAASH,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCG,EAASJ,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCI,EAAIR,GAAMM,EAAQC,CAAM,EAAE,MAAM,GAAG,EACnCE,EAAIT,GAAMO,EAAQF,CAAM,EAAE,MAAM,GAAG,EACnCK,EAAIV,GAAMK,EAAQC,CAAM,EAAE,MAAM,GAAG,EACzC,OAAOL,GAAIO,EAAGC,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAIR,GAAIO,EAAGE,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EClBD,OAAS,MAAAC,GAAiB,SAAAC,GAAO,OAAAC,GAAK,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,kBCA7D,OAAS,MAAAC,OAAU,eAGZ,IAAMC,GAAWD,GAAG,CAAC,CAACE,CAAC,IACdA,EAAW,IAAIA,CAAS,CACvC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDLM,IAAMC,GAAaC,GAAG,CAAC,CAACC,EAAKC,CAAG,IAAmC,CAClE,IAAMC,EAAIF,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAMF,EAAE,IAAID,CAAC,EACbI,EAAKL,EAAI,IAAIC,CAAC,EACdK,EAAMH,EAAE,IAAID,CAAC,EACbK,EAAKP,EAAI,IAAIE,CAAC,EACdM,EAAMP,EAAE,IAAIE,CAAC,EACbM,EAAKT,EAAI,IAAIG,CAAC,EACdO,EAAMC,GAAMP,EAAKI,CAAG,EAEpBI,EAAKC,GAAKC,GAAIH,GAAMP,EAAKM,CAAG,EAAGL,CAAE,CAAC,EAClCU,EAAKF,GAAKC,GAAIH,GAAML,EAAKI,CAAG,EAAGH,CAAE,CAAC,EAClCS,EAAKH,GAAKC,GAAIH,GAAMH,EAAKE,CAAG,EAAGD,CAAE,CAAC,EAClCQ,EAAUL,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAE3BE,EAAQC,GAASf,EAAI,IAAIU,GAAIV,EAAKC,CAAE,EAAE,IAAIc,GAASf,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ee,EAAQD,GAASb,EAAI,IAAIQ,GAAIR,EAAKC,CAAE,EAAE,IAAIY,GAASb,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ec,EAAQF,GAASX,EAAI,IAAIM,GAAIN,EAAKC,CAAE,EAAE,IAAIU,GAASX,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ea,EAAeC,GAAIA,GAAIL,EAAOE,CAAK,EAAGC,CAAK,EAE3CG,EAAgBV,GAAIJ,EAAKL,CAAE,EAAE,IAAIS,GAAIJ,EAAKL,CAAE,CAAC,EAAE,IAAIc,GAAST,CAAG,CAAC,EAGtE,OAAOe,GAAKH,EAAa,OAAOE,EAAeP,EAAQ,SAAS,CAAC,CAAC,CAAC,CAC3E,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EErCD,OAAS,MAAAS,GAAiB,SAAAC,GAAO,OAAAC,GAAK,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,OAAY,kBAG1D,IAAMC,GAAMF,GAAO,CAClB,OAAQC,GAAK,EACb,UAAWA,GAAK,CACxB,CAAC,EAIYE,GAAoBP,GAAG,CAAC,CAACQ,EAAKC,EAAWC,CAAM,IAAyC,CAC7F,IAAMC,EAAOH,EAAI,EAAE,IAAIA,EAAI,CAAC,EACtBI,EAAOJ,EAAI,EAAE,IAAIA,EAAI,CAAC,EACtBK,EAAOJ,EAAU,IAAID,EAAI,CAAC,EAC1BM,EAAQb,GAAMU,EAAMC,CAAI,EACxBG,EAAId,GAAMY,EAAMH,CAAM,EACtBM,EAAIb,GAAM,CAAC,EAAE,IAAID,GAAIQ,EAAQI,CAAK,CAAC,EACnC,EAAIE,EAAE,IAAId,GAAIa,EAAGH,CAAI,EAAE,OAAO,CAAC,EAC/BK,EAAID,EAAE,IAAId,GAAIa,EAAGJ,CAAI,CAAC,EACtBO,EAAIF,EAAE,IAAId,GAAIY,EAAOD,CAAI,EAAE,OAAO,CAAC,EAEnCM,EAAY,EACT,SAAS,CAAC,EACV,GAAG,EAAE,YAAY,CAAC,CAAC,EACnB,GAAGF,EAAE,SAAS,CAAC,CAAC,EAChB,GAAG,EAAE,IAAIA,CAAC,EAAE,YAAY,CAAC,CAAC,EAC1B,GAAGC,EAAE,SAAS,CAAC,CAAC,EAEzB,OAAOf,GAAM,WAAS,EAAE,OAAOe,EAAGC,CAAS,CACnD,CAAC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYC,GAAuBpB,GAAG,CAAC,CAACQ,EAAKa,CAAG,IAClCd,GAAkBC,EAAKa,EAAI,OAAQA,EAAI,SAAS,CAC9D,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EChDD,OAAS,MAAAC,GAAU,SAAAC,GAAO,aAAAC,OAAiB,kBAGpC,IAAMC,GAASH,GAAG,CAAC,CAACI,CAAG,IACfF,GAAUD,GAAMG,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAGA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAiB,UAAAC,GAAQ,QAAAC,GAAM,OAAAC,OAAW,kBAK5C,IAAMC,GAA2BC,GAAG,CAAC,CAACC,EAAKC,EAAWC,CAAG,IAAyC,CACjG,IAAMC,EAAUC,GAAuBJ,EAAKC,EAAWC,CAAG,EAAE,MAAM,SAAS,EACrEG,EAAQH,EAAI,IAAIC,CAAO,EAAE,MAAM,OAAO,EACtCG,EAAWC,GAAOF,CAAK,EAAE,MAAM,UAAU,EAC/C,OAAOC,EAAS,IAAIE,GAAKC,GAAIJ,EAAM,IAAIC,CAAQ,EAAGL,CAAS,CAAC,CAAC,CACrE,CAAC,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYS,GAAiBX,GAAG,CAAC,CAACC,EAAKE,CAAG,IAAmC,CACtE,IAAMD,EAAYU,GAAOX,CAAG,EAAE,MAAM,WAAW,EAC/C,OAAOF,GAAyBE,EAAKC,EAAWC,CAAG,CAC3D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EC9BD,OAAS,UAAAU,GAAQ,QAAAC,OAAY,kBAEtB,IAAMC,GAAWF,GAAO,CACvB,EAAGC,GAAK,EACR,EAAGA,GAAK,EACR,EAAGA,GAAK,CAChB,CAAC,ECND,OAAS,MAAAE,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,MAAuB,eCAzE,OAAS,MAAAC,OAAsC,eAM/C,SAASC,GAAIC,EAAS,CACd,OAAOA,EAAE,IACDA,EACS,IAAI,GAAG,EACP,MAAM,EACN,IAAI,GAAG,CACxB,CACR,CAEO,IAAMC,GAASH,GAAG,CAAC,CAACE,CAAC,IACbD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYE,GAAaJ,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAaL,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAaN,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC7CD,OAAS,MAAAK,OAAsC,eAO/C,SAASC,GAAIC,EAAS,CACd,OAAOA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,CAAC,CACrC,CAEO,IAAMC,GAAUC,GAAG,CAAC,CAACF,CAAC,IACdG,GAAOJ,GAAIC,CAAC,CAAC,CAC3B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYI,GAAcF,GAAG,CAAC,CAACF,CAAC,IAClBK,GAAWN,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYM,GAAcJ,GAAG,CAAC,CAACF,CAAC,IAClBO,GAAWR,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,EAAcN,GAAG,CAAC,CAACF,CAAC,IAClBS,GAAWV,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECzCD,OAAS,MAAAU,OAAa,eAEf,IAAMC,EAAgBD,GAAG,CAAC,CAACE,CAAC,IACpBA,EAAE,IAAI,gBAAiB,EAAE,IAAI,gBAAgB,CAC3D,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAUD,GAAG,CAAC,CAACE,CAAC,IAAc,CAC1C,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAQF,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,OAAO,EAC3D,OAAOC,EAAG,IAAIC,CAAK,CACpB,CAAC,EAAE,UAAU,CACZ,KAAM,UACN,KAAM,OACN,OAAQ,CACP,CACC,KAAM,IACN,KAAM,MACP,CACD,CACD,CAAC,EJTM,IAAMC,GAAaC,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAKD,EAAE,KAAK,MAAM,EAAE,IAAIE,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACpDC,EAAKH,EAAE,KAAK,MAAM,EAAE,IAAIE,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAC1DD,EAAG,OAAOG,GAAWH,CAAE,CAAC,EACxB,IAAMI,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EACvBM,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EAEvBM,EADIC,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,GAAG,EAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC/CK,EAAKF,EAAG,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,IAAI,EACjCG,EAAKH,EAAG,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzCA,EAAG,OAAOA,EAAG,IAAIG,CAAE,CAAC,EACpB,IAAMC,EAAMC,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCI,EAAMD,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCK,EAAMF,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCM,EAAMH,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCO,EAAOC,EAAcjB,EAAKW,EAAI,IAAIA,CAAG,EAAGG,EAAI,IAAIA,CAAG,EAAGD,EAAI,IAAIA,CAAG,EAAGE,EAAI,IAAIA,CAAG,CAAC,CAAC,EAAE,MAAM,MAAM,EACrGJ,EAAI,UAAUK,EAAK,CAAC,EACpBF,EAAI,UAAUE,EAAK,CAAC,EACpBH,EAAI,UAAUG,EAAK,CAAC,EACpBD,EAAI,UAAUC,EAAK,CAAC,EACpB,IAAME,EAAMP,EAAI,IAAIC,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ca,EAAMN,EAAI,IAAID,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Cc,EAAMN,EAAI,IAAIF,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ce,EAAMN,EAAI,IAAIH,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3CgB,EAAUC,GAAQtB,EAAG,EAAE,EAAE,MAAM,SAAS,EACxCuB,EAAMZ,GAAKM,EAAKE,CAAG,EAAE,IAAIR,GAAKO,EAAKE,CAAG,EAAGC,EAAQ,CAAC,EAAE,MAAM,KAAK,EAErE,OADaE,EAAI,EAAE,IAAIA,EAAI,EAAGF,EAAQ,CAAC,EAC3B,IAAI,GAAG,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAa5B,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAM4B,EAAM5B,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3B6B,EAAMD,EAAI,IAAIE,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACxCF,EAAI,OAAOG,GAAWH,CAAG,CAAC,EAC1BC,EAAI,OAAOE,GAAWF,CAAG,CAAC,EAC1B,IAAMG,EAAMhC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BiC,EAAMD,EAAI,IAAIF,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EAClCzB,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAMF,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BG,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAMvC,EAAK,EAAG,EAAE,IAAIqC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAKvC,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCqC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKrC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjDsC,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAKtC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAMyC,EAAML,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BM,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAM3C,EAAK,EAAG,EAAE,IAAIyC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAK3C,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCyC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKzC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD0C,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAK1C,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAM6C,EAAOjB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOlB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOnB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOpB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAOrB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOtB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOvB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOxB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAQpC,EAAcjB,EAAK6C,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUQ,EAAM,CAAC,EACtBN,EAAK,UAAUM,EAAM,CAAC,EACtBP,EAAK,UAAUO,EAAM,CAAC,EACtBL,EAAK,UAAUK,EAAM,CAAC,EACtB,IAAMC,EAAQrC,EAAcjB,EAAKiD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUK,EAAM,CAAC,EACtBH,EAAK,UAAUG,EAAM,CAAC,EACtBJ,EAAK,UAAUI,EAAM,CAAC,EACtBF,EAAK,UAAUE,EAAM,CAAC,EACtB,IAAMC,EAAOV,EAAK,IAAIf,CAAG,EAAE,MAAM,MAAM,EACjC0B,EAAOV,EAAK,IAAIlB,GAAKG,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD2B,EAAOV,EAAK,IAAInB,GAAKE,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD4B,EAAOV,EAAK,IAAIpB,GAAKG,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAIrB,GAAKE,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAItB,GAAKG,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD8B,EAAOV,EAAK,IAAIvB,GAAKE,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD+B,EAAOV,EAAK,IAAIrB,CAAG,EAAE,MAAM,MAAM,EACjCgC,EAAWxC,GAAQO,CAAG,EAAE,MAAM,UAAU,EACxCkC,EAAMhE,EAAKuD,EAAMC,EAAMC,EAAMC,CAAI,EAAE,IAAI1D,EAAK2D,EAAMC,EAAMC,EAAMC,CAAI,EAAGC,EAAS,CAAC,EAAE,MAAM,KAAK,EAC5FE,EAAOD,EAAI,GAAG,IAAIA,EAAI,GAAID,EAAS,CAAC,EAAE,MAAM,MAAM,EAExD,OADcE,EAAK,EAAE,IAAIA,EAAK,EAAGF,EAAS,CAAC,EAC9B,IAAI,GAAG,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAarE,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAM4B,EAAM5B,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3B6B,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAClCA,EAAI,OAAOxB,GAAWwB,CAAG,CAAC,EAC1BC,EAAI,OAAOzB,GAAWyB,CAAG,CAAC,EAC1B,IAAMG,EAAMhC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BiC,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAC5B3B,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMhC,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAMjC,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCwC,EAAMnE,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChC0C,EAAMpE,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CoC,EAAQ7D,EAAY2B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ9D,EAAY2B,EAAK,IAAIiC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ/D,EAAY4B,EAAK,IAAI+B,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAQhE,EAAY4B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAOJ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCK,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO5E,EAAK,GAAI,EAAE,IAAIyE,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK5E,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CyE,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKzE,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD0E,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAK1E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAM8E,EAAOR,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCS,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOjF,EAAK,GAAI,EAAE,IAAI8E,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKjF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5C8E,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAK9E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD+E,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAK/E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMmF,EAAOZ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCa,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOtF,EAAK,GAAI,EAAE,IAAImF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKtF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CmF,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKnF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDoF,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAKpF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMwF,EAAOhB,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCiB,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO3F,EAAK,GAAI,EAAE,IAAIwF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK3F,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CwF,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKxF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDyF,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAKzF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAM6F,EAAQ7F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,EAAQ9F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DmB,EAAQ/F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DoB,EAAQhG,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQjG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DY,GAAQlG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Da,GAAQnG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Dc,GAAQpG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,GAAQrG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQtG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DsB,GAAQvG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DuB,GAAQxG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DwB,EAAQzG,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,EAAQ1G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DgB,EAAQ3G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DiB,GAAQ5G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,GAAS5F,EACPjB,EAAK6F,EAAM,IAAIA,CAAK,EAAGE,EAAM,IAAIA,CAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,EAAM,IAAIA,CAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUgB,GAAO,CAAC,EACxBd,EAAM,UAAUc,GAAO,CAAC,EACxBf,EAAM,UAAUe,GAAO,CAAC,EACxBb,EAAM,UAAUa,GAAO,CAAC,EACxB,IAAMC,GAAS7F,EACPjB,EAAKqG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUS,GAAO,CAAC,EACxBP,GAAM,UAAUO,GAAO,CAAC,EACxBR,GAAM,UAAUQ,GAAO,CAAC,EACxBN,GAAM,UAAUM,GAAO,CAAC,EACxB,IAAMC,GAAS9F,EACPjB,EAAKiG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUc,GAAO,CAAC,EACxBZ,GAAM,UAAUY,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxBX,GAAM,UAAUW,GAAO,CAAC,EACxB,IAAMC,GAAS/F,EACPjB,EAAKyG,EAAM,IAAIA,CAAK,EAAGE,EAAM,IAAIA,CAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUO,GAAO,CAAC,EACxBL,EAAM,UAAUK,GAAO,CAAC,EACxBN,EAAM,UAAUM,GAAO,CAAC,EACxBJ,GAAM,UAAUI,GAAO,CAAC,EACxB,IAAMC,GAAQpB,EAAM,IAAI/D,CAAG,EAAE,MAAM,OAAO,EACpCoF,GAAQpB,EAAM,IAAI9F,EAAK+B,EAAI,EAAGD,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDqF,GAAQpB,EAAM,IAAI/F,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DsF,GAAQpB,EAAM,IAAIhG,EAAK+B,EAAI,GAAID,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrDuF,GAAQpB,GAAM,IAAIjG,EAAK8B,EAAI,GAAIC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3DwF,GAAQpB,GAAM,IAAIlG,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjEyF,GAAQpB,GAAM,IAAInG,EAAK8B,EAAI,EAAGC,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D0F,GAAQpB,GAAM,IAAIpG,EAAK+B,EAAI,IAAKD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAIrG,EAAK8B,EAAI,IAAKC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAItG,EAAK+B,EAAI,EAAGD,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D4F,GAAQpB,GAAM,IAAIvG,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjE6F,GAAQpB,GAAM,IAAIxG,EAAK+B,EAAI,GAAID,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D8F,GAAQpB,EAAM,IAAIzG,EAAK8B,EAAI,GAAIC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrD+F,GAAQpB,EAAM,IAAI1G,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DgG,GAAQpB,EAAM,IAAI3G,EAAK8B,EAAI,EAAGC,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDiG,GAAQpB,GAAM,IAAI7E,CAAG,EAAE,MAAM,OAAO,EACpCkG,GAAY1G,GAAQO,CAAG,EAAE,MAAM,WAAW,EAC1CoG,GAAOlI,EAAKiH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIpH,EAAKyH,GAAOC,GAAOC,GAAOC,EAAK,EAAGK,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGE,GAAOnI,EAAKqH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIxH,EAAK6H,GAAOC,GAAOC,GAAOC,EAAK,EAAGC,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGG,GAAOF,GAAK,IAAIC,GAAMF,GAAU,CAAC,EAAE,MAAM,MAAM,EAC/CI,GAAQD,GAAK,GAAG,IAAIA,GAAK,GAAIH,GAAU,CAAC,EAAE,MAAM,OAAO,EAE7D,OADeI,GAAM,EAAE,IAAIA,GAAM,EAAGJ,GAAU,CAAC,EACjC,IAAI,GAAG,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EK9OD,OAAS,MAAAK,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eCA9D,OAAS,MAAAC,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,EAAM,SAAAC,OAAa,eCArE,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE5C,IAAMC,GAAQJ,GAAG,CAAC,CAACK,EAAGC,CAAE,IAA2B,CAClD,IAAMC,EAAON,GAAK,EAAG,EAAG,EAAG,EAAE,EAAE,MAAM,MAAM,EACrCO,EAAIP,GAAK,CAAC,EAAE,MAAM,GAAG,EACrBQ,EAAIR,GAAK,CAAC,EAAE,MAAM,GAAG,EAC3B,OAAAO,EAAE,IAAMN,GAAKG,EAAGA,EAAGA,CAAC,EAAE,IAAIC,EAAG,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAI,CAAC,EACxEE,EAAE,EAAIL,GAAM,GAAG,EAAE,IAAIK,EAAE,IAAI,IAAI,EAAE,IAAID,EAAK,GAAG,CAAC,EAC9CE,EAAE,OAAOR,GAAKO,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,CAAC,CAAC,EACzFA,EAAE,IAAMA,EAAE,IAAI,IAAIC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,GAAG,CAAC,EACzCD,CACf,CAAC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EDZM,IAAME,GAAaC,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIC,EAAK,iBAAmB,iBAAmB,kBAAoB,gBAAiB,EAAE,MAAM,GAAG,EAC/FC,EAAIH,EAAE,IAAIA,EAAE,IAAIC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EACxCG,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,EACzCI,EAAKC,GAAK,EAAG,CAAC,EAAE,OAAOA,GAAK,EAAG,CAAC,EAAGF,EAAG,EAAE,YAAYA,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACrEG,EAAMH,EAAG,KAAK,IAAIH,EAAE,IAAI,EAAE,MAAM,KAAK,EAC3CM,EAAI,GAAKA,EAAI,GAAG,IAAIF,CAAE,EACtBF,EAAE,OAAOK,GAAWL,CAAC,CAAC,EACtB,IAAMM,EAAIC,GACFA,GAAYP,EAAE,EAAE,IAAIQ,GAAK,EAAGN,EAAG,EAAG,CAAC,CAAC,CAAC,EAC5B,IAAIF,EAAE,CAAC,EACP,IAAIQ,GAAK,EAAGN,EAAG,EAAG,CAAC,CAAC,CACrC,EAAE,MAAM,GAAG,EACLO,EAAIC,GAAM,EAAG,EACV,IAAIF,GAAKP,EAAG,IAAIA,CAAE,EAAGG,EAAI,GAAG,IAAIA,EAAI,EAAE,EAAGA,EAAI,GAAG,IAAIA,EAAI,EAAE,CAAC,CAAC,EAC5D,IAAI,CAAC,EACL,MAAM,GAAG,EAClBK,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACjBA,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACjB,IAAME,EAAIL,EAAE,IAAIR,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAChDc,EAAID,EAAE,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EAC9BE,EAAKF,EAAE,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAClCG,EAAKH,EAAE,IAAIE,CAAE,EAAE,MAAM,IAAI,EAC/BJ,EAAE,UAAUC,GAAM,gBAAgB,EAAE,IAAIA,GAAM,eAAgB,EAAE,IAAII,EAAG,IAAIA,CAAE,EAAE,IAAIF,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9F,IAAMG,EAAIP,GAAKM,EAAG,EAAE,IAAIb,EAAG,CAAC,EAAE,IAAIW,EAAE,EAAE,IAAIX,EAAG,CAAC,CAAC,EAAGa,EAAG,GAAG,IAAIV,EAAI,EAAE,EAAE,IAAIQ,EAAE,GAAG,IAAIR,EAAI,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EACpG,OAAOM,GAAM,GAAG,EAAE,IAAID,EAAE,IAAIM,CAAC,CAAC,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAapB,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIK,GAAK,mBAAO,iBAAK,EAAE,MAAM,GAAG,EAChCc,EAAIlB,EAAK,EAAG,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAChCC,EAAIH,EAAE,IAAIA,EAAE,IAAIC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EACzCG,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,GAAG,CAAC,EAAE,MAAM,IAAI,EAC1CiB,EAAId,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,GAAG,EACjCiB,EAAIR,GAAM,CAAC,EAAE,IAAIK,CAAC,EAAE,MAAM,GAAG,EAC7Bb,EAAKa,EAAE,IAAI,IAAIG,EAAE,GAAG,EAAE,MAAM,IAAI,EAChCC,EAAKJ,EAAE,IAAI,IAAIG,EAAE,GAAG,EAAE,MAAM,IAAI,EAChCE,EAAKnB,EAAG,IAAIC,CAAE,EAAE,IAAIJ,EAAE,GAAG,EAAE,MAAM,IAAI,EACrCuB,EAAKpB,EAAG,IAAIkB,CAAE,EAAE,IAAIrB,EAAE,GAAG,EAAE,MAAM,IAAI,EACrCwB,EAAKrB,EAAG,IAAIgB,EAAE,GAAG,EAAE,MAAM,IAAI,EACnCjB,EAAE,OAAOuB,GAAWvB,CAAC,CAAC,EACtB,IAAMM,EAAIkB,EACFA,EACQA,EAAYxB,EAAE,EAAE,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAAC,EAClC,IAAInB,EAAE,CAAC,EACP,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAC3C,EACS,IAAInB,EAAE,CAAC,EACP,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAC3C,EAAE,MAAM,GAAG,EAELM,EADKf,GAAM,aAAc,EAAE,MAAM,IAAI,EAC7B,IAAIO,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,MAAM,IAAI,EACxCS,EAAIpB,EAAE,IAAIA,EAAE,IAAImB,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,EAC1DE,EAAKD,EAAE,IAAID,EAAG,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EACnCG,EAAKF,EAAE,IAAIC,EAAG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EACxChB,EAAIgB,EAAG,IAAIF,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,GAAG,EACvCI,EAAID,EAAG,IAAIH,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,GAAG,EACvCb,EAAIF,GAAM,CAAC,EAAE,IAAIC,EAAE,IAAI,CAAC,EAAE,IAAIkB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAChDC,EAAK/B,EAAKY,EAAE,GAAIkB,EAAE,EAAE,EAAE,MAAM,IAAI,EAChCE,EAAKhC,EAAKY,EAAE,GAAIkB,EAAE,EAAE,EAAE,MAAM,IAAI,EAChCG,EAAKF,EAAG,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EACxCG,EAAKF,EAAG,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EACxCG,EAAKnC,EAAK,CAAC,EAAE,KAAKa,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EACxCE,EAAKgB,EAAG,KAAK,IAAIE,EAAG,KAAK,IAAIE,EAAG,IAAI,CAAC,EAAE,MAAM,IAAI,EACjDC,EAAKJ,EAAG,KAAK,IAAIE,EAAG,KAAK,IAAIC,EAAG,IAAI,CAAC,EAAE,MAAM,IAAI,EACjDE,EAAK5B,GAAKM,EAAG,GAAIF,EAAE,CAAC,EAAE,MAAM,IAAI,EAChCyB,EAAK7B,GAAKM,EAAG,GAAIF,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC0B,EAAK9B,GAAK2B,EAAG,GAAIvB,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC2B,EAAK/B,GAAK2B,EAAG,GAAIvB,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC4B,EAAOC,EAAc1C,EAAKqC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FH,EAAG,UAAUI,EAAK,CAAC,EACnBH,EAAG,UAAUG,EAAK,CAAC,EACnBF,EAAG,UAAUE,EAAK,CAAC,EACnBD,EAAG,UAAUC,EAAK,CAAC,EACnB,IAAM/B,EAAIC,GAAM,EAAG,EACV,IAAIX,EAAKE,EAAG,IAAIA,CAAE,EAAGmB,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EACxD,IAAI,CAAC,EACL,MAAM,GAAG,EAClB,OAAAb,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACVC,GAAM,EAAE,EAAE,IAAID,EAAE,IAAIA,CAAC,EAAE,IAAIV,EAAKqC,EAAG,IAAInC,CAAE,EAAGoC,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,CAAC,CAAC,CAAC,CAC/F,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYoB,GAAa9C,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIC,EAAK,iBAAmB,iBAAmB,iBAAmB,iBAAkB,EAAE,MAAM,GAAG,EAC/FC,EAAIH,EACD,IAAIA,EAAE,IAAIE,EAAK,kBAAoB,CAAC,CAAC,EACrC,MAAM,EACN,MAAM,GAAG,EACZE,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC3C6C,EAAK5C,EAAK,CAAC,EAAE,MAAM,IAAI,EACvB6C,EAAM3C,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,KAAK,EACrC4C,EAAO5C,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,MAAM,EAC7C0C,EAAG,EAAIC,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EACjCD,EAAG,IAAMjC,GAAM,CAAC,EAAE,IAAIkC,CAAG,EACzBD,EAAG,EAAIA,EAAG,EAAE,IAAIE,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAClCF,EAAG,GAAKA,EAAG,GAAG,IAAIjC,GAAM,CAAC,EAAE,IAAImC,EAAK,EAAE,CAAC,EACvCF,EAAG,EAAIA,EAAG,EAAE,IAAIE,EAAK,CAAC,EACtBF,EAAG,EAAIA,EAAG,EAAE,IAAIjC,GAAM,CAAC,EAAE,IAAImC,EAAK,CAAC,CAAC,EACpC,IAAMC,EAAKH,EAAG,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EAC9BxB,EAAKwB,EAAG,IAAI,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EACrCzC,EAAKyC,EAAG,IAAI,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EACrCvB,EAAKnB,EAAG,IAAIC,CAAE,EAAE,IAAIJ,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCuB,EAAKpB,EAAG,IAAIkB,CAAE,EAAE,IAAIrB,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCwB,EAAKrB,EAAG,IAAI6C,CAAE,EAAE,IAAIhD,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCiD,EAAK9C,EAAG,IAAIH,EAAE,IAAI,EAAE,MAAM,IAAI,EACpCE,EAAE,OAAOgD,GAAWhD,CAAC,CAAC,EACtB,IAAMiD,EAAKC,GAAQA,GAAQA,GAAQA,GAAQlD,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EAClFmD,EAAK3B,EACHA,EACQA,EACQA,EAAYxB,EAAE,EAAE,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAAC,EACrC,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EACS,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EACS,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EAAE,MAAM,IAAI,EACNM,EAAKrD,EAAK,EAAI,IAAK,EAAI,GAAI,EAAI,EAAG,CAAC,EAAE,MAAM,IAAI,EAC/CqC,EAAKiB,GAAMJ,EAAIG,CAAE,EAAE,MAAM,IAAI,EAC7Bf,EAAKgB,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/Bd,EAAKe,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/Bb,EAAKc,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/BE,EAAKD,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/BZ,EAAOC,EAAc1C,EAAKqC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FH,EAAG,UAAUI,EAAK,CAAC,EACnBH,EAAG,UAAUG,EAAK,CAAC,EACnBF,EAAG,UAAUE,EAAK,CAAC,EACnBD,EAAG,UAAUC,EAAK,CAAC,EACnBc,EAAG,UAAUb,EAAca,EAAG,IAAIA,CAAE,CAAC,CAAC,EACtC,IAAMC,EAAK7C,GAAM,EAAG,EACX,IAAIF,GAAKP,EAAG,IAAIA,CAAE,EAAGmB,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAC5C,IAAI,CAAC,EACL,MAAM,IAAI,EACbmC,EAAK9C,GAAM,EAAG,EACX,IAAIP,GAAKmB,EAAG,IAAIA,CAAE,EAAGyB,EAAG,IAAIA,CAAE,CAAC,CAAC,EAChC,IAAI,CAAC,EACL,MAAM,IAAI,EACnB,OAAAQ,EAAG,OAAOA,EAAG,IAAIA,CAAE,CAAC,EACpBC,EAAG,OAAOA,EAAG,IAAIA,CAAE,CAAC,EACb9C,GAAM,EAAE,EAAE,IACT6C,EACS,IAAIA,CAAE,EACN,IAAI/C,GAAK4B,EAAG,IAAInC,CAAE,EAAGoC,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,CAAC,CAAC,EAC5C,IAAImC,EAAG,IAAIA,CAAE,EAAE,IAAIrD,GAAKoC,EAAG,IAAIjB,CAAE,EAAGgC,EAAG,IAAIP,CAAE,CAAC,CAAC,CAAC,CACjE,CACR,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYU,GAAU7D,GAAG,CAAC,CAACe,CAAC,IAAoB,CACzC,IAAM+C,EAAI/D,GAAWgB,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKtC,GAAWQ,GAAKQ,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EACpE,OAAOR,GAAKuD,EAAGzB,CAAE,CACzB,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEY0B,GAAc/D,GAAG,CAAC,CAACe,CAAC,IAAoB,CAC7C,IAAM+C,EAAI1C,GAAWL,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKjB,GAAWR,GAAKG,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EAC7EiD,EAAK5C,GAAWR,GAAKG,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,KAAK,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EACpF,OAAOH,GAAKkD,EAAGzB,EAAI2B,CAAE,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAcjE,GAAG,CAAC,CAACe,CAAC,IAAoB,CAC7C,IAAM+C,EAAIhB,GAAW/B,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKS,GAAW3C,EAAKY,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EAClFiD,EAAKlB,GAAW3C,EAAKY,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,KAAK,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EACzF,OAAOH,GAAKkD,EAAGzB,EAAI2B,CAAE,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDnMM,IAAME,GAAWC,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKC,GAAK,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BC,EAAKD,GAAK,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BE,EAAOC,GAAQN,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCK,EAAOD,GAAQN,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCM,EAAOF,GAAQN,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCK,EAAOH,GAAQN,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCM,EAAIH,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EAChCM,EAAIF,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EAChCI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOE,GAAKO,EAAGC,CAAC,EAAE,IAAIC,CAAO,EAAE,UAAU,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAWd,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKY,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BV,EAAKU,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BC,EAAKD,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BT,EAAOW,GAAYhB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOS,GAAYhB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CM,EAAOQ,GAAYhB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOO,GAAYhB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1Ca,EAAOD,GAAYhB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CG,EAAOF,GAAYhB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CL,EAAID,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIU,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDN,EAAIO,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIV,EAAK,CAAC,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDc,EAAIZ,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,IAAII,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOa,GAAKJ,EAAGC,EAAGQ,CAAC,EAAE,IAAIP,CAAO,EAAE,UAAU,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAWrB,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKmB,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCjB,EAAKiB,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCN,EAAKM,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChChB,EAAOiB,GAAYtB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOe,GAAYtB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CM,EAAOc,GAAYtB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOa,GAAYtB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1Ca,EAAOK,GAAYtB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CG,EAAOI,GAAYtB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CL,EAAID,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIU,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDN,EAAIO,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIV,EAAK,CAAC,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDc,EAAIZ,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,IAAII,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOa,GAAKJ,EAAGC,EAAGQ,CAAC,EAAE,IAAIP,CAAO,EAAE,UAAU,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EG/DD,OAAS,MAAAW,GAAuB,SAAAC,GAAO,QAAAC,GAAM,OAAAC,OAAW,eCAxD,OAAS,MAAAC,GAAuB,QAAAC,GAAM,QAAAC,EAAM,SAAAC,OAAa,eCAzD,OAAS,MAAAC,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAA8B,eAEtF,IAAMC,GAAeF,GAAK,QAAS,QAAS,MAAQ,KAAM,EAE7CG,GAASN,GAAG,CAAC,CAACO,CAAC,IACbA,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAC5C,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACS,CAAE,IAClBA,EAAG,IAAIR,GAAK,QAAS,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CACxE,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYS,GAAaV,GAAG,CAAC,CAACW,CAAG,IACnBA,EAAI,IAAIT,GAAK,QAAS,OAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CACrF,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAaZ,GAAG,CAAC,CAACW,CAAG,IACNA,EAAI,IAAIR,GAAK,QAAS,OAAQ,OAAQ,MAAM,CAAC,EAAE,MAAM,aAAa,EACnE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CACtD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAeb,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMC,EAAKb,GAAKY,CAAC,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC3D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAchB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMC,EAAKD,EAAE,IAAI,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzD,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAcjB,GAAG,CAAC,CAACe,CAAE,KAC1BA,EAAG,OAAOA,EAAG,IAAIV,GAAa,GAAG,EAAE,MAAM,CAAC,EAC1CU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,EAChD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYG,GAAelB,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMC,EAAKb,GAAKY,CAAC,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC3D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,IAAI,IAAIA,EAAG,GAAG,EAAE,IAAIA,EAAG,GAAG,EAAE,MAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYI,GAAcnB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMC,EAAKb,GAAKY,EAAE,GAAG,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC/D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,IAAI,IAAIA,EAAG,GAAG,EAAE,IAAIA,EAAG,GAAG,EAAE,MAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAcpB,GAAG,CAAC,CAACc,CAAC,KACzBA,EAAE,OAAOA,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,CAAC,EACxCS,EAAE,UAAUA,EAAE,IAAIA,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,EAC5BA,EAAE,IAAI,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,MAAM,EAChD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAerB,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMQ,EAAKlB,GAAMU,CAAC,EAAE,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACxD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAcvB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMQ,EAAKR,EAAE,KAAK,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACtD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAcxB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMQ,EAAKR,EAAE,KAAK,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACtD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAczB,GAAG,CAAC,CAACsB,CAAE,KAC1BA,EAAG,OAAOA,EAAG,IAAIjB,EAAY,EAAE,MAAM,CAAC,EACtCiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,EACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECvID,OAAS,MAAAI,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAuB,eAExE,IAAMC,GAAUL,GAAG,CAAC,CAACM,CAAC,IACdF,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIE,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACzE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAcP,GAAG,CAAC,CAACQ,CAAE,IACnBJ,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAII,EAAG,IAAIP,GAAK,QAAS,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACrG,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYQ,GAAcT,GAAG,CAAC,CAACU,CAAG,IACpBN,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIR,GAAK,QAAS,OAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC,CAClH,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYS,GAAcX,GAAG,CAAC,CAACU,CAAG,IAAqB,CAChD,IAAME,EAAcF,EAAI,IAAIP,GAAK,QAAS,OAAQ,OAAQ,MAAM,CAAC,EAAE,MAAM,aAAa,EACtF,OAAOC,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIQ,EAAY,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACpF,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAeb,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC/C,IAAMM,EAAIb,GAAK,SAAW,QAAS,EAAE,MAAM,GAAG,EAC9C,OAAAO,EAAG,OAAOA,EAAG,IAAIM,CAAC,EAAE,IAAIA,EAAE,EAAE,CAAC,EACtBb,GAAK,EAAE,EAAE,IACRA,GAAK,CAAC,EAAE,IACAG,GAAM,EAAE,EACC,IAAIU,CAAC,EACL,IAAIN,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,EAAE,IAAIA,EAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAC9C,MAAM,CACvB,CACR,CACR,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYO,GAAef,GAAG,CAAC,CAACgB,CAAC,KAC1BA,EAAE,OACMd,GACQc,EAAE,IAAId,GAAK,MAAO,MAAO,IAAI,CAAC,EAC9Bc,EAAE,IAAId,GAAK,MAAO,MAAO,KAAK,CAAC,EAC/Bc,EAAE,IAAId,GAAK,MAAO,MAAO,KAAK,CAAC,CACvC,CACR,EACOE,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIY,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC,EAC5E,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAoBjB,GAAG,CAAC,CAACgB,EAAGE,CAAU,KAC3CF,EAAE,OAAOA,EAAE,IAAIf,GAAKiB,CAAU,CAAC,CAAC,EACzBL,GAAaG,CAAC,EAC5B,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYG,GAAoBnB,GAAG,CAAC,CAACgB,EAAGE,CAAU,KAC3CF,EAAE,OAAOA,EAAE,IAAId,GAAKgB,CAAU,CAAC,CAAC,EACzBH,GAAaC,CAAC,EAC5B,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,ECzFD,OAAS,MAAAI,OAAmC,eAErC,IAAMC,GAAQD,GAAG,CAAC,CAACE,CAAC,IACZA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAYH,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAYJ,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAmBN,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAoC,CAClF,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYW,GAAkBb,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYY,GAAkBd,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYa,GAAkBf,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EH9FM,IAAMc,GAASC,GAAG,CAAC,CAACC,CAAC,IAAsB,CAC1C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EAC7B,OAAOG,GAAOF,CAAC,EAAE,IAAIE,GAAOF,EAAE,IAAI,CAAC,CAAC,EAAGG,GAAM,CAAC,EAAE,WAAWA,GAAM,CAAC,EAAGF,CAAC,CAAC,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYG,GAAaN,GAAG,CAAC,CAACO,CAAE,IAAqB,CAC9C,IAAML,EAAIK,EAAG,MAAM,EAAE,MAAM,GAAG,EACxBJ,EAAII,EAAG,MAAM,EAAE,MAAM,GAAG,EACxB,EAAIC,GAAWN,CAAC,EAAE,MAAM,GAAG,EAC3BO,EAAID,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CC,EAAIH,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CE,EAAIJ,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CG,EAAIC,GAAUX,CAAC,EAAE,MAAM,GAAG,EAChC,OAAO,EAAE,IAAIM,EAAGI,EAAE,CAAC,EAAE,IAAIF,EAAE,IAAI,CAAC,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAIR,GAAM,CAAC,EAAE,IAAIQ,EAAE,CAAC,CAAC,EAAE,IAAID,EAAE,IAAIH,CAAC,EAAE,IAAII,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,CACzG,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAaf,GAAG,CAAC,CAACgB,CAAC,IAAqB,CAC7C,IAAMd,EAAIc,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBb,EAAIa,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBH,EAAII,GAAQd,CAAC,EAAE,MAAM,GAAG,EAC9B,OAAOE,GAAM,EAAE,EAAE,IACTA,GAAM,CAAC,EAAE,IACDa,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACtB,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACzC,IAAIK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EAAGA,EAAE,CAAC,EACpF,IACOK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACtB,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACzC,IACOK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,IACzBD,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAC/BN,EAAE,CACV,EACAA,EAAE,CACV,EACRA,EAAE,CACV,CAChB,CACR,CACR,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAkBpB,GAAG,CAAC,CAACgB,EAAGK,CAAU,IAA4B,CACrE,IAAMnB,EAAIc,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBb,EAAIa,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBH,EAAII,GAAQd,CAAC,EAAE,MAAM,GAAG,EAC9B,OAAOmB,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAChD,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IAAIG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACtF,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IACOG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAC5EN,EAAE,CACV,EACRA,EAAE,CACV,EACC,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IAAIG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACtF,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IACOG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAC5ClB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAC3B,EACAN,EAAE,CACV,EACRA,EAAE,CACV,EACRA,EAAE,CACV,CAChB,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYU,GAAUvB,GAAG,CAAC,CAACC,CAAC,IACdkB,EACCJ,GAAWd,EAAE,IAAIkB,EAAK,QAAS,KAAO,GAAI,CAAC,CAAC,EAC5CJ,GAAWd,EAAE,IAAIkB,EAAK,IAAM,MAAO,KAAK,CAAC,CAAC,EAC1CJ,GAAWd,CAAC,CACpB,CACP,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ED5GD,IAAMuB,GAAcC,GAAI,CAAC,EACnBC,GAAmB,EACnBC,GAAwB,GACxBC,GAAuB,GAEhBC,GAAUC,GAAG,CAAC,CAACC,CAAE,IAAqB,CAC3C,IAAMC,EAAQC,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9BC,EAAYD,GAAMN,EAAqB,EAAE,MAAM,WAAW,EAC1DQ,EAAQJ,EAAG,MAAM,OAAO,EAC9B,OAAAK,GAAKZ,GAAa,IAAM,CAChBQ,EAAM,UAAUE,EAAU,IAAIG,GAAWF,CAAK,CAAC,CAAC,EAChDA,EAAM,UAAUT,EAAgB,EAChCQ,EAAU,UAAUN,EAAoB,CAChD,CAAC,EACMI,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYM,GAAUR,GAAG,CAAC,CAACS,CAAG,IAAqB,CAC5C,IAAMP,EAAQC,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9BC,EAAYD,GAAMN,EAAqB,EAAE,MAAM,WAAW,EAC1Da,EAASD,EAAI,MAAM,QAAQ,EACjC,OAAAH,GAAKZ,GAAa,IAAM,CAChBQ,EAAM,UAAUE,EAAU,IAAIO,GAAWD,CAAM,CAAC,CAAC,EACjDA,EAAO,UAAUd,EAAgB,EACjCQ,EAAU,UAAUN,EAAoB,CAChD,CAAC,EACMI,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAeZ,GAAG,CAAC,CAACa,EAAGC,CAAU,IAA4B,CAClE,IAAMC,EAAcZ,GAAM,EAAG,EAAE,MAAM,aAAa,EAC5Ca,EAAab,GAAM,CAAC,EAAE,MAAM,YAAY,EACxCC,EAAYD,GAAM,EAAG,EAAE,MAAM,WAAW,EACxCc,EAAQd,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9Be,EAAgBf,GAAM,CAAC,EAAE,MAAM,eAAe,EAC9CgB,EAAON,EAAE,MAAM,MAAM,EAC3B,OAAAP,GAAKZ,GAAa,IAAM,CAChB,IAAM0B,EAAaC,GAAgBF,EAAML,EAAW,IAAIE,CAAU,EAAE,IAAI,CAAC,CAAC,EACjE,IAAI,CAAC,EACL,IAAI,EAAG,EACP,MAAM,YAAY,EAC3BC,EAAM,UAAUG,EAAW,IAAIhB,CAAS,CAAC,EACzCc,EAAc,UAAUd,CAAS,EACjCA,EAAU,UAAUW,CAAW,EAC/BI,EAAK,OAAOA,EAAK,IAAIH,CAAU,CAAC,CACxC,CAAC,EACMC,EAAM,IAAIC,CAAa,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYI,GAAMd,GKpEnB,OAAS,MAAAe,GAAiB,QAAAC,GAAiB,SAAAC,OAAa,eAGjD,IAAMC,GAAeC,GAAG,CAAC,CAACC,EAAKC,EAAMC,EAAYC,EAAaC,CAAK,IAAyC,CAC3G,IAAMC,EAAIC,GAAG,IAAI,CAAC,EAAE,IAAIH,CAAW,EAAE,MAAM,GAAG,EACxC,EAAII,GAAM,GAAG,EAAE,IAAIF,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,EACtCG,EAAIP,EAAK,UAAU,EAAE,MAAM,GAAG,EAC9BQ,EAAIJ,EAAE,IAAIL,EAAI,IAAIQ,CAAC,EAAE,IAAI,EAAE,IAAIJ,CAAK,CAAC,CAAC,EAAE,MAAM,GAAG,EACjDM,EAAIR,EAAW,IAAIG,CAAC,EAAE,MAAM,GAAG,EACrC,OAAOM,GAAKH,EAAE,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAI,CAAC,CAAC,EAAGC,EAAE,IAAID,EAAE,IAAI,CAAC,EAAGD,EAAE,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAI,CAAC,CAAC,CAAC,CACpF,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,aAAc,KAAM,OAAQ,EACpC,CAAE,KAAM,cAAe,KAAM,OAAQ,EACrC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECpBD,OAAS,MAAAG,GAAgB,QAAAC,GAAM,QAAAC,EAAM,QAAAC,OAAY,eAG1C,IAAMC,GAASC,GAAG,CAAC,CAACC,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAAID,EACD,IAAIA,CAAC,EACL,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACnC,MAAM,GAAG,EACZE,EAAKF,EACF,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,EACN,MAAM,IAAI,EAEbG,EAAKC,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CC,EAAKF,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CE,EAAKH,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CG,EAAKJ,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAE/CI,EAAKT,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIF,CAAE,EAAE,MAAM,IAAI,EACzCO,EAAKV,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIC,CAAE,EAAE,MAAM,IAAI,EACzCK,EAAKX,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIE,CAAE,EAAE,MAAM,IAAI,EACzCK,EAAKZ,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIG,CAAE,EAAE,MAAM,IAAI,EAE/C,OAAOK,EACCJ,EACS,IAAIR,EAAE,EAAE,IAAIS,EAAG,IAAID,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIU,EAAG,IAAIF,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EACzDT,EACS,IAAIF,EAAE,EAAE,IAAIK,EAAG,IAAIH,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIM,EAAG,IAAIJ,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIN,EAAG,IAAID,EAAE,GAAG,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,IAAIP,GAAKK,EAAIC,CAAE,CAAC,EAAE,IAAIF,CAAE,CAAC,CAAC,CAC3F,CACR,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAajB,GAAG,CAAC,CAACkB,CAAG,IAAc,CACxC,IAAMjB,EAAIiB,EAAI,MAAM,EAAE,MAAM,GAAG,EACzBC,EAAID,EAAI,MAAM,EAAE,MAAM,GAAG,EACzBd,EAAIe,EACD,IAAIA,CAAC,EACL,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACnC,MAAM,GAAG,EACZd,EAAKc,EACF,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,EACN,MAAM,IAAI,EAEbb,EAAKc,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDP,EAAKW,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDN,EAAKU,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDL,EAAKS,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDK,EAAKD,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDM,EAAKF,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDO,EAAKH,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDQ,EAAKJ,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAElDJ,EAAKO,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIV,CAAE,EAAE,MAAM,IAAI,EAC5CO,EAAKM,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIP,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKK,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIN,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKI,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIL,CAAE,EAAE,MAAM,IAAI,EAC5Cc,EAAKN,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIK,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKP,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIM,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKR,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIO,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKT,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIQ,CAAE,EAAE,MAAM,IAAI,EAE5CK,EAAajB,EACV,IAAIR,EAAE,EAAE,IAAIS,EAAG,IAAID,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIU,EAAG,IAAIF,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIqB,EAAG,IAAIb,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIX,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CAAC,CAAC,EAChD,IAAIvB,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAId,EAAG,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIU,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIxB,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAErG0B,EAAgBxB,EACb,IAAIF,EAAE,EAAE,IAAIK,EAAG,IAAIH,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIM,EAAG,IAAIJ,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIiB,EAAG,IAAIf,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIP,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAII,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CAAC,CAAC,EAChD,IAAInB,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIhB,EAAG,OAAO,EAAE,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIU,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIpB,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAClG,IACOC,EAAG,IACKW,EAAKH,EAAIC,EAAIW,CAAE,EACN,IAAIb,CAAE,EACN,IACOR,EAAE,IAAI,IACEY,EACQJ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EACzBH,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,EACzBf,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CACjC,CACR,CACR,EACC,IACOtB,EAAE,IAAI,IACEY,EACQJ,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,EACzBd,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EACzBH,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CACjC,CACR,CACR,EACC,IACOvB,EAAE,IACO,IAAIA,EAAE,GAAG,EACT,IACOQ,EACS,OAAO,EACP,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIU,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,CACvB,CAChB,CAChB,CACR,EAER,OAAOG,GAAKF,EAAYC,CAAa,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC1ID,OAAS,MAAAE,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,MAAuB,eAM3D,IAAMC,GAASC,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CAC7C,IAAMC,EAAKF,EAAE,KAAK,MAAM,EAAE,IAAIG,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACpDC,EAAKJ,EAAE,KAAK,MAAM,EAAE,IAAIG,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAC1DD,EAAG,OAAOA,EAAG,IAAID,EAAI,IAAI,CAAC,EAC1BC,EAAG,OAAOG,GAAWH,CAAE,CAAC,EACxB,IAAMI,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EACvBM,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EAEvBM,EADIC,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,GAAG,EAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC/CK,EAAKF,EAAG,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,IAAI,EACjCG,EAAKH,EAAG,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzCA,EAAG,OAAOA,EAAG,IAAIG,CAAE,CAAC,EACpB,IAAMC,EAAMC,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCI,EAAMD,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCK,EAAMF,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCM,EAAMH,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCO,EAAOC,EAAcjB,EAAKW,EAAI,IAAIA,CAAG,EAAGG,EAAI,IAAIA,CAAG,EAAGD,EAAI,IAAIA,CAAG,EAAGE,EAAI,IAAIA,CAAG,CAAC,CAAC,EAAE,MAAM,MAAM,EACrGJ,EAAI,UAAUK,EAAK,CAAC,EACpBF,EAAI,UAAUE,EAAK,CAAC,EACpBH,EAAI,UAAUG,EAAK,CAAC,EACpBD,EAAI,UAAUC,EAAK,CAAC,EACpB,IAAME,EAAMP,EAAI,IAAIC,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ca,EAAMN,EAAI,IAAID,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Cc,EAAMN,EAAI,IAAIF,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ce,EAAMN,EAAI,IAAIH,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3CgB,EAAUC,GAAQtB,EAAG,EAAE,EAAE,MAAM,SAAS,EACxCuB,EAAMZ,GAAKM,EAAKE,CAAG,EAAE,IAAIR,GAAKO,EAAKE,CAAG,EAAGC,EAAQ,CAAC,EAAE,MAAM,KAAK,EAErE,OADaE,EAAI,EAAE,IAAIA,EAAI,EAAGF,EAAQ,CAAC,EAAE,MAAM,MAAM,EACzC,IAAI,GAAG,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYG,GAAa7B,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CACjD,IAAM4B,EAAM7B,EAAE,MAAM,EAAE,IAAIC,CAAG,EAAE,MAAM,KAAK,EACpC6B,EAAMD,EAAI,IAAIE,GAAK,CAAC,CAAC,EAAE,IAAI9B,CAAG,EAAE,MAAM,KAAK,EACjD4B,EAAI,OAAOG,GAAWH,CAAG,CAAC,EAC1BC,EAAI,OAAOE,GAAWF,CAAG,CAAC,EAC1B,IAAMG,EAAMjC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BkC,EAAMD,EAAI,IAAIF,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EAClCzB,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAMF,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BG,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAMvC,EAAK,EAAG,EAAE,IAAIqC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAKvC,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCqC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKrC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjDsC,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAKtC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAMyC,EAAML,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BM,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAM3C,EAAK,EAAG,EAAE,IAAIyC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAK3C,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCyC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKzC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD0C,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAK1C,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAM6C,EAAOjB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOlB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOnB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOpB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAOrB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOtB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOvB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOxB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAQpC,EAAcjB,EAAK6C,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUQ,EAAM,CAAC,EACtBN,EAAK,UAAUM,EAAM,CAAC,EACtBP,EAAK,UAAUO,EAAM,CAAC,EACtBL,EAAK,UAAUK,EAAM,CAAC,EACtB,IAAMC,EAAQrC,EAAcjB,EAAKiD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUK,EAAM,CAAC,EACtBH,EAAK,UAAUG,EAAM,CAAC,EACtBJ,EAAK,UAAUI,EAAM,CAAC,EACtBF,EAAK,UAAUE,EAAM,CAAC,EACtB,IAAMC,EAAOV,EAAK,IAAIf,CAAG,EAAE,MAAM,MAAM,EACjC0B,EAAOV,EAAK,IAAIlB,GAAKG,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD2B,EAAOV,EAAK,IAAInB,GAAKE,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD4B,EAAOV,EAAK,IAAIpB,GAAKG,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAIrB,GAAKE,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAItB,GAAKG,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD8B,EAAOV,EAAK,IAAIvB,GAAKE,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD+B,EAAOV,EAAK,IAAIrB,CAAG,EAAE,MAAM,MAAM,EACjCgC,EAAWxC,GAAQO,CAAG,EAAE,MAAM,UAAU,EACxCkC,EAAMhE,EAAKuD,EAAMC,EAAMC,EAAMC,CAAI,EAAE,IAAI1D,EAAK2D,EAAMC,EAAMC,EAAMC,CAAI,EAAGC,EAAS,CAAC,EAAE,MAAM,KAAK,EAC5FE,EAAOD,EAAI,GAAG,IAAIA,EAAI,GAAID,EAAS,CAAC,EAAE,MAAM,MAAM,EAExD,OADcE,EAAK,EAAE,IAAIA,EAAK,EAAGF,EAAS,CAAC,EAAE,MAAM,OAAO,EAC7C,IAAI,GAAG,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYG,GAAatE,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CACjD,IAAM4B,EAAM7B,EAAE,MAAM,EAAE,IAAIC,CAAG,EAAE,MAAM,KAAK,EACpC6B,EAAMD,EAAI,IAAI,CAAC,EAAE,IAAI5B,CAAG,EAAE,MAAM,KAAK,EAC3C4B,EAAI,OAAOxB,GAAWwB,CAAG,CAAC,EAC1BC,EAAI,OAAOzB,GAAWyB,CAAG,CAAC,EAC1B,IAAMG,EAAMjC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BkC,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAC5B3B,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMhC,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAMjC,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCwC,EAAMnE,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChC0C,EAAMpE,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CoC,EAAQ7D,EAAY2B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ9D,EAAY2B,EAAK,IAAIiC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ/D,EAAY4B,EAAK,IAAI+B,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAQhE,EAAY4B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAOJ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCK,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO5E,EAAK,GAAI,EAAE,IAAIyE,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK5E,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CyE,EAAK,UAAUI,EAAK,IAAI7E,EAAK,CAAC,EAAE,KAAKyE,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAI7E,EAAK,CAAC,EAAE,KAAK0E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOR,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCS,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOjF,EAAK,GAAI,EAAE,IAAI8E,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKjF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5C8E,EAAK,UAAUI,EAAK,IAAIlF,EAAK,CAAC,EAAE,KAAK8E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAIlF,EAAK,CAAC,EAAE,KAAK+E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOZ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCa,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOtF,EAAK,GAAI,EAAE,IAAImF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKtF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CmF,EAAK,UAAUI,EAAK,IAAIvF,EAAK,CAAC,EAAE,KAAKmF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAIvF,EAAK,CAAC,EAAE,KAAKoF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOhB,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCiB,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO3F,EAAK,GAAI,EAAE,IAAIwF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK3F,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CwF,EAAK,UAAUI,EAAK,IAAI5F,EAAK,CAAC,EAAE,KAAKwF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAI5F,EAAK,CAAC,EAAE,KAAKyF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAQ7F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,EAAQ9F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DmB,EAAQ/F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DoB,GAAQhG,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQjG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DY,GAAQlG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Da,GAAQnG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Dc,GAAQpG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,GAAQrG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQtG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DsB,GAAQvG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DuB,EAAQxG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DwB,EAAQzG,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,EAAQ1G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DgB,GAAQ3G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DiB,GAAQ5G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,GAAS5F,EACPjB,EAAK6F,EAAM,IAAIA,CAAK,EAAGE,EAAM,IAAIA,CAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUgB,GAAO,CAAC,EACxBd,EAAM,UAAUc,GAAO,CAAC,EACxBf,EAAM,UAAUe,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxB,IAAMC,GAAS7F,EACPjB,EAAKqG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,EAAM,IAAIA,CAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUS,GAAO,CAAC,EACxBP,GAAM,UAAUO,GAAO,CAAC,EACxBR,GAAM,UAAUQ,GAAO,CAAC,EACxBN,EAAM,UAAUM,GAAO,CAAC,EACxB,IAAMC,GAAS9F,EACPjB,EAAKiG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUc,GAAO,CAAC,EACxBZ,GAAM,UAAUY,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxBX,GAAM,UAAUW,GAAO,CAAC,EACxB,IAAMC,GAAS/F,EACPjB,EAAKyG,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUO,GAAO,CAAC,EACxBL,GAAM,UAAUK,GAAO,CAAC,EACxBN,EAAM,UAAUM,GAAO,CAAC,EACxBJ,GAAM,UAAUI,GAAO,CAAC,EACxB,IAAMC,GAAQpB,EAAM,IAAI/D,CAAG,EAAE,MAAM,OAAO,EACpCoF,GAAQpB,EAAM,IAAI9F,EAAK+B,EAAI,EAAGD,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDqF,GAAQpB,EAAM,IAAI/F,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DsF,GAAQpB,GAAM,IAAIhG,EAAK+B,EAAI,GAAID,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrDuF,GAAQpB,GAAM,IAAIjG,EAAK8B,EAAI,GAAIC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3DwF,GAAQpB,GAAM,IAAIlG,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjEyF,GAAQpB,GAAM,IAAInG,EAAK8B,EAAI,EAAGC,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D0F,GAAQpB,GAAM,IAAIpG,EAAK+B,EAAI,IAAKD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAIrG,EAAK8B,EAAI,IAAKC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAItG,EAAK+B,EAAI,EAAGD,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D4F,GAAQpB,GAAM,IAAIvG,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjE6F,GAAQpB,EAAM,IAAIxG,EAAK+B,EAAI,GAAID,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D8F,GAAQpB,EAAM,IAAIzG,EAAK8B,EAAI,GAAIC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrD+F,GAAQpB,EAAM,IAAI1G,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DgG,GAAQpB,GAAM,IAAI3G,EAAK8B,EAAI,EAAGC,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDiG,GAAQpB,GAAM,IAAI7E,CAAG,EAAE,MAAM,OAAO,EACpCkG,GAAY1G,GAAQO,CAAG,EAAE,MAAM,WAAW,EAC1CoG,GAAOlI,EAAKiH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIpH,EAAKyH,GAAOC,GAAOC,GAAOC,EAAK,EAAGK,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGE,GAAOnI,EAAKqH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIxH,EAAK6H,GAAOC,GAAOC,GAAOC,EAAK,EAAGC,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGG,GAAOF,GAAK,IAAIC,GAAMF,GAAU,CAAC,EAAE,MAAM,MAAM,EAC/CI,GAAQD,GAAK,GAAG,IAAIA,GAAK,GAAIH,GAAU,CAAC,EAAE,MAAM,OAAO,EAE7D,OADeI,GAAM,EAAE,IAAIA,GAAM,EAAGJ,GAAU,CAAC,EAAE,MAAM,QAAQ,EACjD,IAAI,GAAG,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECxPD,OAAS,MAAAK,GAAuB,QAAAC,GAAM,QAAAC,EAAM,QAAAC,GAAM,QAAAC,GAAiB,MAAAC,GAAI,SAAAC,OAAkB,eAKlF,IAAMC,GAAcC,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IAAiC,CACzE,IAAMC,EAAKC,GAAKJ,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAE,CAAC,EAAE,MAAM,IAAI,EAC9CK,EAAKF,EAAG,MAAM,EAAE,MAAM,IAAI,EAC1BG,EAAKH,EAAG,MAAM,EAAE,MAAM,IAAI,EAC1BI,EAAMD,EAAG,EAAE,KAAKA,EAAG,CAAC,EAAE,MAAM,KAAK,EACjCE,EAAKJ,GAAKG,EAAKA,EAAI,SAAS,CAAC,EAAE,MAAM,IAAI,EACzCE,EAAKJ,EAAG,IAAIG,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAKL,EAAG,IAAID,GAAK,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAElCO,EAAKP,GAAKC,EAAG,EAAE,IAAIA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAG,CAAC,EAAE,MAAM,IAAI,EACjDO,EAAKR,GAAKO,EAAG,EAAE,IAAIH,EAAG,CAAC,EAAE,IAAIA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGG,EAAG,EAAE,IAAIH,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACrEK,EAAKT,GAAKO,EAAG,EAAE,IAAI,EAAG,EAAGA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EAEhDG,EAAKd,EAAE,IAAIW,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKf,EAAE,IAAIY,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKhB,EAAE,IAAIa,CAAE,EAAE,MAAM,IAAI,EAE3BI,EAAKC,EAAKb,EAAG,EAAGI,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCS,EAAKD,EAAKb,EAAG,EAAGI,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAE1CU,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAG,IAAM,CACtD,IAAMoB,EAAKH,EAAKP,EAAG,EAAGC,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCS,EAAKJ,EAAKP,EAAG,EAAGC,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAE5CO,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAM,CAC1BoB,EAAG,OAAOA,EAAG,IAAIpB,EAAO,CAAC,CAAC,CAClC,CAAC,EAEDmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAM,CAC1BqB,EAAG,OAAOA,EAAG,IAAIrB,EAAO,CAAC,CAAC,CAClC,CAAC,EAEDgB,EAAG,OAAOI,EAAG,IAAIC,EAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,CAAC,EAC5CH,EAAG,OAAOG,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,CACrC,CAAC,EAED,IAAIC,EAAOC,GAAWP,CAAE,EAAE,MAAM,MAAM,EACtCM,EAAK,OAAOC,GAAWD,EAAK,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,CAAI,EAAE,IAAIJ,CAAE,CAAC,CAAC,EAC7DI,EAAK,OAAOC,GAAWD,EAAK,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAIA,CAAI,CAAC,CAAC,EAEtD,IAAME,EAAMF,EAAK,IAAI,MAAO,EAAE,IAAIrB,CAAK,EAAE,MAAM,KAAK,EAC9CwB,EAAKD,EAAI,IAAI,EAAE,MAAM,IAAI,EACzBE,EAAKF,EAAI,IAAI,EAAE,MAAM,IAAI,EAEzBG,EAAKxB,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCE,EAAKzB,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCG,EAAK1B,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAEhCI,EAAIb,EAAK,EAAG,EACT,IAAIA,EAAKJ,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAC5C,MAAM,GAAG,EAClBe,EAAE,OAAOA,EAAE,IAAI,CAAC,CAAC,EAEjB,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBE,EAAKD,EAAG,IAAIA,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAQhB,EAAKU,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,CAAC,EAAE,MAAM,OAAO,EAC9DmB,EAAIF,EAAG,IAAIC,CAAK,EAAE,MAAM,GAAG,EAG3BE,EADKJ,EAAG,IAAID,CAAC,EAAE,MAAM,IAAI,EACjB,IAAI,EAAE,EAAE,IAAIG,CAAK,EAAE,MAAM,IAAI,EACrCG,EAAMT,EAAG,IAAIK,EAAG,CAAC,EAAE,IAAInB,EAAG,IAAIsB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDE,EAAMT,EAAG,IAAII,EAAG,CAAC,EAAE,IAAIlB,EAAG,IAAIqB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDG,EAAMT,EAAG,IAAIG,EAAG,CAAC,EAAE,IAAIjB,EAAG,IAAIoB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDI,EAAWH,EAAI,IAAIC,CAAG,EAAE,IAAIC,CAAG,EAAE,IAAI,IAAI,EAAE,MAAM,UAAU,EAEjE,OAAOnC,GAAK+B,EAAE,IAAI,IAAI,EAAGK,EAAS,OAAO,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAGYC,GAAc1C,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IAAiC,CACzE,IAAMwC,EAAIC,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,GAAG,EAC7CC,EAAKD,GAAK,IAAM,GAAK,GAAK,GAAK,IAAM,GAAK,GAAK,GAAK,GAAI,EAAE,MAAM,IAAI,EAEpEE,EAAMH,EAAE,IAAI1C,CAAC,EAAE,MAAM,KAAK,EAC1BK,EAAKwC,EAAI,MAAM,EAAE,MAAM,IAAI,EAC3BvC,EAAKuC,EAAI,MAAM,EAAE,MAAM,IAAI,EAE3BC,EAAKxC,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,IAAI,EACnCyC,EAAKD,EAAG,SAAS,EAAE,MAAM,IAAI,EAC7BE,EAAI9B,EAAK6B,EAAG,EAAGD,EAAG,EAAE,EAAE,MAAM,GAAG,EAC/BG,EAAI/B,EAAK6B,EAAG,GAAID,EAAG,CAAC,EAAE,MAAM,GAAG,EAE/BtC,EAAKwC,EAAE,IAAIC,CAAC,EAAE,MAAM,IAAI,EACxBC,EAAKF,EAAE,IAAIC,CAAC,EAAE,MAAM,IAAI,EAExBxC,EAAKJ,EAAG,IAAIG,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAKL,EAAG,IAAI6C,CAAE,EAAE,MAAM,IAAI,EAC1BC,EAAK9C,EAAG,IAAIa,EAAK,CAAC,CAAC,EAAE,MAAM,IAAI,EAEjCP,EAAKiC,EAAG,IAAIvC,CAAE,EAAE,MAAM,IAAI,EAC1BO,EAAKgC,EAAG,IAAInC,CAAE,EAAE,MAAM,IAAI,EAC1BI,EAAK+B,EAAG,IAAIlC,CAAE,EAAE,MAAM,IAAI,EAC1B0C,EAAKR,EAAG,IAAIO,CAAE,EAAE,MAAM,IAAI,EAExBrC,EAAKd,EAAE,IAAIW,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKf,EAAE,IAAIY,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKhB,EAAE,IAAIa,CAAE,EAAE,MAAM,IAAI,EACzBwC,EAAKrD,EAAE,IAAIoD,CAAE,EAAE,MAAM,IAAI,EAE/BhC,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAG,IAAM,CAClF,IAAMqD,EAAKC,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAC5CI,EAAKD,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAC5CK,EAAKF,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAElDhC,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMqD,EAAG,OAAOA,EAAG,IAAIrD,EAAO,CAAC,CAAC,CAAC,EAC7DmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMuD,EAAG,OAAOA,EAAG,IAAIvD,EAAO,CAAC,CAAC,CAAC,EAC7DmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMwD,EAAG,OAAOA,EAAG,IAAIxD,EAAO,CAAC,CAAC,CAAC,EAE7DI,EAAG,OAAOqC,EAAE,IAAIxB,EAAKoC,EAAG,EAAGE,EAAG,EAAGC,EAAG,CAAC,CAAC,CAAC,EACvChD,EAAG,OAAOiC,EAAE,IAAIxB,EAAKoC,EAAG,EAAGE,EAAG,EAAGC,EAAG,CAAC,CAAC,CAAC,EACvC/C,EAAG,OAAOgC,EAAE,IAAIxB,EAAKoC,EAAG,EAAGE,EAAG,EAAGC,EAAG,CAAC,CAAC,CAAC,EACvCN,EAAG,OAAOT,EAAE,IAAIxB,EAAKoC,EAAG,EAAGE,EAAG,EAAGC,EAAG,CAAC,CAAC,CAAC,EAEvCpD,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7BI,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7BC,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7ByC,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,CACrC,CAAC,EAED,IAAM5B,EAAOmC,EACLA,EAAYA,EAAYH,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CAAC,EAAE,IAAII,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CAAC,CAAC,EAAE,IACjFI,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CACnC,CACR,EAAE,MAAM,MAAM,EAERQ,EAAQpC,EAAK,IAAI,WAAW,EAAE,MAAM,OAAO,EAC3CqC,EAAKrC,EAAK,IAAI,WAAY,EAAE,IAAI,UAAW,EAAE,MAAM,IAAI,EACvDE,EAAMF,EAAK,IAAI,UAAW,EAAE,MAAM,KAAK,EAEvCsC,EAAKF,EAAM,IAAI,EAAE,MAAM,IAAI,EAC3BG,EAAKH,EAAM,IAAI,EAAE,MAAM,IAAI,EAC3BI,EAAWH,EAAG,IAAIA,CAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,EAExDlC,EAAKmC,EAAG,IAAIE,CAAQ,EAAE,MAAM,IAAI,EAChCpC,EAAKmC,EAAG,IAAIC,CAAQ,EAAE,MAAM,IAAI,EAChCC,EAAKJ,EAAG,MAAM,IAAI,EAExBxC,GAAGlB,EAAM,SAAS,CAAC,EAAG,IAAM,CACpB,IAAM+D,EAAKxC,EAAI,IAAI,EAAE,MAAM,IAAI,EACzByC,EAAKzC,EAAI,IAAI,EAAE,MAAM,IAAI,EACzB0C,EAAKN,EAAG,IAAIE,CAAQ,EAAE,MAAM,IAAI,EAChCK,GAAKN,EAAG,IAAIC,CAAQ,EAAE,MAAM,IAAI,EAChCM,GAAKT,EAAG,MAAM,IAAI,EAElBU,GAAMR,EAAG,IAAIG,CAAE,EAAE,IAAIJ,EAAG,IAAIK,CAAE,CAAC,EAAE,MAAM,KAAK,EAC5CK,GAAKD,GAAI,IAAIR,CAAE,EAAE,IAAIG,EAAIL,CAAE,EAAE,MAAM,IAAI,EACvCY,GAAKF,GAAI,OAAO,EAAE,IAAIT,CAAE,EAAE,IAAIK,EAAIN,CAAE,EAAE,MAAM,IAAI,EAChDa,GAAKL,GAAG,IAAIF,CAAE,EAAE,IAAIC,EAAG,IAAIF,CAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EAEnDS,GAAKnB,GAAKrD,EAAM,IAAI,CAAC,EAAE,MAAM,IAAI,EACjCyE,GAAKpB,GAAKrD,EAAM,IAAI,CAAC,EAAE,MAAM,IAAI,EAEvCwB,EAAG,OAAOiD,GAAG,IAAIR,CAAE,EAAE,IAAIO,GAAG,IAAIH,EAAE,CAAC,CAAC,EACpC5C,EAAG,OAAOgD,GAAG,IAAIP,EAAE,EAAE,IAAIM,GAAG,IAAIF,EAAE,CAAC,CAAC,EACpCR,EAAG,OAAOW,GAAG,IAAIN,EAAE,EAAE,IAAIK,GAAG,IAAID,EAAE,CAAC,CAAC,CAC5C,CAAC,EAED,IAAM7C,EAAKV,EAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCnC,EAAKX,EAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtClC,EAAKZ,EAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCY,EAAK1D,EAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EAExCjC,EAAIwB,GAAK,EAAG,EACP,IAAIA,GAAKzC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGqC,EAAG,IAAIA,CAAE,CAAC,CAAC,EACxD,MAAM,GAAG,EAClBtB,EAAE,OAAOA,EAAE,IAAI,CAAC,CAAC,EAEjB,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxB8C,EAAK7C,EAAG,IAAID,CAAC,EAAE,MAAM,IAAI,EACzBG,GAAQqB,GAAK3B,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAG4D,EAAG,IAAIvB,CAAE,CAAC,EAAE,MAAM,OAAO,EAC1ElB,GAAI0C,EAAG,IAAI3C,EAAK,EAAE,MAAM,GAAG,EAE3BE,GAAKJ,EAAG,IAAI,EAAE,EAAE,IAAIE,EAAK,EAAE,MAAM,IAAI,EACrCG,GAAMT,EAAG,IAAIiD,EAAG,CAAC,EAAE,IAAI/D,EAAG,IAAIsB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDE,GAAMT,EAAG,IAAIgD,EAAG,CAAC,EAAE,IAAI9D,EAAG,IAAIqB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDG,GAAMT,EAAG,IAAI+C,EAAG,CAAC,EAAE,IAAI7D,EAAG,IAAIoB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChD0C,GAAMF,EAAG,IAAIC,EAAG,CAAC,EAAE,IAAIxB,EAAG,IAAIjB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDI,GAAWH,GAAI,IAAIC,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIuC,EAAG,EAAE,IAAI,IAAI,EAAE,MAAM,UAAU,EAE1E,OAAO5D,EAAKiB,GAAE,IAAI,IAAI,EAAGK,GAAS,EAAE,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAGYuC,GAAYhF,GAAG,CAAC,CAACC,CAAC,IAChBF,GAAYE,EAAGI,GAAK,CAAC,EAAG4E,GAAM,CAAC,CAAC,EAAE,CAChD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYC,GAAalF,GAAG,CAAC,CAACC,EAAGC,CAAM,IACzBH,GAAYE,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYE,GAAkBnF,GAAG,CAAC,CAACC,EAAGC,CAAM,IAC9BH,GAAYE,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYG,GAAiBpF,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IACpCJ,GAAYE,EAAGC,EAAQC,CAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYkF,GAAarF,GAAG,CAAC,CAACC,CAAC,IACjByC,GAAYzC,EAAGkB,EAAK,CAAC,EAAG8D,GAAM,CAAC,CAAC,EAAE,CAChD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAmBtF,GAAG,CAAC,CAACC,EAAGC,CAAM,IAC/BwC,GAAYzC,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYM,GAAkBvF,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IACrCuC,GAAYzC,EAAGC,EAAQC,CAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECpRD,OAAS,MAAAqF,GAAuB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,MAAAC,OAAU,eAItD,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IAA2B,CACvD,IAAMC,EAAOF,EAAG,MAAM,EAAE,MAAM,MAAM,EAC9BG,EAAOH,EAAG,MAAM,EAAE,MAAM,MAAM,EAC9BI,EAAMC,GAAK,EAAG,EAAG,EAAE,EAAE,MAAM,KAAK,EAIhCC,EAAgBC,GAAK,GAAI,EAAE,EAAE,MAAM,eAAe,EAClDC,EAAaC,GAAYP,EAAK,IAAII,CAAa,CAAC,EAAE,MAAM,YAAY,EAC1EE,EAAW,OAAOE,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIO,EAAW,IAAIG,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAErF,IAAMC,EADYN,EAAc,IAAIE,CAAU,EAAE,IAAIL,CAAI,EAAE,MAAM,WAAW,EAC/C,OAAO,EAAE,MAAM,WAAW,EACtDU,GAAGD,EAAU,SAASR,EAAI,CAAC,EAAG,IAAM,CAC5BA,EAAI,GAAG,OAAOI,CAAU,EACxBJ,EAAI,EAAE,OAAOQ,CAAS,CAC9B,CAAC,EAGD,IAAME,EAAeP,GAAK,EAAG,EAAE,EAAE,MAAM,cAAc,EAC/CQ,EAAYN,GAAYP,EAAK,IAAIY,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOL,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIc,EAAU,IAAIJ,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMK,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIZ,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGG,EAAS,SAASZ,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOW,CAAS,EACvBX,EAAI,EAAE,OAAOY,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAeV,GAAK,EAAG,EAAE,EAAE,MAAM,cAAc,EAC/CW,EAAYT,GAAYP,EAAK,IAAIe,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOR,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIiB,EAAU,IAAIP,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMQ,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIf,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGM,EAAS,SAASf,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOc,CAAS,EACvBd,EAAI,EAAE,OAAOe,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAeb,GAAK,GAAI,CAAC,EAAE,MAAM,cAAc,EAC/Cc,EAAYZ,GAAYP,EAAK,IAAIkB,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOX,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIoB,EAAU,IAAIV,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMW,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIlB,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGS,EAAS,SAASlB,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOiB,CAAS,EACvBjB,EAAI,EAAE,OAAOkB,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAchB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5CiB,EAAWf,GAAYP,EAAK,IAAIqB,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOd,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIuB,EAAS,IAAIb,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMc,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIrB,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGY,EAAQ,SAASrB,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOoB,CAAQ,EACtBpB,EAAI,EAAE,OAAOqB,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAcnB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5CoB,EAAWlB,GAAYP,EAAK,IAAIwB,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOjB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAI0B,EAAS,IAAIhB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMiB,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIxB,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGe,EAAQ,SAASxB,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOuB,CAAQ,EACtBvB,EAAI,EAAE,OAAOwB,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAetB,GAAK,GAAI,CAAC,EAAE,MAAM,cAAc,EAC/CuB,EAAYrB,GAAYP,EAAK,IAAI2B,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOpB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAI6B,EAAU,IAAInB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMoB,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAI3B,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGkB,EAAS,SAAS3B,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAO0B,CAAS,EACvB1B,EAAI,EAAE,OAAO2B,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAczB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5C0B,EAAWxB,GAAYP,EAAK,IAAI8B,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOvB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIgC,EAAS,IAAItB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMuB,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAI9B,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGqB,EAAQ,SAAS9B,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAO6B,CAAQ,EACtB7B,EAAI,EAAE,OAAO8B,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAc5B,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5C6B,EAAW3B,GAAYP,EAAK,IAAIiC,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAO1B,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAImC,EAAS,IAAIzB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAM0B,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIjC,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChD,OAAAU,GAAGwB,EAAQ,SAASjC,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOgC,CAAQ,EACtBhC,EAAI,EAAE,OAAOiC,CAAO,CAC5B,CAAC,EAEMjC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYkC,GAAcvC,GAAG,CAAC,CAACwC,CAAC,IAClBzC,GAAQyC,EAAG7B,GAAM,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEY8B,GAAczC,GAAG,CAAC,CAACwC,CAAC,IAClBzC,GAAQyC,EAAE,GAAIA,EAAE,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrID,OAAS,MAAAE,GAAuB,QAAAC,GAAM,QAAAC,GAAM,OAAAC,GAAiB,SAAAC,GAAO,QAAAC,OAAY,eAGzE,IAAMC,GAAYC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAmC,CAChE,IAAMC,EAAIC,GAAM,CAAC,EACR,IAAIA,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,IAAIE,GAAM,CAAC,CAAC,CAAC,CAAC,EAChD,MAAM,GAAG,EACZC,EAAIL,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBM,EAAIN,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBO,EAAIC,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAG9B,OAAAC,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGC,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAID,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGG,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIH,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EACrDK,EAAIP,GAAKM,EAASF,CAAO,EAAE,MAAM,GAAG,EACpCI,EAAIC,GAAYZ,EAAE,IAAIU,CAAC,CAAC,EAAE,IAAIG,GAAKjB,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACtDkB,EAAIJ,EAAE,IAAIT,CAAC,EAAE,IAAIU,EAAE,EAAE,EAAE,MAAM,GAAG,EAChCI,EAAIhB,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,WAAW,MAAOe,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIhB,CAAC,EAAE,MAAM,GAAG,EAC/EI,EAAE,UAAUC,GAAKQ,EAAE,EAAE,IAAII,CAAC,EAAGA,CAAC,CAAC,CACvC,CAAC,CACT,CAAC,EAEMb,EAAE,EAAE,IAAIA,EAAE,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYc,GAAgBtB,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAmC,CACpE,IAAMC,EAAIC,GAAM,CAAC,EACR,IAAIA,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,IAAIE,GAAM,CAAC,CAAC,CAAC,CAAC,EAChD,MAAM,GAAG,EACZC,EAAIL,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBM,EAAIN,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBO,EAAIC,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAG9B,OAAAC,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGY,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIZ,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGC,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAID,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGG,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIH,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EACrDK,EAAIG,GAAKJ,EAASF,EAASW,CAAO,EAAE,MAAM,GAAG,EAC7CP,EAAIQ,GAAYnB,EAAE,IAAIU,CAAC,CAAC,EAAE,IAAIG,GAAKjB,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACtDkB,EAAIJ,EAAE,IAAIT,CAAC,EAAE,IAAIU,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EACtCI,EAAIhB,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,WAAW,MAAOe,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIhB,CAAC,EAAE,MAAM,GAAG,EAC/EI,EAAE,UAAUC,GAAKQ,EAAE,EAAE,IAAII,CAAC,EAAGA,CAAC,CAAC,CACvC,CAAC,CACT,CAAC,CACT,CAAC,EAEMb,EAAE,EAAE,IAAIA,EAAE,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECpED,OAAS,MAAAkB,GAAuB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,GAAO,QAAAC,OAAY,eCA9D,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IAAqB,CAC3C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOF,GAAKG,EAAGC,EAAGA,EAAE,OAAO,EAAGD,CAAC,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,EDXM,IAAME,GAAUC,GAAG,CAAC,CAACC,EAAGC,EAAOC,CAAC,IAAmC,CAClE,IAAMC,EAAIC,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBC,EAAID,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBE,EAAIF,GAAM,CAAC,EAAE,MAAM,GAAG,EAE5B,OAAAG,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChB,IAAMC,EAAIV,EAAE,IAAIK,CAAC,EAAE,MAAM,GAAG,EACtBM,EAAIC,GAAWF,EAAE,MAAM,CAAC,EAAE,IAAI,GAAI,EAAE,MAAM,GAAG,EAEnDA,EAAE,OAAOA,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,IAAIG,GAASF,CAAC,CAAC,CAAC,EAE5CR,EAAE,UACMO,EAAE,EACO,IAAI,EAAE,EACN,IAAIT,CAAK,EACT,IAAI,EACJ,IAAIG,GAAM,GAAI,EAAE,WAAW,EAAGM,EAAE,IAAIA,CAAC,CAAC,CAAC,EACvC,IAAIL,CAAC,CACtB,EAEAL,EAAE,OAAOA,EAAE,IAAIc,GAAK,IAAM,KAAO,IAAM,GAAI,CAAC,EAAE,IAAIL,EAAE,QAAQ,CAAC,CAAC,EAC9DH,EAAE,UAAUF,GAAM,CAAC,EAAE,IAAIC,CAAC,CAAC,EAC3BA,EAAE,UAAUH,CAAC,CACrB,CAAC,EAEMC,EAAE,IAAIG,CAAC,CACtB,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYS,GAAehB,GAAG,CAAC,CAACC,EAAGE,CAAC,IACtBJ,GAAQE,EAAE,GAAIA,EAAE,EAAGE,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYc,GAAcjB,GAAG,CAAC,CAACC,CAAC,IAClBe,GAAaf,EAAGI,GAAM,IAAI,CAAC,CACzC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYa,GAAmBlB,GAAG,CAAC,CAACC,EAAGC,CAAK,IAC9BH,GAAQE,EAAGC,EAAOG,GAAM,IAAI,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYc,GAAcnB,GAAG,CAAC,CAACC,CAAC,IAClBF,GAAQE,EAAGI,GAAM,CAAC,EAAGA,GAAM,IAAI,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EE5ED,OAAS,MAAAe,GAAuB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,MAAAC,OAAU,eCAxE,OAAS,MAAAC,GAA6B,OAAAC,EAAK,YAAAC,GAAU,OAAAC,GAAK,OAAAC,OAAW,eAErE,IAAMC,GAAmB,EAEZC,GAAgBN,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBN,GAASK,EAAGC,CAAC,CAC3B,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAgBT,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAE,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAiBV,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EACd,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAiBX,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EACd,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYI,GAAgBZ,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYK,GAAiBb,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9E,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAAiBd,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACtG,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYO,GAAgBf,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CACzD,IAAMQ,EAAIX,GACV,OAAOD,GAAIA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EAAE,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAAG,EAAIA,CAAC,CAClF,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBjB,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CAC1D,IAAMQ,EAAIX,GACV,OAAOD,GACCA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EACf,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EACtC,EAAIA,CACZ,CACR,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAiBlB,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CAC1D,IAAMQ,EAAIX,GACV,OAAOD,GACCA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EACf,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EACtC,EAAIA,CACZ,CACR,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAOnB,GAAG,CAAC,CAACO,EAAGC,CAAC,IACdF,GAAcC,EAAGC,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ED1IM,IAAMY,GAAcC,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC7C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAASC,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCC,EAASD,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCE,EAAOC,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BC,EAAOD,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BE,EAAOF,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BG,EAAOH,GAAK,CAAC,EAAE,MAAM,MAAM,EAEjC,OAAAI,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChBF,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGE,CAAE,IAAM,CACnB,IAAMC,EAAIR,GAAKM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,EAC1DE,EAAIC,GAAYhB,EAAE,IAAIc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC1CG,EAAQH,EAAE,IAAIC,CAAC,EAAE,MAAM,OAAO,EAC9B,EAAIG,GAAcD,EAAOhB,CAAC,EAAE,MAAM,GAAG,EAE3CkB,GAAG,EAAE,SAASjB,CAAM,EAAG,IAAM,CACrBE,EAAO,OAAOF,CAAM,EACpBA,EAAO,OAAO,CAAC,EACfM,EAAK,OAAOH,CAAI,EAChBA,EAAK,OAAOS,CAAC,EACbL,EAAK,OAAOF,CAAI,EAChBA,EAAK,OAAOU,CAAK,CACzB,CAAC,EAAE,OAAO,EAAE,SAASb,CAAM,EAAG,IAAM,CAC5BA,EAAO,OAAO,CAAC,EACfI,EAAK,OAAOM,CAAC,EACbL,EAAK,OAAOQ,CAAK,CACzB,CAAC,CACT,CAAC,CACT,CAAC,EAEMX,GAAKJ,EAAQE,CAAM,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYgB,GAAatB,GAAG,CAAC,CAACC,CAAC,IACjBI,GAAM,CAAC,EAAE,IAAIN,GAAYE,CAAC,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYsB,GAAcvB,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC7C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAASC,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCC,EAASD,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCE,EAAOiB,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bf,EAAOe,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bd,EAAOc,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bb,EAAOa,GAAK,CAAC,EAAE,MAAM,MAAM,EAEjC,OAAAZ,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChBF,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGE,CAAE,IAAM,CACnBH,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGY,CAAE,IAAM,CACnB,IAAMT,EAAIQ,GAAKV,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9ER,EAAIS,GAAYxB,EAAE,IAAIc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC1CG,EAAQH,EAAE,IAAIC,CAAC,EAAE,MAAM,OAAO,EAC9BU,EAAIP,GAAcD,EAAOhB,CAAC,EAAE,MAAM,GAAG,EAE3CkB,GAAGM,EAAE,SAASvB,CAAM,EAAG,IAAM,CACrBE,EAAO,OAAOF,CAAM,EACpBA,EAAO,OAAOuB,CAAC,EACfjB,EAAK,OAAOH,CAAI,EAChBA,EAAK,OAAOS,CAAC,EACbL,EAAK,OAAOF,CAAI,EAChBA,EAAK,OAAOU,CAAK,CACzB,CAAC,EAAE,OAAOQ,EAAE,SAASrB,CAAM,EAAG,IAAM,CAC5BA,EAAO,OAAOqB,CAAC,EACfjB,EAAK,OAAOM,CAAC,EACbL,EAAK,OAAOQ,CAAK,CACzB,CAAC,CACT,CAAC,CACT,CAAC,CACT,CAAC,EAEMX,GAAKJ,EAAQE,CAAM,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYsB,GAAa5B,GAAG,CAAC,CAACC,CAAC,IACjBI,GAAM,CAAC,EAAE,IAAIkB,GAAYtB,CAAC,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EElGD,OAAS,MAAA4B,GAAO,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,UAAAC,OAAc,eCAxD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAMD,GAAG,CAAC,CAACE,EAAGC,EAAMC,CAAI,IACtBF,EAAE,IAAIC,CAAI,EAAE,IAAIC,EAAK,IAAID,CAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,MACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EAEYE,GAAWL,GAAG,CAAC,CAACE,EAAGC,EAAMC,EAAME,EAAMC,CAAI,IACvCD,EAAK,IAAIC,EAAK,IAAID,CAAI,EAAE,IAAIJ,EAAE,IAAIC,CAAI,EAAE,IAAIC,EAAK,IAAID,CAAI,CAAC,CAAC,CAAC,CAC1E,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EDvBM,IAAMK,GAAUC,GAAG,CAAC,CAACC,CAAC,IAAc,CACnC,IAAMC,EAAUC,GAAKF,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIG,GAAKH,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,EACjEI,EAAKC,GAAML,CAAC,EAAE,MAAM,EACpBM,EAAML,EAAQ,SAAS,EAAE,MAAM,EACrC,OAAOM,GAAOP,EAAE,IAAII,CAAE,EAAGI,GAASJ,EAAIE,EAAKG,GAAM,CAAC,EAAGT,EAAE,IAAII,CAAE,EAAGJ,CAAC,EAAGI,EAAG,SAASE,CAAG,CAAC,CAC5F,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EEZD,OAAS,MAAAI,GAAoB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,UAAAC,GAAQ,OAAAC,GAAK,cAAAC,GAAY,QAAAC,GAAM,UAAAC,GAAQ,SAAAC,OAAa,eAEpG,IAAMC,GAAUV,GAAG,CAAC,CAACW,EAAGC,CAAK,IAA6B,CAClD,IAAMC,EAAcJ,GAAM,GAAI,EAAE,MAAM,aAAa,EAC7CK,EAAYL,GAAM,GAAI,EAAE,MAAM,WAAW,EACzCM,EAAIT,GAAWQ,EAAWD,EAAaD,CAAK,EAAE,MAAM,GAAG,EAC7D,OAAOP,GAAII,GAAM,EAAG,EAAGE,EAAGI,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAUhB,GAAG,CAAC,CAACW,CAAC,IAAc,CACnC,IAAMM,EAAUb,GAAOG,GAAKN,GAAKU,CAAC,EAAGT,GAAKS,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EACL,MAAM,SAAS,EAClBO,EAAKf,GAAMQ,CAAC,EAAE,MAAM,IAAI,EACxBQ,EAAMF,EAAQ,SAAS,EAAE,MAAM,KAAK,EACpCG,EAAIZ,GAAOU,EAAG,IAAIC,CAAU,EAAGD,EAAG,SAAS,EAAE,IAAID,CAAc,EAAGC,EAAG,SAASC,CAAU,CAAC,EAAE,MAAM,GAAG,EAC1G,OAAOT,GAAQU,EAAUH,CAAc,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYI,GAAcrB,GAAG,CAAC,CAACoB,CAAC,IAClBb,GAAKS,GAAQI,EAAE,CAAC,EAAGJ,GAAQI,EAAE,CAAC,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrCD,OAAS,MAAAE,GAAc,QAAAC,GAAM,QAAAC,GAAM,UAAAC,GAAQ,QAAAC,GAAM,SAAAC,GAAO,OAAAC,OAAW,eCAnE,OAAS,MAAAC,GAAc,OAAAC,GAAK,cAAAC,GAAY,SAAAC,OAAa,eAE9C,IAAMC,GAAUJ,GAAG,CAAC,CAACK,EAAGC,CAAK,IAAqB,CAGjD,IAAMC,EAAIL,GAAW,IAAW,IAAaI,CAAK,EAClD,OAAOL,GAAIE,GAAM,EAAG,EAAGE,EAAGE,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDXM,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAC,IAAc,CACpC,IAAMC,EAAUC,GAAOC,GAAKC,GAAKJ,CAAC,EAAGK,GAAKL,CAAC,CAAC,CAAC,EACvCM,EAAIC,GAAIP,EAAE,IAAIQ,GAAMR,EAAE,IAAI,EAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAC7C,OAAOS,GAAQH,EAAGL,CAAO,CACjC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EEXD,OAAS,MAAAS,GAAO,UAAAC,OAAc,eAEvB,IAAMC,GAAOF,GAAG,CAAC,CAACG,CAAC,IACXF,GAAOE,EAAE,IAAI,EAAE,EAAGA,EAAGA,EAAE,SAAS,CAAC,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAW,QAAAC,OAAY,eAEzB,IAAMC,GAAoBF,GAAG,CAAC,CAACG,EAAGC,EAAQC,CAAC,IACnCJ,GAAKG,EAAO,IAAIC,CAAC,EAAGF,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYG,GAA0BN,GAAG,CAAC,CAACG,EAAGC,CAAM,IACtCH,GAAKG,EAAO,IAAI,GAAI,EAAGD,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,ECvBD,OAAS,MAAAI,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,EAAGC,CAAC,IACdD,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAIC,CAAC,EAAE,SAAS,CACvD,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACE,CAAC,IACjBA,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECnBD,OAAY,MAAAG,OAAmC,eAGxC,IAAMC,GAAWC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACrBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIG,GAAMD,CAAC,CAAC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAeL,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIK,GAAUH,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EACYI,GAAeP,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIO,GAAUL,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAAeT,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIS,GAAUP,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EChDD,OAAY,MAAAQ,OAAU,eAEf,IAAMC,GAAWD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAClBD,EAAE,IAAIC,CAAC,EAAE,MAAM,EAAE,IAAIA,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAW,OAAAC,GAAK,UAAAC,GAAQ,cAAAC,OAAkB,eAG5C,IAAMC,GAAOC,GAAG,CAAC,CAACC,CAAC,IAAsB,CACxC,IAAMC,EAAIC,GAAOF,CAAC,EAClB,OAAOG,GAAIH,CAAC,EAAE,IAAII,GAAWC,GAAQ,EAAGJ,CAAC,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,MAAM,CACtB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAO,SAAAC,GAAO,UAAAC,OAAc,eAE9B,IAAMC,GAAOH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAAiB,CACtC,IAAMC,EAAiBJ,GAAOE,EAAE,SAAS,EAAGA,EAAGA,EAAE,SAAS,EAAG,CAAC,EACxD,EAAIH,GAAM,EAAG,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIK,CAAc,EAAE,IAAID,CAAC,CAAC,EAAE,MAAM,GAAG,EACvE,OAAOH,GAAO,EAAE,SAAS,EAAG,EAAGE,EAAE,SAAS,EAAG,CAAC,CACtD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAG,GAAO,OAAAC,OAAW,eAEpB,IAAMC,GAAWF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAAyE,CAClG,IAAMC,EAAaJ,GAAIE,EAAGA,CAAC,EACrBG,EAAWF,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAOC,EAAW,OAAO,EAAE,IAAIC,CAAQ,EAAE,IAAI,CACrD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECZD,OAAS,MAAAC,GAAqB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEtD,IAAMC,GAAaL,GAAG,CAAC,CAACM,EAAOC,CAAU,IAAwB,CAChE,IAAMC,EAAMP,GAAM,EAAG,EAAE,IAAIA,GAAM,UAAU,CAAC,EAAE,MAAM,KAAK,EACnDQ,EAAOL,GAAKE,CAAK,EAAE,MAAM,MAAM,EAErC,OAAAG,EAAK,OAAOA,EAAK,UAAUL,GAAK,EAAE,CAAC,EAAE,MAAMK,EAAK,WAAWL,GAAK,EAAE,CAAC,CAAC,CAAC,EACrEK,EAAK,OACGA,EACS,OAAOL,GAAK,UAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,SAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,SAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,QAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EAEOF,GAAKD,GAAMK,CAAK,EAAE,IAAIL,GAAMM,CAAU,CAAC,EAAGN,GAAMQ,CAAI,EAAE,IAAID,CAAG,CAAC,CAC7E,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,KAAM,EAC7B,CAAE,KAAM,aAAc,KAAM,KAAM,CAC1C,CACR,CAAC,EAEYE,GAAsBV,GAAG,CAAC,CAACW,CAAC,IAAoB,CACrD,IAAMC,EAAMX,GAAM,CAAC,EAAE,IAAIY,EAAE,EAAE,IAAIF,EAAE,CAAC,EAAE,MAAM,KAAK,EAC3CG,EAAYb,GAAM,CAAC,EAAE,IAAIU,EAAE,CAAC,EAAE,MAAM,WAAW,EAC/CI,EAAWD,EAAU,KAAK,EAAE,MAAM,UAAU,EAC5CE,EAAWf,GAAM,CAAC,EAAE,IAAIa,CAAS,EAAE,KAAK,EAAE,MAAM,UAAU,EAChE,OAAOX,GAAKS,EAAI,IAAI,EAAE,IAAII,CAAQ,EAAGJ,EAAI,IAAI,EAAE,IAAII,CAAQ,EAAGD,CAAQ,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrDD,OAAS,MAAAE,GAAW,OAAAC,GAAK,SAAAC,OAAa,eAE/B,IAAMC,GAAWH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAClBJ,GAAIG,EAAE,IAAIC,CAAC,EAAG,CAAC,EAAE,IAAIH,GAAM,CAAC,EAAE,IAAIG,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAI,OAAAC,OAAW,eAGjB,IAAMC,GAASF,GAAG,CAAC,CAACG,EAAGC,EAAKC,CAAG,IACvBJ,GAAIE,EAAE,iBAAiBC,CAAG,EAAE,IAAID,EAAE,cAAcE,CAAG,CAAC,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACG,EAAGC,EAAKC,CAAG,IAC5BF,EAAE,iBAAiBC,CAAG,EAAE,IAAID,EAAE,cAAcE,CAAG,CAAC,CAC9D,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAaP,GAAG,CAAC,CAACQ,EAAGJ,EAAKC,CAAG,IAC3BG,EAAE,EACA,iBAAiBJ,EAAI,CAAC,EACtB,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,EAC5B,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYI,GAAaT,GAAG,CAAC,CAACQ,EAAGJ,EAAKC,CAAG,IAC3BG,EAAE,EACA,iBAAiBJ,EAAI,CAAC,EACtB,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,EAC5B,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,EAC7D,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYK,GAAaV,GAAG,CAAC,CAACQ,EAAGG,CAAI,IACvBJ,GAAWC,EAAGG,EAAK,GAAIA,EAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,ECnED,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IACfF,GAAM,EAAG,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC9E,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAaD,GAAG,CAAC,CAACE,CAAC,IACjBA,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAClD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAM,CAAC,EAAE,IAAIE,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,MAAM,EACZE,EAAIF,EAAE,IAAI,CAAC,EAAE,MAAM,EACnBG,EAAKF,EAAE,IAAIC,CAAC,EAClB,OAAOD,EAAE,IAAIC,CAAC,EAAE,IAAIC,EAAG,IAAI,CAAC,CAAC,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECXD,OAAS,MAAAC,GAA6B,OAAAC,OAAW,eAE1C,IAAMC,GAAQF,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAQJ,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAQL,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIA,GAAIE,EAAE,EAAGA,EAAE,CAAC,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAOD,GC1BpB,OAAS,MAAAE,GAAO,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,eAGtC,IAAMC,GAAOL,GAAG,CAAC,CAACM,EAAGC,EAAGC,CAAC,IACjBP,GAAIK,EAAGC,EAAGC,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYC,GAAQT,GAAG,CAAC,CAACM,EAAGC,EAAGC,EAAGE,CAAG,IACvBT,GAAIA,GAAIK,EAAGC,EAAGG,EAAI,IAAI,CAAC,CAAC,EAAGT,GAAIM,EAAGC,EAAGN,GAAIQ,EAAK,EAAG,EAAE,IAAI,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGP,GAAK,GAAKO,CAAG,CAAC,CACjG,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAGYC,GAAQX,GAAG,CAAC,CAACM,EAAGC,EAAGC,EAAGI,EAAGF,CAAG,IAC1BT,GACCA,GAAIK,EAAGC,EAAGG,EAAI,IAAI,CAAC,CAAC,EACpBT,GAAIM,EAAGN,GAAIO,EAAGI,EAAGV,GAAIQ,EAAK,GAAI,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,CAAC,EAAGN,GAAMM,EAAK,IAAM,GAAI,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,CAAC,EAC1FP,GAAK,IAAMO,CAAG,CACtB,CACP,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EC9CD,OAAS,MAAAG,GAAa,QAAAC,OAAY,eAI3B,IAAMC,GAAOF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAAoB,CACzC,IAAMC,EAAQD,EAAE,IAAI,CAAC,EAAE,MAAM,EACvBE,EAAWH,EAAE,IAAIE,CAAK,EAAE,MAAM,EAC9BE,EAAID,EAAS,IAAIF,CAAC,EAAE,MAAM,EAAE,MAAM,EAClCI,EAAUF,EAAS,IAAIF,CAAC,EAAE,IAAIC,CAAK,EACzC,OAAOJ,GAAKM,EAAE,EAAGA,EAAE,EAAGC,EAAQ,EAAGA,EAAQ,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYC,GAAWT,GAAG,CAAC,CAACG,EAAGC,CAAC,IACVF,GAAKC,EAAGC,CAAC,EACV,EACrB,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYM,GAAWV,GAAG,CAAC,CAACG,EAAGC,CAAC,IACVF,GAAKC,EAAGC,CAAC,EACV,EACrB,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EC3CD,OAAS,MAAAO,OAAe,eAEjB,IAAMC,GAAOD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAAuB,CAC5C,IAAMC,EAAKF,EAAE,QAAQ,EACfG,EAAKF,EAAE,QAAQ,EACfG,EAAWF,EAAG,IAAIC,CAAE,EAAE,MAAM,EAClC,OAAOH,EAAE,IAAII,EAAS,IAAID,CAAE,EAAE,MAAM,CAAC,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,MACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,KAAM,EACzB,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,ECdD,OAAS,MAAAE,GAAiB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE1D,IAAMC,GAAcD,GAAM,IAAQ,GAAK,EACjCE,GAAcJ,GAAK,IAAQ,IAAQ,IAAO,IAAQ,IAAO,GAAK,EAC9DK,GAAcH,GAAM,EAAI,GAAG,EAEpBI,GAAOR,GAAG,CAAC,CAACS,CAAC,IAAqB,CACvC,IAAMC,EAAIP,GAAKF,GAAMQ,EAAE,IAAIH,EAAW,CAAC,EAAGG,CAAC,EAAE,MAAM,EACnD,OAAAC,EAAE,IAAI,OAAOA,EAAE,IAAI,IAAIA,EAAE,IAAI,IAAIH,EAAW,CAAC,CAAC,EACvCG,EAAE,IAAIL,EAAW,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECdD,OAAS,MAAAM,OAAiB,eAEnB,IAAMC,GAAWD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAClBD,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,OAAa,eAGf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,IAAIA,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IAAc,CAChC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC9B,OAAOC,EAAG,IAAIA,CAAE,EAAE,IAAID,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAE,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IAAc,CAChC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAG9B,OAFWC,EAAG,IAAIA,CAAE,EAAE,MAAM,IAAI,EAClB,IAAIA,CAAE,EAAE,MAAM,IAAI,EACtB,IAAID,CAAC,CACvB,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECXD,OAAS,MAAAE,GAAc,SAAAC,OAAa,eAE7B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBD,EAAE,IAAKF,GAAM,CAAC,EAAU,IAAIG,CAAC,EAAE,IAAID,CAAC,EAAE,IAAIC,CAAC,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,kBAE3C,IAAMC,GAAYJ,GAAG,CAAC,CAACK,CAAC,IAAoB,CAC3C,IAAMC,EAAMD,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BE,EAAMF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BG,EAAMH,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BI,EAAMJ,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BK,EAAML,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BM,EAAMN,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BO,EAAMP,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BQ,EAAMR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BS,EAAMT,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAEpC,OAAOJ,GACCC,GAAKC,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAII,EAAI,IAAIC,CAAG,CAAC,CAAC,EAAGL,GAAM,CAAC,EAAE,IAAIO,EAAI,IAAIE,CAAG,CAAC,EAAGT,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIE,CAAG,CAAC,CAAC,EACrGT,GAAKC,GAAM,CAAC,EAAE,IAAIO,EAAI,IAAIE,CAAG,CAAC,EAAGT,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAIE,CAAG,CAAC,CAAC,EAAGL,GAAM,CAAC,EAAE,IAAIU,EAAI,IAAIC,CAAG,CAAC,CAAC,EACrGZ,GAAKC,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIE,CAAG,CAAC,EAAGR,GAAM,CAAC,EAAE,IAAIU,EAAI,IAAIC,CAAG,CAAC,EAAGX,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAIC,CAAG,CAAC,CAAC,CAAC,CAC7G,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EC3BD,OAAS,MAAAQ,OAAsB,kBCA/B,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,eAEpC,IAAMC,GAASH,GAAG,CAAC,CAACI,CAAC,IACbH,GAAKC,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CAChF,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EDTM,IAAMG,GAAYC,GAAG,CAAC,CAACC,CAAC,IAChBC,GAAOC,GAAUF,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EEfD,OAAS,MAAAG,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,EAAE,GAAG,EAAGD,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IACfF,GAAKE,EAAE,IAAI,OAAO,EAAGA,EAAE,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECbD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAE/B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,CAAC,EAAGD,EAAE,EAAE,IAAIC,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAeF,GAAG,CAAC,CAAC,IAClBC,GAAK,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CACjB,CAAC,ECRD,OAAS,MAAAE,OAAgB,kBCAzB,OAAS,MAAAC,OAAuB,kBAEzB,IAAMC,GAAeD,GAAG,CAAC,CAACE,CAAC,IACnBA,EAAE,IAAI,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EDRM,IAAMC,GAAcC,GAAG,CAAC,CAACC,CAAC,IAClBC,GAAQC,GAASF,CAAC,EAAGG,GAAaH,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EEhBD,OAAS,MAAAI,OAAuB,kBAGzB,IAAMC,GAAaC,GAAG,CAAC,CAACC,CAAC,IACjBC,GAAaD,CAAC,EAAE,KAAK,CACnC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECdD,OAAS,MAAAE,GAAuB,MAAAC,GAAI,UAAAC,GAAQ,SAAAC,OAAa,kBAElD,IAAMC,GAAWJ,GAAG,CAAC,CAACK,EAAIC,EAAIC,CAAC,IAAiC,CAC/D,IAAMC,EAAeH,EAAG,EAAE,IAAIC,EAAG,CAAC,EAAE,IAAID,EAAG,IAAI,IAAIC,EAAG,GAAG,CAAC,EAAE,MAAM,cAAc,EAC1EG,EAAaH,EAAG,OAAO,EAAE,OAAOA,EAAIE,EAAa,SAAS,CAAC,CAAC,EAAE,MAAM,YAAY,EAChFE,EAAkBF,EAAa,IAAI,EAAE,MAAM,iBAAiB,EAElEP,GAAGS,EAAgB,iBAAiB,CAAC,EAAG,IAAM,CACtCR,GAAOG,CAAE,CACjB,CAAC,EAED,IAAMM,EAAYD,EAAgB,KAAK,EAAE,MAAM,WAAW,EACpDE,EAAeT,GAAM,CAAC,EAAE,IAAIO,EAAgB,IAAIA,CAAe,CAAC,EAAE,KAAK,EAAE,MAAM,cAAc,EAEnGT,GAAGW,EAAa,IAAI,EAAE,SAAS,IAAK,EAAG,IAAM,CACrCV,GAAOG,EAAG,IAAI,CAAC,EAAE,IAAII,EAAW,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAC3D,CAAC,EAED,IAAMI,EAASV,GAAM,CAAC,EAAE,IAAII,CAAC,EAAE,IAAII,CAAS,EAAE,IAAI,EAAE,IAAIC,CAAY,EAAE,MAAM,QAAQ,EAC9EE,EAASP,EAAE,IAAII,CAAS,EAAE,IAAI,EAAE,IAAIC,CAAY,EAAE,MAAM,QAAQ,EAEtE,OAAOP,EAAG,IAAIQ,CAAM,EAAE,IAAIJ,EAAW,IAAIK,CAAM,CAAC,EAAE,UAAU,CACpE,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAE/B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAIC,CAAE,IACnBH,GACCG,EAAG,IAAI,IAAID,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,IAAIC,EAAG,CAAC,CAAC,EAAE,IAAID,EAAG,IAAI,MAAMC,EAAG,GAAG,CAAC,EAC/DD,EAAG,EAAE,IAAIC,EAAG,CAAC,EAAE,IAAID,EAAG,IAAI,IAAIC,EAAG,GAAG,CAAC,CAC7C,CACP,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,KACN,KAAM,MACd,CACR,CACR,CAAC,EAEYC,GAAgBL,GAAG,CAAC,CAACM,EAAGC,CAAC,IACvBN,GAAKK,EAAE,IAAI,IAAIC,CAAC,EAAGD,EAAE,EAAE,IAAIC,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECrCD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAE,IAAI,OAAO,EAAGA,EAAE,EAAE,OAAO,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECbD,OAAS,MAAAC,OAAgB,kBAIlB,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAC,IACfC,GAAQD,EAAGE,GAAWF,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECfD,OAAS,MAAAG,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,EAAE,GAAG,EAAGD,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IAAc,CAC1C,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC9B,OAAOC,EAAG,IAAKH,GAAM,CAAC,EAAU,IAAIG,CAAE,CAAC,CACxC,CAAC,EAAE,UAAU,CACZ,KAAM,UACN,KAAM,OACN,OAAQ,CACP,CACC,KAAM,IACN,KAAM,MACP,CACD,CACD,CAAC,ECdD,OAAS,MAAAC,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,eAElD,IAAMC,GAAWJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA2B,CACpD,IAAMC,EAAOF,EAAE,UAAU,EAAE,MAAM,MAAM,EACjCG,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAIH,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBI,EAAKT,GAAM,CAAC,EAAE,IAAIQ,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAOR,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,CACpD,EACMI,EAAOT,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,CACpD,EACMK,EAAOV,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,CACxC,EACA,OAAOP,GAAKS,EAAMC,EAAMC,CAAI,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECpCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GACCC,GAAK,EAAG,EAAG,CAAC,EACZA,GAAK,EAAGG,EAAGC,CAAC,EACZJ,GAAK,EAAGI,EAAE,OAAO,EAAGD,CAAC,CAC7B,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECnBD,OAAS,MAAAE,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GACCC,GAAKG,EAAG,EAAGC,EAAE,OAAO,CAAC,EACrBJ,GAAK,EAAG,EAAG,CAAC,EACZA,GAAKI,EAAG,EAAGD,CAAC,CACpB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECnBD,OAAS,MAAAE,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GACCC,GAAKG,EAAGC,EAAG,CAAC,EACZJ,GAAKI,EAAE,OAAO,EAAGD,EAAG,CAAC,EACrBH,GAAK,EAAG,EAAG,CAAC,CACpB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECnBD,OAAS,MAAAK,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,eAElD,IAAMC,GAAWJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA2B,CACpD,IAAMC,EAAOF,EAAE,UAAU,EAAE,MAAM,MAAM,EACjCG,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAIH,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBI,EAAKT,GAAM,CAAC,EAAE,IAAIQ,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAOR,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5C,CACR,EACMI,EAAOT,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5C,CACR,EACMK,EAAOV,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChC,CACR,EACMK,EAAOX,GAAK,EAAG,EAAG,EAAG,CAAC,EAC5B,OAAOD,GAAKS,EAAMC,EAAMC,EAAMC,CAAI,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECxCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GACCC,GAAK,EAAG,EAAG,EAAG,CAAC,EACfA,GAAK,EAAGG,EAAGC,EAAG,CAAC,EACfJ,GAAK,EAAGI,EAAE,OAAO,EAAGD,EAAG,CAAC,EACxBH,GAAK,EAAG,EAAG,EAAG,CAAC,CACvB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECpBD,OAAS,MAAAK,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAKG,EAAG,EAAGC,EAAE,OAAO,EAAG,CAAC,EAAGJ,GAAK,EAAG,EAAG,EAAG,CAAC,EAAGA,GAAKI,EAAG,EAAGD,EAAG,CAAC,EAAGH,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CACnG,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECfD,OAAS,MAAAK,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GACCC,GAAKG,EAAGC,EAAG,EAAG,CAAC,EACfJ,GAAKI,EAAE,OAAO,EAAGD,EAAG,EAAG,CAAC,EACxBH,GAAK,EAAG,EAAG,EAAG,CAAC,EACfA,GAAK,EAAG,EAAG,EAAG,CAAC,CACvB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECpBD,OAAS,MAAAK,GAAO,SAAAC,OAAa,eAE7B,IAAMC,GAAkBD,GAAM,KAAO,EAExBE,GAAkBH,GAAG,CAAC,CAACI,CAAC,IAC7BA,EAAE,IAAIF,EAAe,CAC5B,EAAE,UAAU,CACZ,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CACrC,CAAC,ECVD,OAAS,MAAAG,GAAiB,QAAAC,OAAkB,eAErC,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IAClBF,GAAKE,EAAG,EAAG,EAAGA,CAAC,CACzB,EAAE,UAAU,CACT,KAAM,UACN,KAAM,OACN,OAAQ,CACJ,CACI,KAAM,IACN,KAAM,OACV,CACJ,CACJ,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACG,CAAC,IACrBF,GAAKE,EAAE,EAAG,EAAG,EAAGA,EAAE,CAAC,CAC7B,EAAE,UAAU,CACT,KAAM,UACN,KAAM,OACN,OAAQ,CACJ,CACI,KAAM,IACN,KAAM,MACV,CACJ,CACJ,CAAC,EAEYE,GAAYL,GAAG,CAAC,CAACM,EAAGC,CAAC,IACvBN,GAAKK,EAAG,EAAG,EAAGC,CAAC,CACzB,EAAE,UAAU,CACT,KAAM,UACN,KAAM,OACN,OAAQ,CACJ,CACI,KAAM,IACN,KAAM,OACV,EACA,CACI,KAAM,IACN,KAAM,OACV,CACJ,CACJ,CAAC,EC3CD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,eAErC,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAGA,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACG,CAAC,IACjBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EChBD,OAAS,MAAAE,GAA6B,QAAAC,OAAY,eAE3C,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACK,EAAGC,EAAGC,CAAC,IACvBN,GAAKI,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAcR,GAAG,CAAC,CAACK,EAAGC,EAAGC,EAAGE,CAAC,IAC3BR,GAAKI,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGE,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAcV,GAAG,CAAC,CAACG,CAAC,IAClBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACvE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAcX,GAAG,CAAC,CAACG,CAAC,IAClBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,CAAC,CACzE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECjDD,OAAS,MAAAS,OAAa,eAGf,IAAMC,GAAeC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAoB,CAE3D,IAAMC,EADaD,EAAE,IAAIF,CAAC,EAAE,IAAIC,EAAE,IAAID,CAAC,CAAC,EAAE,MAAM,YAAY,EAC/B,SAAS,EAAE,MAAM,WAAW,EACzD,OAAOI,GAAQD,CAAS,CACzB,CAAC,EAAE,UAAU,CACZ,KAAM,eACN,KAAM,OACN,OAAQ,CACP,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAC3B,CACD,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,OAAY,eAE9B,IAAMC,GAASF,GAAG,CAAC,CAACG,CAAC,IACbF,GAAKE,EAAE,CAAC,EAAE,IAAKA,EAAE,CAAC,EAAE,IAAKA,EAAE,CAAC,EAAE,GAAG,CAC/C,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECbD,OAAS,MAAAC,GAA0B,QAAAC,OAAY,eAExC,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAGC,EAAGC,CAAC,IAAyB,CACxD,GAAID,IAAM,QAAaC,IAAM,OAAW,CAChC,IAAMC,EAAIH,EACV,OAAOF,GACC,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACTK,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAG,CACvB,CACR,KAIQ,QAAOL,GACC,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EANNE,EACAC,EACAC,EAKS,CACpB,CAEhB,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EC9BD,OAAS,MAAAE,GAAuB,OAAAC,GAAK,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE9D,IAAMC,GAAkBD,GAAM,IAAQ,GAAK,EACrCE,GAAcJ,GAAK,IAAQ,IAAQ,IAAO,IAAQ,IAAO,GAAK,EAC9DK,GAAgBF,GAAgB,IAAIF,GAAKG,GAAa,CAAG,CAAC,EAEnDE,GAAUR,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC1C,IAAMC,EAAIR,GAAK,EAAG,GAAO,GAAS,EAClC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,GAAK,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAWX,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,IAAS,IAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,IAAM,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAWZ,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,KAAS,KAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,KAAO,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAWb,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,KAAS,MAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,MAAQ,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAYd,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC5C,IAAMC,EAAIR,GAAK,IAAK,MAAW,OAAe,EAC9C,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,OAAS,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAYf,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC5C,IAAMC,EAAIR,GAAK,IAAK,MAAW,QAAe,EAC9C,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,QAAU,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYM,GAAahB,GAAG,CAAC,CAACS,EAAGQ,CAAI,IAA4B,CAC1D,IAAMC,EAAQD,EAAK,IAAIA,CAAI,EAAE,IAAIA,CAAI,EAC/BP,EAAIR,GAAKe,EAAMA,EAAK,IAAIA,CAAI,EAAGC,CAAK,EAC1C,OAAOjB,GAAIQ,EAAGC,CAAC,EAAE,IAAIQ,CAAK,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYC,GAASnB,GAAG,CAAC,CAACS,CAAC,IACbR,GAAIQ,EAAGF,EAAa,CAClC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYa,GAAgBpB,GAAG,CAAC,CAACS,CAAC,IACpBM,GAAUN,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECvFD,OAAS,MAAAY,OAAuB,eAEzB,IAAMC,GAAYD,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,OAAO,CACvB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAkBH,GAAG,CAAC,CAACE,EAAGE,CAAC,IACzBF,EAAE,OAAO,EAAE,IAAIE,CAAC,CAC9B,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECnBD,OAAS,MAAAC,OAAgB,eAElB,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,IAAI,EAAE,MAAM,EACxB,OAAOC,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACE,EAAGG,CAAC,IAAoB,CAC/C,IAAMF,EAAID,EAAE,IAAI,EAAE,IAAIG,CAAC,EAAE,MAAM,EAC/B,OAAOF,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECvBD,OAAS,MAAAG,OAAgB,eAElB,IAAMC,GAASD,GAAG,CAAC,CAACE,EAAIC,CAAC,IAA0B,CAClD,IAAMC,EAASF,EAAG,MAAM,QAAQ,EAChC,OAAAE,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAID,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,EACnCC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,SAAAC,GAAO,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,eAEzE,IAAMC,GAAKD,GAAM,iBAAiC,EAC5CE,GAASF,GAAM,iBAAgC,EAC/CG,GAAyBF,GAAG,IAAI,EAAI,EAE7BG,GAAkBX,GAAG,CAAC,CAACY,CAAG,IAAoB,CACnD,IAAMC,EAAQX,GAAMU,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIH,EAAM,EACtCK,EAAaT,GAAIQ,EAAOH,EAAsB,EAC9CK,EAASF,EAAM,IAAIC,CAAU,EACnC,OAAOR,GAAKH,GAAIY,CAAM,EAAGX,GAAIW,CAAM,CAAC,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAkBhB,GAAG,CAAC,CAACY,CAAG,IAAoB,CACnD,IAAMC,EAAQX,GAAMU,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIH,EAAM,EACtCK,EAAaT,GAAIQ,EAAOH,EAAsB,EAC9CK,EAASF,EAAM,IAAIC,CAAU,EAC7BG,EAASX,GAAKH,GAAIY,CAAM,EAAGX,GAAIW,CAAM,CAAC,EAO5C,OAN2Bd,GACnBE,GAAIO,EAAsB,EAC1BN,GAAIM,EAAsB,EAC1BN,GAAIM,EAAsB,EAAE,OAAO,EACnCP,GAAIO,EAAsB,CAClC,EAC0B,IAAIO,CAAM,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAkBlB,GAAG,CAAC,CAACY,CAAG,IAAqB,CACpD,IAAMC,EAAQX,GAAMU,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIH,EAAM,EAE5C,OADmBJ,GAAIQ,EAAOH,EAAsB,EAClC,IAAIA,EAAsB,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC3CD,OAAS,MAAAS,GAAuB,OAAAC,GAAK,SAAAC,GAAO,SAAAC,OAAa,eCAzD,OAAS,MAAAC,GAAuB,QAAAC,GAAM,SAAAC,GAAO,SAAAC,OAAa,eAEnD,IAAMC,GAASJ,GAAG,CAAC,CAACK,CAAE,IACdJ,GAAKC,GAAMG,CAAE,EAAGF,GAAME,CAAE,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,EAAIE,CAAK,IAC1BH,GAAOC,EAAG,IAAIE,CAAK,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDhBM,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAAoB,CAC3C,IAAMC,EAAS,EAAE,MAAM,QAAQ,EAC/B,OAAAA,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAIC,GAAID,EAAO,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACvDA,EAAO,EAAE,OAAOE,GAAMF,EAAO,EAAE,IAAIA,EAAO,CAAC,CAAC,CAAC,EAC7CA,EAAO,EAAE,OAAOG,GAAMH,EAAO,CAAC,CAAC,EACxBA,CACf,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAgBL,GAAG,CAAC,CAACM,CAAE,IACrBP,GAAUQ,GAAOD,CAAE,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAiBR,GAAG,CAAC,CAACM,EAAIG,CAAC,IACzBJ,GAAcC,EAAG,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAqBV,GAAG,CAAC,CAACM,EAAIG,CAAC,IAC7BJ,GAAcC,EAAG,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EE3CD,OAAS,MAAAE,GAAgB,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEzD,IAAMC,GAAaN,GAAG,CAAC,CAACO,CAAE,IAClBH,GAAKH,GAAMM,EAAG,EAAGA,EAAG,CAAC,EAAGL,GAAOK,CAAE,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACO,CAAE,IAAoB,CAC/C,IAAME,EAAIP,GAAOK,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAMP,GAAKI,EAAG,EAAE,IAAIE,CAAC,CAAC,EAAE,MAAM,KAAK,EACnCE,EAAQV,GAAMM,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,OAAO,EAC7C,OAAOF,GAAKI,EAAGC,EAAKC,CAAK,CACjC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECnBD,OAAS,MAAAC,OAA6B,eAKtC,SAASC,GAAOC,EAAa,CACrB,OAAOA,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC7B,CAEO,IAAMC,GAAcH,GAAG,CAAC,CAACI,CAAC,IAClBH,GAAOG,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaL,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAOC,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAaN,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAOC,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC/BD,OAAS,MAAAK,GAAuB,OAAAC,GAAK,OAAAC,OAAW,eAGzC,IAAMC,GAAcC,GAAG,CAAC,CAAC,CAAC,IAAqB,CAC9C,IAAMC,EAAIC,GAAI,EAAE,GAAI,CAAC,EAAE,MAAM,GAAG,EAChC,OAAOC,GAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAkBJ,GAAG,CAAC,CAACK,CAAC,IACtBN,GAAYO,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAmBP,GAAG,CAAC,CAACK,EAAGG,CAAC,IAC1BJ,GAAgBC,EAAE,IAAIG,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAuBT,GAAG,CAAC,CAACK,EAAGG,CAAC,IAC9BJ,GAAgBC,EAAE,IAAIG,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECxCD,OAAS,MAAAE,GAAW,UAAAC,OAAc,eAG3B,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAOC,EAAMC,CAAG,IACjCD,EAAK,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,EAAE,IAAIE,CAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAGYC,GAA0BN,GAAG,CAAC,CAACG,EAAOC,EAAMC,CAAG,IAC7CF,EAAM,IAAIC,EAAK,IAAIC,CAAG,CAAC,EAAE,IAAID,CAAI,CAC/C,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAGYG,GAAsBP,GAAG,CAAC,CAACG,EAAOC,EAAMC,EAAKG,CAAY,IAA2C,CACzG,IAAMC,EAAcL,EAAK,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,EAAE,IAAIE,CAAG,CAAC,EACjEK,EAAQP,EAAM,IAAIC,EAAK,IAAIC,CAAG,CAAC,EAAE,IAAID,CAAI,EAC/C,OAAOH,GAAOS,EAAOD,EAAaD,EAAa,YAAY,EAAG,CAAC,CACvE,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,eAAgB,KAAM,OAAQ,CAC9C,CACR,CAAC,EC1CD,OAAS,MAAAG,GAAmB,WAAAC,GAAS,SAAAC,GAAO,QAAAC,GAAM,OAAAC,GAAK,QAAAC,GAAM,MAAAC,OAAU,eCAvE,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAgBH,GAAG,CAAC,CAACI,EAASC,CAAE,IAAoB,CACzD,IAAMC,EAAQF,EAAQ,UAAU,EAAE,MAAM,EAClCG,EAAQF,EAAG,MAAMC,CAAK,EAAE,UAAU,EAAE,MAAM,EAC1CE,EAAQF,EAAM,MAAMC,CAAK,EAAE,MAAM,EACvC,OAAOL,GAAKK,EAAOC,EAAOF,CAAK,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,UAAW,KAAM,MAAO,EAChC,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYG,GAAST,GAAG,CAAC,CAACU,EAAKC,EAAQN,CAAE,IAA0B,CAC5D,IAAMD,EAAUO,EAAO,IAAID,CAAG,EAAE,UAAU,EAAE,MAAM,EAClD,OAAOP,GAAcC,EAASC,CAAE,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYO,GAAaZ,GAAG,CAAC,CAACU,EAAKC,EAAQE,CAAI,IAA2B,CACnE,IAAMR,EAAKJ,GAAKY,EAAK,IAAI,EAAGA,EAAK,IAAI,EAAG,CAAC,EAAE,MAAM,EACjD,OAAOJ,GAAOC,EAAKC,EAAQN,CAAE,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYS,GAAcd,GAAG,CAAC,CAACI,CAAO,IACxBD,GAAcC,EAASH,GAAK,EAAG,EAAG,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,UAAW,KAAM,MAAO,CAAC,CAClD,CAAC,ED7CD,IAAMc,GAAiBC,GAAM,CAAC,EAAE,SAAS,gBAAgB,EACnDC,GAAqBD,GAAM,GAAI,EAAE,SAAS,oBAAoB,EAC9DE,GAA0BC,GAAI,GAAG,EAAE,SAAS,yBAAyB,EAE9DC,GAAWC,GAAG,CAAC,CAACC,EAAKC,EAAIC,CAAE,IAA6B,CAE7D,IAAMC,EADKF,EAAG,EAAE,IAAIR,EAAc,EAAE,MAAM,IAAI,EACjC,IAAIS,EAAG,CAAC,EAAE,MAAM,GAAG,EAC1BE,EAAOC,GAAKJ,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,EAAGF,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,EAAGF,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FG,EAAOF,EAAK,MAAM,MAAM,EACxBG,EAAQH,EAAK,EAAE,MAAM,OAAO,EAC5BI,EAAOd,GAAM,CAAC,EAAE,MAAM,MAAM,EAC5Be,EAAKf,GAAM,CAAC,EAAE,MAAM,IAAI,EAE9B,OAAAgB,GAAKd,GAAyB,IAAM,CAC5BQ,EAAK,OAAOE,CAAI,EAChBA,EAAK,OAAOF,EAAK,IAAIF,EAAG,IAAIP,EAAkB,CAAC,CAAC,EAChDa,EAAK,OAAOG,GAAQX,EAAKM,EAAK,GAAG,IAAI,EAAG,CAAC,EAAE,CAAC,EAC5CG,EAAG,OAAOH,EAAK,EAAE,IAAIE,EAAK,IAAIf,EAAc,CAAC,CAAC,EAE9CmB,GAAGH,EAAG,SAAS,CAAC,EAAG,IAAM,CACjB,IAAMN,EAAII,EAAM,IAAIE,EAAG,IAAI,EAAE,IAAIF,CAAK,CAAC,EAAE,MAAM,GAAG,EAClD,OAAOH,EAAK,IAAID,EAAE,IAAIG,EAAK,IAAIF,CAAI,CAAC,CAAC,EAAE,IAAIC,GAAK,GAAK,GAAK,CAAC,CAAC,CACpE,CAAC,EAEDE,EAAM,OAAOE,CAAE,CACvB,CAAC,EAEMJ,GAAK,EAAG,EAAG,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYQ,GAAad,GAAG,CAAC,CAACC,EAAKC,EAAIa,CAAE,IAA6B,CAC/D,IAAMZ,EAAKa,GAAYd,EAAG,OAAO,CAAC,EACzB,IAAII,GAAKS,EAAG,IAAIpB,GAAM,EAAG,CAAC,EAAG,CAAC,EAAE,UAAU,CAAC,EAC3C,MAAM,IAAI,EACnB,OAAOI,GAASE,EAAKC,EAAIC,CAAE,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EEtDD,OAAS,MAAAc,GAAgB,QAAAC,GAAM,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,eAGrD,IAAMC,GAAeC,GAAG,CAAC,CAACC,CAAE,IAAoB,CAC/C,IAAMC,EAAMC,GAAG,IAAIF,EAAG,EAAE,IAAIE,EAAE,CAAC,EAAE,MAAM,KAAK,EACtCC,EAAQH,EAAG,EAAE,IAAII,EAAM,EAAE,MAAM,OAAO,EACtCC,EAAMC,GAAKC,GAAIJ,CAAK,EAAG,EAAGK,GAAIL,CAAK,CAAC,EAAE,MAAM,KAAK,EACvDE,EAAI,EAAE,OAAOE,GAAIN,CAAG,CAAC,EACrB,IAAMQ,EAAaC,GAAKC,GAAM,CAAC,EAAE,IAAIN,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,EAC1E,OAAAA,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAII,CAAU,CAAC,EAClCJ,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAII,CAAU,CAAC,EAC3BJ,CACf,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EChBD,OAAS,MAAAO,GAAgB,QAAAC,OAAY,eCArC,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,eAEpC,IAAMC,GAAgBH,GAAG,CAAC,CAACI,EAAGC,CAAW,IACjCH,GAAKD,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKI,EAAa,CAAC,CAAC,CACpF,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,cAAe,KAAM,MAAO,CAC5C,CACR,CAAC,EDPM,IAAMC,GAAYC,GAAG,CAAC,CAACC,EAAUC,CAAK,IAA0B,CAC/D,IAAMC,EAAOC,GAAUF,EAAM,CAAC,EACxBG,EAAOC,GAAUJ,EAAM,CAAC,EACxBK,EAAOC,GAAUN,EAAM,CAAC,EACxBO,EAAWC,GAAK,CAAC,EAAE,MAAM,UAAU,EACnCC,EAAWJ,EAAK,IAAIF,CAAI,EAAE,IAAIF,CAAI,EAAE,IAAIM,CAAQ,EAAE,MAAM,UAAU,EACxE,OAAOG,GAAcD,EAAUV,CAAQ,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EElBD,OAAS,MAAAY,GAAgB,QAAAC,GAAM,QAAAC,GAAM,OAAAC,GAAK,SAAAC,OAAa,eAGhD,IAAMC,GAAcC,GAAG,CAAC,CAACC,CAAE,IAAoB,CAC9C,IAAMC,EAAMD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,EAClCE,EAAIC,GAAKF,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC1DG,EAAMC,GAAKJ,EAAI,EAAE,IAAIC,CAAC,EAAG,EAAGD,EAAI,EAAE,IAAIC,CAAC,CAAC,EAAE,MAAM,KAAK,EACrDI,EAAMJ,EAAE,IAAIK,EAAE,EAAE,IAAI,GAAI,EAAE,MAAM,KAAK,EAC3CH,EAAI,EAAE,OAAOI,GAAIF,CAAG,CAAC,EACrB,IAAMG,EAAaN,GAAKO,GAAM,CAAC,EAAE,IAAIN,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,EAC1E,OAAAA,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAIK,CAAU,CAAC,EAClCL,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAIK,CAAU,CAAC,EAC3BL,CACf,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECjBD,OAAS,MAAAO,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEhD,IAAMC,GAAYJ,GAAG,CAAC,CAACK,CAAC,IAChBJ,GAAKI,EAAE,EAAGA,EAAE,EAAE,SAAS,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAYN,GAAG,CAAC,CAACK,CAAC,IAChBH,GAAKG,EAAE,EAAGA,EAAE,EAAE,SAAS,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAYP,GAAG,CAAC,CAACK,CAAC,IAChBF,GAAKE,EAAE,EAAGA,EAAE,EAAE,SAAS,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECxBD,OAAS,MAAAG,GAAgB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,OAAAC,GAAK,UAAAC,OAAc,eAE/D,IAAMC,GAAUP,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC1C,IAAMC,EAAIR,GAAK,EAAG,SAAS,EAAE,MAAM,GAAG,EAChC,EAAIA,GAAK,GAAK,CAAC,EAAE,MAAM,GAAG,EAC1BS,EAAOT,GAAKO,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,MAAM,EACpCG,EAAIP,GAAMF,GAAKQ,EAAMA,EAAK,IAAI,CAAC,CAAC,EAAE,IAAIR,GAAKO,EAAGA,CAAC,CAAC,CAAC,EAC9C,IAAI,EAAG,EACP,MAAM,GAAG,EACZG,EAAIV,GAAKQ,EAAK,IAAIC,EAAE,GAAG,IAAIF,CAAC,CAAC,EAAGC,EAAK,IAAIC,EAAE,GAAG,IAAI,EAAG,EAAE,IAAIF,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EACzEI,EAAQR,GAAIO,EAAE,GAAIA,EAAE,EAAE,EACtBE,EAAQT,GAAIO,EAAE,GAAIA,EAAE,EAAE,EAC5B,OAAON,GAAOJ,GAAKU,EAAE,GAAG,IAAIT,GAAM,EAAG,CAAC,EAAGQ,EAAE,GAAG,IAAI,CAAC,CAAC,EAAGT,GAAKU,EAAE,GAAG,IAAIT,GAAM,EAAG,CAAC,EAAGQ,EAAE,EAAE,EAAGE,EAAM,SAASC,CAAK,CAAC,CACtH,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECjBD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,SAAAC,GAAO,UAAAC,GAAQ,SAAAC,GAAO,SAAAC,GAAO,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,OAAAC,OAAW,eAEvF,IAAMC,GAAS,kBAETC,GAAmB,CAACC,EAAaC,EAAqBC,IAAiB,CACrE,IAAMC,EAAKH,EAAM,IAAI,EAAG,EAAE,MAAM,IAAI,EAC9BI,EAASb,GAAOY,CAAE,EAAE,MAAM,QAAQ,EAClCE,EAAQb,GAAMW,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,OAAO,EACvCG,EAAehB,GAAMQ,EAAM,EAAE,IAAIG,CAAY,EAAE,MAAM,cAAc,EACnEM,EAAgBF,EAAM,IAAIC,EAAa,IAAIb,GAAMY,EAAM,IAAIC,CAAY,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,EACjGE,EAAad,GAAIa,EAAeD,EAAa,IAAIC,CAAa,CAAC,EAAE,MAAM,YAAY,EACnFE,EAAMpB,GAAKO,GAAIY,EAAW,IAAIN,CAAK,CAAC,EAAGL,GAAIW,EAAW,IAAIN,CAAK,CAAC,CAAC,EAC9D,IAAIE,CAAM,EACV,IAAI,EAAG,EACP,MAAM,KAAK,EACpB,OAAOT,GAAID,GAAIe,EAAKA,EAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAI,OAAO,CAAC,CAC7D,EAEaC,GAAetB,GAAG,CAAC,CAACY,EAAOC,EAAcC,CAAK,IAC5CH,GAAiBC,EAAOC,EAAcC,CAAK,CACzD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,eAAgB,KAAM,OAAQ,EACtC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYS,GAAsBvB,GAAG,CAAC,CAACY,CAAK,IAC9BD,GAAiBC,EAAOV,GAAM,CAAC,EAAGA,GAAM,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYsB,GAAoBxB,GAAG,CAAC,CAACY,EAAOC,CAAY,IAC1CF,GAAiBC,EAAOC,EAAcX,GAAM,CAAC,CAAC,CAC5D,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,eAAgB,KAAM,OAAQ,CAC9C,CACR,CAAC,EC/CD,OAAS,MAAAuB,OAAiB,eAEnB,IAAMC,GAAiBD,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IAAoC,CAC/E,IAAMC,EAAkBH,EAAM,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,iBAAiB,EACnE,OAAOC,EACE,IAAIC,CAAG,EACP,IAAI,CAAC,EACL,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAIE,EAAgB,IAAID,EAAI,IAAID,CAAI,CAAC,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EChBD,OAAS,MAAAG,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAaC,GAAG,CAAC,CAAC,CAAC,IACjBC,GAAKC,GAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAG,EAAE,EAAG,EAAE,CAAC,CACnD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAiBH,GAAG,CAAC,CAACI,CAAC,IACrBL,GAAWM,GAAOD,CAAC,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAkBN,GAAG,CAAC,CAACI,EAAGG,CAAC,IACzBJ,GAAeC,EAAE,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAsBR,GAAG,CAAC,CAACI,EAAGG,CAAC,IAC7BJ,GAAeC,EAAE,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAcT,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAKC,GAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAkBV,GAAG,CAAC,CAACI,CAAC,IACtBK,GAAYJ,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAcX,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAK,EAAE,EAAGC,GAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAG,EAAE,EAAG,EAAE,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYU,GAAkBZ,GAAG,CAAC,CAACI,CAAC,IACtBO,GAAYN,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECxED,OAAS,MAAAS,GAAU,SAAAC,OAAa,eAEzB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAG,IAA0B,CACpD,IAAMC,EAASD,EAAI,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAG,EAAE,MAAM,QAAQ,EAC9D,OAAOH,GAAME,EAAE,IAAIC,CAAG,CAAC,EAAE,IAAIA,CAAG,EAAE,IAAIC,CAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECZD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAeH,GAAG,CAAC,CAACI,EAAGC,EAAGC,EAAGC,EAAG,EAAGC,CAAC,IAAwD,CACjG,IAAMC,EAAQJ,EAAE,IAAID,CAAC,EAAE,MAAM,OAAO,EAC9BM,EAASH,EAAE,IAAID,CAAC,EAAE,MAAM,QAAQ,EAChCK,EAAQH,EAAE,IAAI,CAAC,EAAE,MAAM,OAAO,EAEpC,OAAOP,GACCC,GAAKO,EAAM,WAAW,EAAE,IAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EACvCP,GAAK,EAAGQ,EAAO,WAAW,EAAE,IAAI,CAAC,EAAG,EAAG,CAAC,EACxCR,GAAK,EAAG,EAAGS,EAAM,WAAW,EAAE,IAAI,EAAE,EAAG,CAAC,EACxCT,GAAKG,EAAE,IAAID,CAAC,EAAE,IAAIK,CAAK,EAAE,OAAO,EAAGF,EAAE,IAAID,CAAC,EAAE,IAAII,CAAM,EAAE,OAAO,EAAGF,EAAE,IAAI,CAAC,EAAE,IAAIG,CAAK,EAAE,OAAO,EAAG,CAAC,CACzG,CACR,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECxBD,OAAS,MAAAC,GAA0B,WAAAC,GAAS,SAAAC,GAAa,QAAAC,GAAM,OAAAC,GAAK,QAAAC,GAAM,MAAAC,GAAI,SAAAC,OAAa,eAE3F,IAAMC,GAAwBN,GAAM,GAAI,EAAE,SAAS,uBAAuB,EACpEO,GAA8BP,GAAM,EAAE,EAAE,SAAS,6BAA6B,EAEvEQ,GAAwBV,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACxE,IAAMC,EAAgBb,GAAQU,EAAKE,CAAC,EAAE,EAAE,MAAM,eAAe,EACvDE,EAAiBP,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIE,CAAa,EAAE,MAAM,gBAAgB,EAChG,OAAOD,EAAE,IAAIE,CAAc,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAuBhB,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACvE,IAAMI,EAAYR,GAA4B,IAAI,EAAG,EAAE,MAAM,WAAW,EAClES,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDE,EAAqBnB,GAAM,CAAC,EAAE,MAAM,oBAAoB,EACxDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAExF,OAAAlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcH,CAAkB,EAAG,IAAM,CACtDd,GAAM,CACd,CAAC,EACDc,EAAmB,UAAUD,CAAW,EACxCG,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAEMA,CACf,CAAC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAwB1B,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACxE,IAAMI,EAAYR,GAA4B,MAAM,WAAW,EACzDS,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDE,EAAqBnB,GAAM,CAAC,EAAE,MAAM,oBAAoB,EACxDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAExFlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcH,CAAkB,EAAG,IAAM,CACtDd,GAAM,CACd,CAAC,EACDc,EAAmB,UAAUD,CAAW,EACxCG,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAED,IAAMI,EAAgBL,EAAK,IAAI,EAAG,EAAE,MAAM,eAAe,EACnDM,EAAcR,EAAY,IAAI,EAAG,EAAE,MAAM,aAAa,EAC5D,OAAAG,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,EAExCvB,GAAKD,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CAChBE,EAAc,UAAU,EAAG,EAC3BC,EAAY,UAAU,EAAG,EACzBJ,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,EAE7DjB,GAAGkB,EAAkB,YAAYH,CAAkB,EAAG,IAAM,CACpDE,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,CAChD,CAAC,EAAE,KAAK,IAAM,CACNL,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,CAChD,CAAC,CACT,CAAC,EAEML,CACf,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAA2B7B,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CAC3E,IAAMI,EAAYR,GAA4B,MAAM,WAAW,EACzDS,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDW,EAAiB5B,GAAM,CAAC,EAAE,MAAM,gBAAgB,EAChDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAClFQ,EAAcR,EAAqB,MAAM,aAAa,EAE5DlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcM,CAAc,EAAG,IAAM,CAClDvB,GAAM,CACd,CAAC,EACDuB,EAAe,UAAUV,CAAW,EACpCW,EAAY,OAAOR,CAAoB,EACvCA,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAED,IAAMS,EAAQR,EAAkB,IAAIM,CAAc,EAAE,MAAM,OAAO,EAC3DG,EAAQhC,GAAQU,EAAKoB,CAAW,EAAE,EAAE,IAAID,CAAc,EAAE,IAAIV,CAAW,EAAE,MAAM,OAAO,EACtFc,EAASF,EAAM,IAAIA,EAAM,IAAIC,CAAK,CAAC,EAAE,MAAM,QAAQ,EAMzD,OALuBF,EACd,IAAIG,CAAM,EACV,IAAIX,EAAqB,IAAIrB,GAAM,CAAC,EAAE,IAAIgC,CAAM,CAAC,CAAC,EAClD,MAAM,gBAAgB,CAGvC,CAAC,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAkBnC,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAC9BgB,GAAyBlB,EAAKC,EAAGC,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECpJD,OAAS,MAAAuB,GAAiB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,OAAa,eAE3C,IAAMC,GAAcJ,GAAG,CAAC,CAACK,EAAKC,EAAQC,EAAMC,CAAG,IAA0C,CACxF,IAAMC,EAAIN,GAAM,CAAC,EACR,IAAID,GAAIG,EAAI,IAAI,CAAC,CAAC,CAAC,EACnB,MAAM,GAAG,EACZK,EAAKP,GAAM,CAAC,EAAE,IAAII,EAAK,IAAIC,CAAG,CAAC,EAAE,MAAM,IAAI,EAEjD,OAAOP,GACCQ,EAAE,IAAIH,CAAM,EAAG,EAAG,EAAG,EACrB,EAAGG,EAAG,EAAG,EACT,EAAG,EAAGD,EAAI,IAAID,CAAI,EAAE,IAAIG,CAAE,EAAG,GAC7B,EAAG,EAAGP,GAAM,CAAC,EAAE,IAAIK,CAAG,EAAE,IAAID,CAAI,EAAE,IAAIG,CAAE,EAAG,CACnD,CACR,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,ECvBD,OAAS,MAAAC,GAAuB,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,QAAAC,OAAY,eAErD,IAAMC,GAAaL,GAAG,CAAC,CAACM,CAAK,IACrBH,GAAKF,GAAIK,EAAM,CAAC,EAAGJ,GAAII,EAAM,CAAC,CAAC,EAAE,IAAIA,EAAM,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYC,GAAeP,GAAG,CAAC,CAACQ,EAAGC,EAAKC,CAAK,IAAmC,CACzE,IAAMC,EAAIH,EAAE,IAAIP,GAAIS,CAAK,CAAC,EAAE,IAAIR,GAAIO,CAAG,CAAC,EAAE,MAAM,GAAG,EAC7CG,EAAIJ,EAAE,IAAIN,GAAIQ,CAAK,CAAC,EAAE,IAAIR,GAAIO,CAAG,CAAC,EAAE,MAAM,GAAG,EAC7CI,EAAIL,EAAE,IAAIP,GAAIQ,CAAG,CAAC,EAAE,MAAM,GAAG,EACnC,OAAOL,GAAKO,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECvBD,OAAS,MAAAC,GAAU,OAAAC,GAAK,QAAAC,GAAM,QAAAC,OAAY,eAEnC,IAAMC,GAAQJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA0B,CAChD,IAAMC,EAAaL,GAAKG,EAAE,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAGD,EAAE,CAAC,EACzFG,EAAaN,GAAKG,EAAE,EAAGA,EAAE,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,EAC/F,OAAOL,GAAIM,EAAYC,EAAYL,GAAKG,EAAE,EAAGA,EAAE,CAAC,CAAC,CACzD,CAAC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAG,GAAiB,QAAAC,GAAM,SAAAC,GAAO,SAAAC,OAAa,eAE7C,IAAMC,GAASJ,GAAG,CAAC,CAACK,EAAIC,EAAMC,CAAK,IAAiC,CACnE,IAAMC,EAAgBD,EAAM,IAAID,EAAK,CAAC,EAAE,MAAM,eAAe,EACvDG,EAAIR,GAAK,CAAC,EAAE,IAAIK,CAAI,EAAE,MAAM,GAAG,EAC/BI,EAAOT,GAAKC,GAAMM,CAAa,EAAGF,EAAK,EAAE,IAAIJ,GAAMM,EAAc,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAC/F,OAAON,GAAME,EAAG,IAAIK,CAAI,EAAE,IAAID,CAAC,CAAC,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,GAAM,aAAAC,GAAW,SAAAC,OAAa,eAEhD,IAAMC,GAAMJ,GAAG,CAAC,CAAC,EAAGK,EAAGC,CAAC,IAChBL,GAAK,EAAGI,EAAGC,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,MACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAgBP,GAAG,CAAC,CAACM,EAAGE,CAAE,IAA0B,CACzD,IAAMC,EAAIP,GAAUC,GAAMK,EAAIF,CAAC,CAAC,EAAE,MAAM,GAAG,EACrCD,EAAIF,GAAMG,EAAGG,CAAC,EAAE,MAAM,GAAG,EAC/B,OAAOL,GAAIK,EAAGJ,EAAGC,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,ECzBD,OAAS,MAAAI,GAAiB,QAAAC,OAAY,eAI/B,IAAMC,GAAaC,GAAG,CAAC,CAACC,EAAUC,EAAQC,CAAE,IAA0B,CACrE,IAAMC,EAAIC,GAAOJ,EAAUC,EAAQC,CAAE,EAAE,MAAM,EAC7C,OAAOG,GAAcF,EAAGH,CAAQ,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYM,GAAiBP,GAAG,CAAC,CAACC,EAAUC,EAAQM,CAAI,IAA2B,CAC5E,IAAMJ,EAAIK,GAAWR,EAAUC,EAAQM,CAAI,EAAE,MAAM,EACnD,OAAOF,GAAcF,EAAGH,CAAQ,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYS,GAAkBV,GAAG,CAAC,CAACC,EAAUC,CAAM,IACrCH,GAAWE,EAAUC,EAAQS,GAAK,EAAG,EAAG,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAG/B,IAAMC,GAAiBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC3BC,GAASF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAgBL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACvBH,GAAeE,EAAGC,EAAGI,GAAK,EAAG,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAeP,GAAG,CAAC,CAACC,EAAGO,CAAK,IAAoB,CACrD,IAAMC,EAAWH,GAAKE,EAAM,EAAE,OAAO,EAAGA,EAAM,CAAC,EAAE,MAAM,EACvD,OAAOF,GAAKL,EAAE,IAAIQ,CAAQ,EAAGR,EAAE,IAAIO,CAAK,CAAC,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,ECpCD,OAAS,MAAAE,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAU,QAAAC,OAAY,eAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAIC,CAAC,IAClBH,GAAKE,EAAG,EAAGA,EAAG,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECXD,OAAS,MAAAC,OAA6B,eAKtC,SAASC,GAASC,EAAa,CACvB,OAAOA,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,CACjC,CAEO,IAAMC,GAAgBH,GAAG,CAAC,CAACI,CAAC,IACpBH,GAASG,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeL,GAAG,CAAC,CAACE,CAAC,IACnBD,GAASC,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAeN,GAAG,CAAC,CAACE,CAAC,IACnBD,GAASC,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC/BD,OAAS,MAAAK,OAAiB,eAEnB,IAAMC,GAAcD,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IACjCF,EAAM,IAAIC,CAAI,EAAE,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYG,GAA0BL,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IAC7CF,EAAM,IAAIC,CAAI,EAAE,IAAIA,EAAK,IAAIC,CAAG,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,ECxBD,OAAS,MAAAE,GAAgB,QAAAC,GAAM,SAAAC,GAAO,QAAAC,OAAY,eAG3C,IAAMC,GAAeC,GAAG,CAAC,CAACC,CAAC,IACnBC,GAAKC,GAAMF,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIG,EAAE,EAAGC,GAAKJ,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIC,GAAKI,GAAQF,EAAE,CAAC,CACpF,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAG,GAAuB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,OAAAC,OAAW,eAEpE,IAAMC,GAAUP,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC1C,IAAMC,EAAcD,EAAG,IAAIP,GAAKC,GAAK,EAAG,kBAAc,EAAGA,GAAK,EAAG,kBAAa,CAAC,CAAC,EAAE,MAAM,EAClFQ,EAAIP,GAAKM,EAAaA,EAAY,OAAO,CAAC,EAAE,MAAM,EAClDE,EAAIP,GAAMM,CAAC,EAAE,MAAM,EACnBE,EAAcP,GAAMK,CAAC,EAAE,MAAM,EAE7BG,EAAQP,GAAIM,EAAY,GAAIA,EAAY,EAAE,EAC1CE,EAAQR,GAAIM,EAAY,GAAIA,EAAY,EAAE,EAE1CG,EAAYF,EAAM,SAASC,CAAK,EAChCE,EAAYb,GAAKS,EAAY,GAAIV,GAAK,EAAG,CAAC,EAAE,IAAIS,EAAE,EAAE,CAAC,EAG3D,OAFmBR,GAAKS,EAAY,GAAIV,GAAK,EAAG,CAAC,EAAE,IAAIS,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAE1D,OAAOK,EAAWD,CAAS,CACrD,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAgBjB,GAAG,CAAC,CAACQ,EAAIU,CAAK,IAC5BX,GAAQC,EAAG,IAAIU,CAAK,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EC/BD,OAAS,MAAAC,GAAuB,OAAAC,GAAK,OAAAC,GAAK,QAAAC,OAAY,eAI/C,IAAMC,GAAeC,GAAG,CAAC,CAAC,EAAGC,CAAI,IAA2B,CAC3D,IAAMC,EAAIC,GAAIC,GAAI,EAAE,EAAG,CAAC,EAAE,IAAIA,GAAI,EAAE,EAAG,CAAC,CAAC,CAAC,EACjC,IAAIA,GAAI,EAAE,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EACtB,IAAI,GAAI,EACjB,OAAOC,GAAKC,GAAc,EAAE,GAAIJ,EAAE,IAAID,CAAI,CAAC,EAAG,EAAE,EAAE,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYM,GAAsBP,GAAG,CAAC,CAAC,CAAC,IAAoB,CACrD,IAAME,EAAIC,GAAIC,GAAI,EAAE,EAAG,CAAC,EAAE,IAAIA,GAAI,EAAE,EAAG,CAAC,CAAC,CAAC,EACjC,IAAIA,GAAI,EAAE,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EACtB,IAAI,GAAI,EACjB,OAAOC,GAAKC,GAAc,EAAE,GAAIJ,EAAE,IAAI,iBAAiB,CAAC,EAAG,EAAE,EAAE,CACvE,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYM,GAAmBR,GAAG,CAAC,CAACS,CAAC,IACvBF,GAAoBG,GAAOD,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAoBX,GAAG,CAAC,CAACS,EAAGG,CAAC,IAC3BJ,GAAiBC,EAAE,IAAIG,CAAC,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAwBb,GAAG,CAAC,CAACS,EAAGG,CAAC,IAC/BJ,GAAiBC,EAAE,IAAIG,CAAC,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC","names":["Fn","pow","sin","float","EIGHTH_PI","QTR_PI","HALF_PI","PI","TWO_PI","TAU","INV_PI","INV_SQRT_TAU","SQRT_HALF_PI","PHI","EPSILON","GOLDEN_RATIO","GOLDEN_RATIO_CONJUGATE","GOLDEN_ANGLE","DEG2RAD","RAD2DEG","backIn","Fn","pow","sin","PI","Fn","float","backInOut","Fn","f","float","g","backIn","Fn","float","backOut","Fn","float","backIn","Fn","float","Fn","float","bounceOut","a","b","c","ca","cb","cc","t2","bounceIn","Fn","float","bounceOut","Fn","float","bounceInOut","Fn","float","bounceOut","Fn","circularIn","Fn","circularInOut","early","late","Fn","float","circularOut","Fn","cubicIn","Fn","cubicInOut","early","late","Fn","cubicOut","f","Fn","sin","pow","float","elasticIn","Fn","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticInOut","Fn","t2","t2minus1","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticOut","Fn","sin","float","HALF_PI","pow","Fn","exponentialIn","Fn","exponentialInOut","isZeroOrOne","early","late","result","Fn","exponentialOut","Fn","linearIn","Fn","linearInOut","Fn","linearOut","Fn","quadraticIn","Fn","select","quadraticInOut","p","Fn","quadraticOut","Fn","quarticIn","Fn","select","quarticInOut","early","late","Fn","quarticOut","it","Fn","quinticIn","Fn","select","quinticInOut","early","late","Fn","quinticOut","Fn","sin","sineIn","Fn","sin","HALF_PI","Fn","cos","sineInOut","Fn","cos","PI","Fn","sin","sineOut","Fn","sin","HALF_PI","Fn","float","vec3","cmyk2rgb","cmyk","invK","Fn","float","vec4","GAMMA","gamma2linear","v","gamma2linearVec4","Fn","float","vec4","Fn","float","vec3","hue2rgb","hue","R","G","B","hsl2rgb","Fn","hsl","rgb","hue2rgb","C","float","hsl2rgbVec4","vec4","Fn","vec4","hsv2rgb","Fn","hsv","hue2rgb","hsv2rgbVec4","vec4","Fn","atan2","sqrt","vec3","vec4","lab2lch3","lab","chroma","hue","lab2lch4","lch","lab2lch","Fn","vec4","Fn","float","select","vec3","vec4","CIE_WHITE","lab2xyz","lab","fy","fx","fz","threshold","delta","factor","convertX","convertY","convertZ","lab2xyzVec4","Fn","mat3","vec4","XYZ2RGB","xyz2rgb","xyz","xyz2rgbVec4","lab2rgb","Fn","lab","xyz2rgb","lab2xyz","lab2rgbVec4","vec4","Fn","vec3","vec4","lch2lab3","lch","radians","lch2lab4","lab","lch2lab","Fn","vec4","lch2rgb3","Fn","lch","lab2rgb","lch2lab","lch2rgb4","rgb","vec4","lch2rgb","Fn","float","vec4","INV_GAMMA","linear2gamma","v","linear2gammaVec4","Fn","mat3","vec4","OKLAB2RGB_A","OKLAB2RGB_B","oklab2rgb3","oklab","lms","oklab2rgb4","rgb","oklab2rgb","Fn","float","vec4","step","Fn","min","mmin2","v","mmin3","mmin4","mmin","rgb2cmyk","Fn","rgb","k","mmin3","float","invK","cmy","step","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hcv","rgb","P_true","P_false","P_final","Q_true","Q_false","Q_final","C","H","rgb2hcvVec4","Fn","float","vec3","vec4","HSL_EPSILON","float","rgb2hsl","Fn","rgb","HCV","rgb2hcv","L","S","vec3","rgb2hslVec4","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hsv","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","H","S","V","rgb2hsvVec4","Fn","float","vec4","select","HUE_EPSILON","rgb2hue","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","rgb2hueVec4","Fn","vec4","Fn","mat3","vec4","RGB2XYZ","rgb2xyz","rgb","rgb2xyzVec4","Fn","vec3","vec4","step","mix","xyz2lab","xyz","n","c0","c1","v","L","A","B","xyz2labVec4","rgb2lab","Fn","rgb","xyz2lab","rgb2xyz","rgb2labVec4","vec4","Fn","vec4","rgb2lch3","Fn","rgb","lab2lch","rgb2lab","rgb2lch4","lch","vec4","rgb2lch","Fn","mat3","vec3","vec4","RGB2OKLAB_A","RGB2OKLAB_B","rgb2oklab3","rgb","lms","rgb2oklab4","oklab","rgb2oklab","Fn","float","vec3","vec4","select","SRGB_EPSILON","rgb2srgbFloat","c","rgb2srgbVec3","rgb","rgb2srgbVec4","rgb2srgb","Fn","mat3","vec4","RGB2YIQ","rgb2yiq3","rgb","rgb2yiq4","yiq","rgb2yiq","Fn","mat3","vec4","RGB2YUV_HDTV","RGB2YUV_SDTV","rgb2yuv3","rgb","rgb2yuv4","yuv","rgb2yuvSDTV","rgb2yuv","Fn","float","vec3","vec4","select","SRGB_EPSILON","srgb2rgbFloat","v","srgb2rgbVec3","srgb","srgb2rgbVec4","srgb2rgb","Fn","mat3","vec4","YIQ2RGB","yiq2rgb3","yiq","yiq2rgb4","rgb","yiq2rgb","Fn","mat3","vec4","YUV2RGB_HDTV","YUV2RGB_SDTV","yuv2rgb3","yuv","yuv2rgb4","rgb","yuv2rgbSDTV","yuv2rgb","Fn","float","vec2","floor","length","clamp","min","dot","cos","normalize","If","ARROWS_TILE_SIZE","ARROWS_HEAD_ANGLE","arrowsTileCenterCoord","pos","arrowsWithResolution","p","v","resolution","scaledP","mag_v","result","dir_v","vScaled","arrow","arrows","Fn","vec3","vec4","Loop","int","Fn","Fn","clamp","dot","length","cross","lineSDF2D","st","a","b","b_to_a","to_a","h","lineSDF3D","p","lineSDF","Fn","smoothstep","Fn","length","vec2","dFdx","dFdy","smoothstep","aastep","threshold","value","derivative","afwidth","fillWithEdge","Fn","x","size","edge","smoothstep","fill","aastep","line","Fn","st","a","b","thickness","fill","lineSDF","axis","Fn","st","M","pos","thickness","result","vec4","center","axisColors","axisDirections","vec3","Loop","int","i","axisColor","axisDir","axisPoint","axisLine","line","Fn","float","Fn","smoothstep","clamp","strokeWithEdge","Fn","x","size","w","edge","d","smoothstep","clamp","stroke","aastep","bridgeFloat","Fn","c","d","s","w","float","stroke","bridgeVec2","strokeMask","bridgeVec3","bridgeVec4","bridge","Fn","float","vec2","floor","ivec2","charLookupSimple","index","isValidChar","charSimple","uv","charCode","charCoord","centerX","centerY","pattern","char","Fn","Fn","vec2","circleSDF","v","center","circleSDFBasic","circleFill","Fn","st","size","fill","circleSDFBasic","circleStroke","strokeWidth","stroke","circle","Fn","float","vec3","vec4","mix","flipFloat","v","pct","flipVec3","flipVec4","flip","Fn","Fn","abs","max","float","hexSDF","st","normalized","sqrt3_2","hexFill","Fn","st","size","fill","hexSDF","hexStroke","strokeWidth","stroke","hex","Fn","vec3","vec4","float","point2D","Fn","st","pos","color","radius","st_p","circle","circleFill","vec4","pointSimple","vec3","float","point","Fn","float","Fn","vec2","rectSDFBasic","st","normalizedSt","rectSDF","s","rectSDFUniform","rectSDFRounded","p","b","r","d","rectStroke","Fn","st","size","strokeWidth","stroke","rectSDF","float","rectStrokeUniform","rectSDFUniform","rectFill","fill","rectFillUniform","rect","Fn","Fn","max","abs","float","triSDF","st","normalized","sqrt3_2","triFill","Fn","st","size","fill","triSDF","triStroke","strokeWidth","stroke","tri","struct","vec3","AABB","Fn","aabbCentroid","box","Fn","aabbContain","box","point","Fn","diagonal","box","Fn","expand","Fn","box","value","AABB","Fn","vec2","aabbIntersect","box","rayOrigin","rayDir","tMin","tMax","t1","t2","tNear","tFar","Fn","max","abs","square","Fn","box","diag","diagonal","center","maxDim","max","abs","AABB","Fn","length","cross","area","tri","Fn","length","cross","dot","vec3","float","barycentricFromVec3","Fn","a","b","c","daa","dot","dab","dbb","dca","dcb","denom","y","z","vec3","float","barycentric","tri","barycentricFromPosition","pos","f0","f1","f2","areaValue","area","length","cross","Fn","triangleCentroid","tri","Fn","dot","length","cross","normalize","max","min","float","If","Return","closestPointWithNormal","Fn","tri","triNormal","pos","b","c","ab","ac","p","dot","ap","bcoords","barycentricFromVec3","If","bc","n","length","t","max","float","min","Return","ca","closestPoint","a","normal","normalize","cross","Fn","cross","dot","triangleContain","tri","pos","localA","localB","localC","u","v","w","Fn","cross","dot","sign","sqrt","min","Fn","lengthSq","v","distanceSq","Fn","tri","pos","a","b","c","v21","p1","v32","p2","v13","p3","nor","cross","s1","sign","dot","s2","s3","signSum","edge1","lengthSq","edge2","edge3","edgeDistance","min","planeDistance","sqrt","Fn","cross","dot","float","struct","vec3","Ray","triangleIntersect","tri","rayOrigin","rayDir","v1v0","v2v0","rov0","point","q","d","v","t","isOutside","triangleIntersectRay","ray","Fn","cross","normalize","normal","tri","Fn","length","sign","dot","signedDistanceWithNormal","Fn","tri","triNormal","pos","nearest","closestPointWithNormal","delta","distance","length","sign","dot","signedDistance","normal","struct","vec3","Triangle","Fn","vec2","vec3","vec4","Fn","fun","x","mod289","mod289Vec2","mod289Vec3","mod289Vec4","Fn","fun","v","permute","Fn","mod289","permuteVec2","mod289Vec2","permuteVec3","mod289Vec3","permuteVec4","mod289Vec4","Fn","taylorInvSqrt","r","Fn","quintic","v","v3","inner","cnoiseVec2","Fn","P","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","cnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","cnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","float","Fn","vec2","vec3","vec4","float","Fn","vec4","vec3","float","grad4","j","ip","ones","p","s","snoiseVec2","Fn","v","C","vec4","i","x0","i1","vec2","x12","mod289Vec2","p","permuteVec3","vec3","m","float","x","h","ox","a0","g","snoiseVec3","D","l","i2","x1","x2","x3","mod289Vec3","permuteVec4","ns","j","x_","y_","y","b0","b1","s0","s1","sh","a1","p0","p1","p2","p3","norm","taylorInvSqrt","snoiseVec4","i0","isX","isYZ","i3","x4","mod289Vec4","j0","permute","j1","ip","grad4","p4","m0","m1","snoise2","s","snoise3Vec3","s2","snoise3Vec4","curlVec2","Fn","p","float","dx","vec2","dy","p_x0","snoise2","p_x1","p_y0","p_y1","x","y","divisor","curlVec3","vec3","dz","snoise3Vec3","p_z0","p_z1","z","curlVec4","vec4","snoise3Vec4","Fn","float","Loop","int","Fn","vec2","vec3","float","Fn","vec2","vec3","vec4","float","RANDOM_SCALE","random","x","randomVec2","st","randomVec3","pos","randomVec4","random2Float","p","p3","random2Vec2","random2Vec3","random3Float","random3Vec2","random3Vec3","random4Float","p4","random4Vec2","random4Vec3","random4Vec4","Fn","vec2","vec3","vec4","float","srandom","x","srandomVec2","st","srandomVec3","pos","srandomVec4","dot_product","srandom2Vec2","k","srandom3Vec3","p","srandom2Vec2Tiled","tileLength","srandom3Vec3Tiled","Fn","cubic","v","cubicVec2","cubicVec3","cubicVec4","cubicFloatSlopes","slope0","slope1","b","c","v2","v3","cubicVec2Slopes","cubicVec3Slopes","cubicVec4Slopes","gnoise","Fn","x","i","f","random","float","gnoiseVec2","st","randomVec2","b","vec2","c","d","u","cubicVec2","gnoiseVec3","p","quintic","randomVec3","vec3","gnoiseVec3Tiled","tileLength","srandom3Vec3Tiled","gnoise3","FBM_OCTAVES","int","FBM_SCALE_SCALAR","FBM_AMPLITUDE_INITIAL","FBM_AMPLITUDE_SCALAR","fbmVec2","Fn","st","value","float","amplitude","coord","Loop","snoiseVec2","fbmVec3","pos","posVar","snoiseVec3","fbmVec3Tiled","p","tileLength","persistence","lacunarity","total","normalization","pVar","noiseValue","gnoiseVec3Tiled","fbm","Fn","vec3","float","gerstnerWave","Fn","_uv","_dir","_steepness","_wavelength","_time","k","PI","float","d","f","a","vec3","Fn","vec2","vec3","vec4","noised","Fn","p","i","f","u","du","ga","srandom2Vec2","vec2","gb","gc","gd","va","vb","vc","vd","vec3","noisedVec3","pos","w","srandom3Vec3","ge","gf","gg","gh","ve","vf","vg","vh","noiseValue","gradientValue","vec4","Fn","vec2","vec3","vec4","pnoise","Fn","P","rep","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","pnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","pnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","mat3","If","float","psrdnoise2D","Fn","x","period","alpha","uv","vec2","i0","f0","cmp","o1","i1","i2","v0","v1","v2","x0","x1","x2","iu","vec3","iv","If","xw","yw","hash","mod289Vec3","psi","gx","gy","g0","g1","g2","w","w2","w4","gdotx","n","dw","dn0","dn1","dn2","gradient","psrdnoise3D","M","mat3","Mi","uvw","g_","l_","g","l","o2","i3","v3","x3","vx","vec4","vy","vz","permuteVec4","theta","sz","Ct","St","sz_prime","gz","Sp","Cp","px","py","pz","Ctp","qx","qy","qz","Sa","Ca","g3","w3","dn3","psrdnoise","float","psrdnoise2","psrdnoisePeriod","psrdnoiseAlpha","psrdnoise3","psrdnoise3Period","psrdnoise3Alpha","Fn","vec2","vec3","float","If","voronoi","Fn","uv","time","i_uv","f_uv","rta","vec3","neighbor_m1m1","vec2","point_m1m1","random2Vec2","float","TAU","dist_m1m1","If","neighbor_0m1","point_0m1","dist_0m1","neighbor_1m1","point_1m1","dist_1m1","neighbor_m10","point_m10","dist_m10","neighbor_00","point_00","dist_00","neighbor_10","point_10","dist_10","neighbor_m11","point_m11","dist_m11","neighbor_01","point_01","dist_01","neighbor_11","point_11","dist_11","voronoiVec2","p","voronoiVec3","Fn","vec2","vec3","int","float","Loop","voronoise","Fn","p","u","v","k","float","i","f","a","vec2","Loop","int","yLoop","yOffset","xLoop","xOffset","g","o","random3Vec2","vec3","d","w","voronoiseVec3","zLoop","zOffset","random3Vec3","Fn","Loop","int","float","mat2","Fn","mat2","rotate2d","r","c","s","wavelet","Fn","p","phase","k","d","float","s","m","Loop","int","i","q","a","randomVec2","rotate2d","mat2","waveletVec3K","waveletVec3","waveletVec2Phase","waveletVec2","Fn","Loop","int","float","vec2","vec3","If","Fn","abs","distance","max","pow","DIST_MINKOWSKI_P","distEuclidean","a","b","distManhattan","distManhattan3","distManhattan4","distChebychev","distChebychev3","distChebychev4","distMinkowski","p","distMinkowski3","distMinkowski4","dist","worley2Vec2","Fn","p","n","f","distF1","float","distF2","off1","vec2","pos1","off2","pos2","Loop","int","i","j","g","o","random2Vec2","point","distEuclidean","If","worleyVec2","worley2Vec3","vec3","k","random3Vec3","d","worleyVec3","Fn","dFdx","dFdy","fract","float","select","Fn","map","v","iMin","iMax","mapRange","oMin","oMax","aafloor","Fn","x","afwidth","dFdx","dFdy","fx","fract","idx","select","mapRange","float","Fn","dFdx","dFdy","fract","length","mix","smoothstep","vec2","select","float","nyquist","x","width","cutoffStart","cutoffEnd","f","aafract","afwidth","fx","idx","v","aafractVec2","Fn","dFdx","dFdy","length","vec2","floor","abs","Fn","mix","smoothstep","float","nyquist","x","width","f","aamirror","Fn","x","afwidth","length","vec2","dFdx","dFdy","v","abs","floor","nyquist","Fn","select","absi","x","Fn","step","adaptiveThreshold","v","blur_v","b","adaptiveThresholdSimple","Fn","bump","x","k","bumpSimple","Fn","cubicMix","Fn","a","b","t","cubic","cubicMixVec2","cubicVec2","cubicMixVec3","cubicVec3","cubicMixVec4","cubicVec4","Fn","decimate","v","p","Fn","cos","fwidth","smoothstep","fcos","Fn","x","w","fwidth","cos","smoothstep","TWO_PI","Fn","frac","x","Fn","float","select","gain","x","k","conditionValue","Fn","dot","gaussian","d","s","dotProduct","variance","Fn","float","vec2","vec3","uint","hammersley","index","numSamples","tof","bits","hemisphereCosSample","u","phi","PI","cosTheta2","cosTheta","sinTheta","Fn","max","float","highPass","v","b","Fn","all","inside","x","min","max","insideFloat","insideVec2","v","insideVec3","insideAABB","aabb","Fn","float","invCubic","v","Fn","invQuartic","v","Fn","float","inverse","m","Fn","mirror","x","f","m","fm","Fn","max","mmax2","v","mmax3","mmax4","mmax","Fn","mix","max","step","clamp","mmix","a","b","c","mmix3","pct","mmix4","d","Fn","vec4","mod2","p","s","halfS","pShifted","c","wrapped","mod2Cell","mod2Wrap","Fn","modi","x","y","xf","yf","quotient","Fn","fract","vec3","vec4","float","PackUpscale","PackFactors","ShiftRight8","pack","v","r","Fn","parabola","x","k","Fn","pow2","v","Fn","pow3","x","Fn","pow5","x","v2","Fn","pow7","x","v2","Fn","float","powFast","a","b","Fn","mat3","vec3","float","quat2mat3","q","qxx","qyy","qzz","qxz","qxy","qyw","qzw","qyz","qxw","Fn","Fn","mat4","vec4","toMat4","m","quat2mat4","Fn","q","toMat4","quat2mat3","Fn","vec4","quatAdd","a","b","Fn","vec4","quatConj","q","Fn","vec4","quatDiv","q","s","Fn","vec4","quatIdentity","Fn","Fn","quatLengthSq","q","quatInverse","Fn","q","quatDiv","quatConj","quatLengthSq","Fn","quatLength","Fn","q","quatLengthSq","Fn","If","Return","float","quatLerp","qa","qb","t","cosHalfTheta","adjustedQb","absCosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","Fn","vec4","quatMul","q1","q2","quatMulScalar","q","s","Fn","vec4","quatNeg","q","Fn","quatNorm","Fn","q","quatDiv","quatLength","Fn","vec4","quatSub","a","b","Fn","float","quartic","v","v2","Fn","float","mat3","vec3","rotate3d","a","r","axis","s","c","oc","col1","col2","col3","Fn","mat3","vec3","rotate3dX","r","c","s","Fn","mat3","vec3","rotate3dY","r","c","s","Fn","mat3","vec3","rotate3dZ","r","c","s","Fn","float","mat4","vec4","rotate4d","a","r","axis","s","c","oc","col1","col2","col3","col4","Fn","mat4","vec4","rotate4dX","r","c","s","Fn","mat4","vec4","rotate4dY","r","c","s","Fn","mat4","vec4","rotate4dZ","r","c","s","Fn","float","MEDIUMP_FLT_MAX","saturateMediump","x","Fn","mat2","scale2d","s","scale2dVec","scale2dXY","x","y","Fn","mat3","scale3d","s","scale3dVec","Fn","mat4","scale4d","s","scale4dXYZ","x","y","z","scale4dXYZW","w","scale4dVec3","scale4dVec4","Fn","smootherstep","Fn","a","b","v","saturated","quintic","Fn","mat3","toMat3","m","Fn","mat4","translate4d","x","y","z","t","Fn","dot","vec3","vec4","float","UnpackDownscale","PackFactors","UnpackFactors","unpack8","v","f","unpack16","unpack32","unpack64","unpack128","unpack256","unpackBase","base","base3","unpack","unpackDefault","Fn","sphereSDF","p","sphereSDFRadius","s","Fn","boxSDF","p","d","boxSDFSize","b","Fn","aspect","st","s","result","Fn","mat2","atan2","cos","sin","mod","vec2","float","PI","TWO_PI","BRACKETING_ANGLE_DELTA","bracketingAxis0","dir","angle","fractional","angle0","bracketingAxis1","vAxis0","bracketingBlend","Fn","mod","floor","fract","Fn","vec4","fract","floor","sqTile","st","sqTileScale","scale","brickTile","Fn","result","mod","floor","fract","brickTileVec2","st","sqTile","brickTileFloat","s","brickTileVec2Scale","Fn","atan2","length","acos","vec2","vec3","cart2polar","st","cart2polar3D","r","phi","theta","Fn","center","v","centerFloat","x","centerVec2","centerVec3","Fn","mod","abs","checkerTile","Fn","c","mod","abs","checkerTileVec2","v","sqTile","checkerTileFloat","s","checkerTileVec2Scale","Fn","select","depth2viewZ","depth","near","far","depth2viewZOrthographic","depth2viewZCombined","orthographic","perspective","ortho","Fn","texture","float","vec3","int","Loop","If","Fn","vec3","mat3","lookAtForward","forward","up","zaxis","xaxis","yaxis","lookAt","eye","target","lookAtRoll","roll","lookAtBasic","DISPLACE_DEPTH","float","DISPLACE_PRECISION","DISPLACE_MAX_ITERATIONS","int","displace","Fn","tex","ro","rd","t","prev","vec3","curr","lastD","hmap","df","Loop","texture","If","displaceUV","uv","lookAtBasic","Fn","vec3","cos","sin","sqrt","float","equirect2xyz","Fn","uv","phi","PI","theta","TWO_PI","dir","vec3","cos","sin","multiplier","sqrt","float","Fn","mat3","Fn","vec4","mat4","translateMat3","m","translation","eulerView","Fn","position","euler","rotZ","rotate3dZ","rotX","rotate3dX","rotY","rotate3dY","identity","mat3","rotation","translateMat3","Fn","vec3","sqrt","cos","float","fisheye2xyz","Fn","uv","ndc","R","sqrt","dir","vec3","phi","PI","cos","multiplier","float","Fn","vec2","vec3","vec4","flipYVec2","v","flipYVec3","flipYVec4","Fn","vec2","vec4","float","floor","dot","select","hexTile","st","s","stYX","i","f","dotXY","dotZW","Fn","vec2","float","length","atan2","floor","min","max","cos","sin","TWO_PI","kaleidoscopeCore","coord","segmentCount","phase","uv","radius","angle","segmentAngle","adjustedAngle","finalAngle","kuv","kaleidoscope","kaleidoscopeDefault","kaleidoscopeCount","Fn","linearizeDepth","depth","near","far","normalizedDepth","Fn","vec4","mirrorTile","Fn","vec4","mirror","mirrorTileVec2","v","sqTile","mirrorTileFloat","s","mirrorTileVec2Scale","mirrorXTile","mirrorXTileVec2","mirrorYTile","mirrorYTileVec2","Fn","floor","nearest","v","res","offset","Fn","mat4","vec4","orthographic","l","r","b","t","f","width","height","depth","Fn","texture","float","vec3","int","Loop","If","Break","PARALLAXMAPPING_SCALE","PARALLAXMAPPING_NUMSEARCHES","parallaxMappingSimple","tex","V","T","initialHeight","texCoordOffset","parallaxMappingSteep","minLayers","maxLayers","numLayers","layerHeight","currentLayerHeight","dtex","currentTextureCoords","heightFromTexture","i","parallaxMappingRelief","deltaTexCoord","deltaHeight","parallaxMappingOcclusion","curLayerHeight","prevTCoords","nextH","prevH","weight","parallaxMapping","Fn","mat4","tan","float","perspective","fov","aspect","near","far","f","nf","Fn","cos","sin","vec2","vec3","polar2cart","polar","polar2cart3D","r","phi","theta","x","y","z","Fn","mix","vec2","step","ratio","v","s","wideAspect","tallAspect","Fn","vec2","floor","fract","sprite","st","grid","index","adjustedIndex","f","cell","Fn","mat3","normalize","cross","tbn","b","n","tbnFromNormal","up","t","Fn","vec3","lookAtView","Fn","position","target","up","m","lookAt","translateMat3","lookAtViewRoll","roll","lookAtRoll","lookAtViewBasic","vec3","Fn","vec2","rotate2DCenter","Fn","v","r","c","rotate2d","rotate2DBasic","vec2","rotate2DAxis","xAxis","negYAxis","Fn","vec4","rotateXVec4Center","Fn","v","r","c","rotate4dX","rotateXVec4","rotateXVec3Center","vec4","rotateXVec3","Fn","vec4","rotateYVec4Center","Fn","v","r","c","rotate4dY","rotateYVec4","rotateYVec3Center","vec4","rotateYVec3","Fn","vec4","rotateZVec4Center","Fn","v","r","c","rotate4dZ","rotateZVec4","rotateZVec3Center","vec4","rotateZVec3","Fn","vec2","unratio","st","s","Fn","uncenter","v","uncenterFloat","x","uncenterVec2","uncenterVec3","Fn","viewZ2depth","viewZ","near","far","viewZ2depthOrthographic","Fn","vec2","atan2","acos","xyz2equirect","Fn","d","vec2","atan2","PI","acos","TWO_PI","Fn","mat2","vec2","vec4","floor","fract","dot","triTile","st","transformed","f","i","fFractional","dotXY","dotZW","condition","trueValue","triTileScaled","scale","Fn","mod","abs","vec4","windmillTile","Fn","turn","a","abs","mod","vec4","rotate2DBasic","windmillTileDefault","windmillTileVec2","v","sqTile","windmillTileFloat","s","windmillTileVec2Scale"]}
1
+ {"version":3,"sources":["../src/addons/animation/easing/backIn.ts","../src/addons/math/const.ts","../src/addons/animation/easing/backInOut.ts","../src/addons/animation/easing/backOut.ts","../src/addons/animation/easing/bounceIn.ts","../src/addons/animation/easing/bounceOut.ts","../src/addons/animation/easing/bounceInOut.ts","../src/addons/animation/easing/circularIn.ts","../src/addons/animation/easing/circularInOut.ts","../src/addons/animation/easing/circularOut.ts","../src/addons/animation/easing/cubicIn.ts","../src/addons/animation/easing/cubicInOut.ts","../src/addons/animation/easing/cubicOut.ts","../src/addons/animation/easing/elasticIn.ts","../src/addons/animation/easing/elasticInOut.ts","../src/addons/animation/easing/elasticOut.ts","../src/addons/animation/easing/exponentialIn.ts","../src/addons/animation/easing/exponentialInOut.ts","../src/addons/animation/easing/exponentialOut.ts","../src/addons/animation/easing/linearIn.ts","../src/addons/animation/easing/linearInOut.ts","../src/addons/animation/easing/linearOut.ts","../src/addons/animation/easing/quadraticIn.ts","../src/addons/animation/easing/quadraticInOut.ts","../src/addons/animation/easing/quadraticOut.ts","../src/addons/animation/easing/quarticIn.ts","../src/addons/animation/easing/quarticInOut.ts","../src/addons/animation/easing/quarticOut.ts","../src/addons/animation/easing/quinticIn.ts","../src/addons/animation/easing/quinticInOut.ts","../src/addons/animation/easing/quinticOut.ts","../src/addons/animation/easing/sineIn.ts","../src/addons/animation/easing/sineInOut.ts","../src/addons/animation/easing/sineOut.ts","../src/addons/color/space/cmyk2rgb.ts","../src/addons/color/space/gamma2linear.ts","../src/addons/color/space/hsl2rgb.ts","../src/addons/color/space/hue2rgb.ts","../src/addons/color/space/hsv2rgb.ts","../src/addons/color/space/lab2lch.ts","../src/addons/color/space/lab2rgb.ts","../src/addons/color/space/lab2xyz.ts","../src/addons/color/space/xyz2rgb.ts","../src/addons/color/space/lch2lab.ts","../src/addons/color/space/lch2rgb.ts","../src/addons/color/space/linear2gamma.ts","../src/addons/color/space/oklab2rgb.ts","../src/addons/color/space/rgb2cmyk.ts","../src/addons/math/mmin.ts","../src/addons/color/space/rgb2hcv.ts","../src/addons/color/space/rgb2hsl.ts","../src/addons/color/space/rgb2hsv.ts","../src/addons/color/space/rgb2hue.ts","../src/addons/color/space/rgb2lab.ts","../src/addons/color/space/rgb2xyz.ts","../src/addons/color/space/xyz2lab.ts","../src/addons/color/space/rgb2lch.ts","../src/addons/color/space/rgb2oklab.ts","../src/addons/color/space/rgb2srgb.ts","../src/addons/color/space/rgb2yiq.ts","../src/addons/color/space/rgb2yuv.ts","../src/addons/color/space/srgb2rgb.ts","../src/addons/color/space/yiq2rgb.ts","../src/addons/color/space/yuv2rgb.ts","../src/addons/draw/arrows.ts","../src/addons/draw/axis.ts","../src/addons/draw/line.ts","../src/addons/sdf/lineSDF.ts","../src/addons/draw/fill.ts","../src/addons/math/aastep.ts","../src/addons/draw/bridge.ts","../src/addons/draw/stroke.ts","../src/addons/draw/char.ts","../src/addons/draw/circle.ts","../src/addons/sdf/circleSDF.ts","../src/addons/draw/flip.ts","../src/addons/draw/hex.ts","../src/addons/sdf/hexSDF.ts","../src/addons/draw/point.ts","../src/addons/draw/rect.ts","../src/addons/sdf/rectSDF.ts","../src/addons/draw/tri.ts","../src/addons/sdf/triSDF.ts","../src/addons/geometry/aabb/aabb.ts","../src/addons/geometry/aabb/centroid.ts","../src/addons/geometry/aabb/contain.ts","../src/addons/geometry/aabb/diagonal.ts","../src/addons/geometry/aabb/expand.ts","../src/addons/geometry/aabb/intersect.ts","../src/addons/geometry/aabb/square.ts","../src/addons/geometry/triangle/area.ts","../src/addons/geometry/triangle/barycentric.ts","../src/addons/geometry/triangle/centroid.ts","../src/addons/geometry/triangle/closestPoint.ts","../src/addons/geometry/triangle/contain.ts","../src/addons/geometry/triangle/distanceSq.ts","../src/addons/math/lengthSq.ts","../src/addons/geometry/triangle/intersect.ts","../src/addons/geometry/triangle/normal.ts","../src/addons/geometry/triangle/signedDistance.ts","../src/addons/geometry/triangle/triangle.ts","../src/addons/generative/cnoise.ts","../src/addons/math/mod289.ts","../src/addons/math/permute.ts","../src/addons/math/taylorInvSqrt.ts","../src/addons/math/quintic.ts","../src/addons/generative/curl.ts","../src/addons/generative/snoise.ts","../src/addons/math/grad4.ts","../src/addons/generative/fbm.ts","../src/addons/generative/gnoise.ts","../src/addons/generative/random.ts","../src/addons/generative/srandom.ts","../src/addons/math/cubic.ts","../src/addons/generative/gerstnerWave.ts","../src/addons/generative/noised.ts","../src/addons/generative/pnoise.ts","../src/addons/generative/psrdnoise.ts","../src/addons/generative/voronoi.ts","../src/addons/generative/voronoise.ts","../src/addons/generative/wavelet.ts","../src/addons/math/rotate2d.ts","../src/addons/generative/worley.ts","../src/addons/math/dist.ts","../src/addons/math/aafloor.ts","../src/addons/math/map.ts","../src/addons/math/aafract.ts","../src/addons/math/aamirror.ts","../src/addons/math/nyquist.ts","../src/addons/math/absi.ts","../src/addons/math/adaptiveThreshold.ts","../src/addons/math/bump.ts","../src/addons/math/cubicMix.ts","../src/addons/math/decimate.ts","../src/addons/math/fcos.ts","../src/addons/math/frac.ts","../src/addons/math/gain.ts","../src/addons/math/gaussian.ts","../src/addons/math/hammersley.ts","../src/addons/math/highPass.ts","../src/addons/math/inside.ts","../src/addons/math/invCubic.ts","../src/addons/math/invQuartic.ts","../src/addons/math/inverse.ts","../src/addons/math/mirror.ts","../src/addons/math/mmax.ts","../src/addons/math/mmix.ts","../src/addons/math/mod2.ts","../src/addons/math/modi.ts","../src/addons/math/pack.ts","../src/addons/math/parabola.ts","../src/addons/math/pow2.ts","../src/addons/math/pow3.ts","../src/addons/math/pow5.ts","../src/addons/math/pow7.ts","../src/addons/math/powFast.ts","../src/addons/math/quat/quat2mat3.ts","../src/addons/math/quat/quat2mat4.ts","../src/addons/math/toMat4.ts","../src/addons/math/quat/quatAdd.ts","../src/addons/math/quat/quatConj.ts","../src/addons/math/quat/quatDiv.ts","../src/addons/math/quat/quatIdentity.ts","../src/addons/math/quat/quatInverse.ts","../src/addons/math/quat/quatLengthSq.ts","../src/addons/math/quat/quatLength.ts","../src/addons/math/quat/quatLerp.ts","../src/addons/math/quat/quatMul.ts","../src/addons/math/quat/quatNeg.ts","../src/addons/math/quat/quatNorm.ts","../src/addons/math/quat/quatSub.ts","../src/addons/math/quartic.ts","../src/addons/math/rotate3d.ts","../src/addons/math/rotate3dX.ts","../src/addons/math/rotate3dY.ts","../src/addons/math/rotate3dZ.ts","../src/addons/math/rotate4d.ts","../src/addons/math/rotate4dX.ts","../src/addons/math/rotate4dY.ts","../src/addons/math/rotate4dZ.ts","../src/addons/math/saturateMediump.ts","../src/addons/math/scale2d.ts","../src/addons/math/scale3d.ts","../src/addons/math/scale4d.ts","../src/addons/math/smootherstep.ts","../src/addons/math/toMat3.ts","../src/addons/math/translate4d.ts","../src/addons/math/unpack.ts","../src/addons/sdf/sphereSDF.ts","../src/addons/sdf/boxSDF.ts","../src/addons/space/aspect.ts","../src/addons/space/bracketing.ts","../src/addons/space/brickTile.ts","../src/addons/space/sqTile.ts","../src/addons/space/cart2polar.ts","../src/addons/space/center.ts","../src/addons/space/checkerTile.ts","../src/addons/space/depth2viewZ.ts","../src/addons/space/displace.ts","../src/addons/space/lookAt.ts","../src/addons/space/equirect2xyz.ts","../src/addons/space/eulerView.ts","../src/addons/space/translate.ts","../src/addons/space/fisheye2xyz.ts","../src/addons/space/flipY.ts","../src/addons/space/hexTile.ts","../src/addons/space/kaleidoscope.ts","../src/addons/space/linearizeDepth.ts","../src/addons/space/mirrorTile.ts","../src/addons/space/nearest.ts","../src/addons/space/orthographic.ts","../src/addons/space/parallaxMapping.ts","../src/addons/space/perspective.ts","../src/addons/space/polar2cart.ts","../src/addons/space/ratio.ts","../src/addons/space/sprite.ts","../src/addons/space/tbn.ts","../src/addons/space/lookAtView.ts","../src/addons/space/rotate.ts","../src/addons/space/rotateX.ts","../src/addons/space/rotateY.ts","../src/addons/space/rotateZ.ts","../src/addons/space/unratio.ts","../src/addons/space/uncenter.ts","../src/addons/space/viewZ2depth.ts","../src/addons/space/xyz2equirect.ts","../src/addons/space/triTile.ts","../src/addons/space/windmillTile.ts"],"sourcesContent":["import { Fn, Float, pow, sin } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const backIn = Fn(([t]: [Float]): Float => {\n return pow(t, 3).sub(t.mul(sin(t.mul(PI))))\n}).setLayout({\n name: 'backIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { float } from \"../../node\"\n\n// Mathematical constants as float nodes\nexport const EIGHTH_PI = float(0.39269908169)\nexport const QTR_PI = float(0.78539816339)\nexport const HALF_PI = float(1.5707963267948966192313216916398)\nexport const PI = float(3.1415926535897932384626433832795)\nexport const TWO_PI = float(6.2831853071795864769252867665590)\nexport const TAU = float(6.2831853071795864769252867665590)\nexport const INV_PI = float(0.31830988618379067153776752674503)\nexport const INV_SQRT_TAU = float(0.39894228040143267793994605993439)\nexport const SQRT_HALF_PI = float(1.25331413732)\nexport const PHI = float(1.618033988749894848204586834)\nexport const EPSILON = float(0.00001)\nexport const GOLDEN_RATIO = float(1.6180339887)\nexport const GOLDEN_RATIO_CONJUGATE = float(0.61803398875)\nexport const GOLDEN_ANGLE = float(2.39996323)\nexport const DEG2RAD = PI.div(180)\nexport const RAD2DEG = float(180).div(PI)","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backInOut = Fn(([t]: [Float]): Float => {\n const f = t.mul(2).select(float(1).sub(t.mul(2).sub(1)), t.lessThan(0.5))\n const g = backIn(f)\n return g.div(2).select(float(1).sub(g).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'backInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backOut = Fn(([t]: [Float]): Float => {\n return float(1).sub(backIn(float(1).sub(t)))\n}).setLayout({\n name: 'backOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceIn = Fn(([t]: [Float]): Float => {\n return float(1).sub(bounceOut(float(1).sub(t)))\n}).setLayout({\n name: 'bounceIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\n\nexport const bounceOut = Fn(([t]: [Float]): Float => {\n const a = float(4 / 11)\n const b = float(8 / 11)\n const c = float(9 / 10)\n const ca = float(4356.0 / 361.0)\n const cb = float(35442.0 / 1805.0)\n const cc = float(16061.0 / 1805.0)\n const t2 = t.mul(t)\n return t2.mul(7.5625).select(\n t2\n .mul(9.075)\n .sub(t.mul(9.9))\n .add(3.4)\n .select(\n t2\n .mul(ca)\n .sub(t.mul(cb))\n .add(cc)\n .select(t2.mul(10.8).sub(t.mul(20.52)).add(10.72), t.lessThan(c)),\n t.lessThan(b)\n ),\n t.lessThan(a)\n )\n}).setLayout({\n name: 'bounceOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceInOut = Fn(([t]: [Float]): Float => {\n return float(1)\n .sub(bounceOut(float(1).sub(t.mul(2))))\n .div(2)\n .select(bounceOut(t.mul(2).sub(1)).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'bounceInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularIn = Fn(([t]: [X]): X => {\n return t.mul(t).oneMinus().sqrt().oneMinus()\n}).setLayout({\n name: 'circularIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(4).oneMinus().sqrt().oneMinus().div(2)\n const late = t.mul(2).sub(1).mul(t.mul(-2).add(3)).sqrt().add(1).div(2)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'circularInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../../node'\n\nexport const circularOut = Fn(([t]: [X]): X => {\n return float(2).sub(t).mul(t).sqrt()\n}).setLayout({\n name: 'circularOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicIn = Fn(([t]: [X]): X => {\n return t.mul(t).mul(t)\n}).setLayout({\n name: 'cubicIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(t).mul(4)\n const late = t.mul(2).sub(2).pow(3).div(2).add(1)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'cubicInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicOut = Fn(([t]: [X]): X => {\n const f = t.sub(1)\n return f.mul(f).mul(f).add(1)\n}).setLayout({\n name: 'cubicOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticIn = Fn(([t]: [Float]): Float => {\n return sin(t.mul(13).mul(HALF_PI)).mul(pow(float(2), t.sub(1).mul(10)))\n}).setLayout({\n name: 'elasticIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticInOut = Fn(([t]: [Float]): Float => {\n const t2 = t.mul(2)\n const t2minus1 = t2.sub(1)\n return sin(HALF_PI.mul(13).mul(t2))\n .mul(pow(float(2), t2minus1.mul(10)))\n .div(2)\n .select(\n sin(HALF_PI.mul(-13).mul(t2minus1.add(1)))\n .mul(pow(float(2), t2minus1.mul(-10)))\n .div(2)\n .add(1),\n t.lessThan(0.5)\n )\n}).setLayout({\n name: 'elasticInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticOut = Fn(([t]: [Float]): Float => {\n return sin(float(-13).mul(t.add(1)).mul(HALF_PI))\n .mul(pow(float(2), float(-10).mul(t)))\n .add(1)\n}).setLayout({\n name: 'elasticOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialIn = Fn(([t]: [X]): X => {\n return (t as any).select(t.sub(1).mul(10).exp2(), t.equal(0))\n}).setLayout({\n name: 'exponentialIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialInOut = Fn(([t]: [X]): X => {\n const isZeroOrOne = t.equal(0).or(t.equal(1))\n const early = t.mul(20).sub(10).exp2().div(2)\n const late = t.mul(-20).add(10).exp2().div(-2).add(1)\n const result = (early as any).select(late, t.lessThan(0.5))\n return (t as any).select(result, isZeroOrOne)\n}).setLayout({\n name: 'exponentialInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialOut = Fn(([t]: [X]): X => {\n return (t as any).select(t.mul(-10).exp2().negate().add(1), t.equal(1))\n}).setLayout({\n name: 'exponentialOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearIn = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearInOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticIn = Fn(([t]: [X]): X => {\n return t.mul(t)\n}).setLayout({\n name: 'quadraticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quadraticInOut = Fn(([t]: [X]): X => {\n const p = t.mul(t).mul(2)\n return select(p, p.negate().add(t.mul(4)).sub(1), t.lessThan(0.5))\n}).setLayout({\n name: 'quadraticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticOut = Fn(([t]: [X]): X => {\n return t.mul(t.sub(2)).negate()\n}).setLayout({\n name: 'quadraticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticIn = Fn(([t]: [X]): X => {\n return t.pow(4)\n}).setLayout({\n name: 'quarticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quarticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(4).mul(8)\n const late = t.sub(1).pow(4).mul(-8).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quarticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticOut = Fn(([t]: [X]): X => {\n const it = t.sub(1)\n return it.mul(it).mul(it).mul(t.oneMinus()).add(1)\n}).setLayout({\n name: 'quarticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticIn = Fn(([t]: [X]): X => {\n return t.pow(5)\n}).setLayout({\n name: 'quinticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quinticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(5).mul(16)\n const late = t.mul(2).sub(2).pow(5).mul(-0.5).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quinticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticOut = Fn(([t]: [X]): X => {\n return t.sub(1).pow(5).negate().add(1)\n}).setLayout({\n name: 'quinticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineIn = Fn(([t]: [X]): X => {\n return sin(t.sub(1).mul(HALF_PI as any)).add(1)\n}).setLayout({\n name: 'sineIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, cos } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const sineInOut = Fn(([t]: [X]): X => {\n return cos(PI.mul(t)).sub(1).mul(-0.5)\n}).setLayout({\n name: 'sineInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineOut = Fn(([t]: [X]): X => {\n return sin(t.mul(HALF_PI as any))\n}).setLayout({\n name: 'sineOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Vec4, Vec3, float, vec3 } from '../../../node'\n\nexport const cmyk2rgb = Fn(([cmyk]: [Vec4]): Vec3 => {\n const invK = float(1).sub(cmyk.w).toVar()\n return float(1)\n .sub(vec3(1).min(cmyk.xyz.mul(invK).add(cmyk.w)))\n .saturate()\n}).setLayout({\n name: 'cmyk2rgb',\n type: 'vec3',\n inputs: [{ name: 'cmyk', type: 'vec4' }],\n})\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst GAMMA = float(2.2)\n\nexport const gamma2linear = Fn(([v]: [X]): X => {\n return v.pow(GAMMA)\n}).setLayout({\n name: 'gamma2linear',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const gamma2linearVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(gamma2linear(v.xyz), v.w)\n}).setLayout({\n name: 'gamma2linearVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsl2rgb = Fn(([hsl]: [Vec3]): Vec3 => {\n const rgb = hue2rgb(hsl.x).toVar()\n const C = float(1).sub(hsl.z.mul(2).sub(1).abs()).mul(hsl.y).toVar()\n return rgb.sub(0.5).mul(C).add(hsl.z)\n}).setLayout({\n name: 'hsl2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsl', type: 'vec3' }],\n})\n\nexport const hsl2rgbVec4 = Fn(([hsl]: [Vec4]): Vec4 => {\n return vec4(hsl2rgb(hsl.xyz), hsl.w)\n}).setLayout({\n name: 'hsl2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsl', type: 'vec4' }],\n})\n","import { Fn, Float, Vec3, float, vec3 } from '../../../node'\n\nexport const hue2rgb = Fn(([hue]: [Float]): Vec3 => {\n const R = hue.mul(6).sub(3).abs().sub(1).toVar()\n const G = float(2).sub(hue.mul(6).sub(2).abs()).toVar()\n const B = float(2).sub(hue.mul(6).sub(4).abs()).toVar()\n return vec3(R, G, B).saturate()\n}).setLayout({\n name: 'hue2rgb',\n type: 'vec3',\n inputs: [{ name: 'hue', type: 'float' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsv2rgb = Fn(([hsv]: [Vec3]): Vec3 => {\n return hue2rgb(hsv.x).sub(1).mul(hsv.y).add(1).mul(hsv.z)\n}).setLayout({\n name: 'hsv2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsv', type: 'vec3' }],\n})\n\nexport const hsv2rgbVec4 = Fn(([hsv]: [Vec4]): Vec4 => {\n return vec4(hsv2rgb(hsv.xyz), hsv.w)\n}).setLayout({\n name: 'hsv2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsv', type: 'vec4' }],\n})\n","import { Fn, atan2, sqrt, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lab2lch3 = Fn(([lab]: [Vec3]): Vec3 => {\n const chroma = sqrt(lab.y.mul(lab.y).add(lab.z.mul(lab.z)))\n const hue = atan2(lab.z, lab.y).mul(57.2957795131)\n return vec3(lab.x, chroma, hue)\n}).setLayout({\n name: 'lab2lch3',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2lch4 = Fn(([lab]: [Vec4]): Vec4 => {\n const lch = lab2lch3(lab.xyz)\n return vec4(lch, lab.w)\n}).setLayout({\n name: 'lab2lch4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n\nexport const lab2lch = lab2lch3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lab2xyz } from './lab2xyz'\nimport { xyz2rgb } from './xyz2rgb'\n\nexport const lab2rgb = Fn(([lab]: [Vec3]): Vec3 => {\n return xyz2rgb(lab2xyz(lab))\n}).setLayout({\n name: 'lab2rgb',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2rgbVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2rgb(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, select, vec3, vec4 } from '../../../node'\n\n// CIE D65 white point (default)\nconst CIE_WHITE = vec3(0.95045592705, 1, 1.08905775076)\n\nexport const lab2xyz = Fn(([lab]: [Vec3]): Vec3 => {\n const fy = lab.x.add(16).div(116).toVar()\n const fx = lab.y.div(500).add(fy).toVar()\n const fz = fy.sub(lab.z.div(200)).toVar()\n\n const threshold = float(0.206897)\n const delta = float(16).div(116)\n const factor = float(7.787)\n\n const convertX = select(fx.pow(3), fx.sub(delta).div(factor), fx.greaterThan(threshold))\n const convertY = select(fy.pow(3), fy.sub(delta).div(factor), fy.greaterThan(threshold))\n const convertZ = select(fz.pow(3), fz.sub(delta).div(factor), fz.greaterThan(threshold))\n\n return CIE_WHITE.mul(100).mul(vec3(convertX, convertY, convertZ))\n}).setLayout({\n name: 'lab2xyz',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2xyzVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2xyz(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst XYZ2RGB = mat3(\n 3.2404542,\n -1.5371385,\n -0.4985314,\n -0.969266,\n 1.8760108,\n 0.041556,\n 0.0556434,\n -0.2040259,\n 1.0572252\n)\n\nexport const xyz2rgb = Fn(([xyz]: [Vec3]): Vec3 => {\n return XYZ2RGB.mul(xyz.mul(0.01))\n}).setLayout({\n name: 'xyz2rgb',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2rgbVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2rgb(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lch2lab3 = Fn(([lch]: [Vec3]): Vec3 => {\n const radians = lch.z.mul(0.01745329251)\n return vec3(lch.x, lch.y.mul(radians.cos()), lch.y.mul(radians.sin()))\n}).setLayout({\n name: 'lch2lab3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2lab4 = Fn(([lch]: [Vec4]): Vec4 => {\n const lab = lch2lab3(lch.xyz)\n return vec4(lab, lch.w)\n}).setLayout({\n name: 'lch2lab4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2lab = lch2lab3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lch2lab } from './lch2lab'\nimport { lab2rgb } from './lab2rgb'\n\nexport const lch2rgb3 = Fn(([lch]: [Vec3]): Vec3 => {\n return lab2rgb(lch2lab(lch))\n}).setLayout({\n name: 'lch2rgb3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2rgb4 = Fn(([lch]: [Vec4]): Vec4 => {\n const rgb = lch2rgb3(lch.xyz)\n return vec4(rgb, lch.w)\n}).setLayout({\n name: 'lch2rgb4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2rgb = lch2rgb3\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst INV_GAMMA = float(1).div(2.2)\n\nexport const linear2gamma = Fn(([v]: [X]): X => {\n return v.pow(INV_GAMMA)\n}).setLayout({\n name: 'linear2gamma',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const linear2gammaVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(linear2gamma(v.xyz), v.w)\n}).setLayout({\n name: 'linear2gammaVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst OKLAB2RGB_A = mat3(1, 1, 1, 0.3963377774, -0.1055613458, -0.0894841775, 0.2158037573, -0.0638541728, -1.291485548)\n\nconst OKLAB2RGB_B = mat3(\n 4.0767416621,\n -1.2684380046,\n -0.0041960863,\n -3.3077115913,\n 2.6097574011,\n -0.7034186147,\n 0.2309699292,\n -0.3413193965,\n 1.707614701\n)\n\nexport const oklab2rgb3 = Fn(([oklab]: [Vec3]): Vec3 => {\n const lms = OKLAB2RGB_A.mul(oklab)\n return OKLAB2RGB_B.mul(lms.mul(lms).mul(lms))\n}).setLayout({\n name: 'oklab2rgb3',\n type: 'vec3',\n inputs: [{ name: 'oklab', type: 'vec3' }],\n})\n\nexport const oklab2rgb4 = Fn(([oklab]: [Vec4]): Vec4 => {\n const rgb = oklab2rgb3(oklab.xyz)\n return vec4(rgb, oklab.w)\n}).setLayout({\n name: 'oklab2rgb4',\n type: 'vec4',\n inputs: [{ name: 'oklab', type: 'vec4' }],\n})\n\nexport const oklab2rgb = oklab2rgb3\n","import { Fn, Vec3, Vec4, float, vec4, step } from '../../../node'\nimport { mmin3 } from '../../math/mmin'\n\nexport const rgb2cmyk = Fn(([rgb]: [Vec3]): Vec4 => {\n const k = mmin3(float(1).sub(rgb)).toVar()\n const invK = float(1).sub(k).toVar()\n const cmy = float(1).sub(rgb).sub(k).div(invK).mul(step(0, invK)).toVar()\n return vec4(cmy, k).saturate()\n}).setLayout({\n name: 'rgb2cmyk',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, min } from '../../node'\n\nexport const mmin2 = Fn(([v]: [Vec2]): Float => {\n return min(v.x, v.y)\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmin3 = Fn(([v]: [Vec3]): Float => {\n return min(v.x, min(v.y, v.z))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmin4 = Fn(([v]: [Vec4]): Float => {\n return min(min(v.x, v.y), min(v.z, v.w))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\n// Generic mmin function - delegates to specific implementations\nexport const mmin = mmin4\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10').constant()\n\nexport const rgb2hcv = Fn(([rgb]: [Vec3]): Vec3 => {\n const P_true = vec4(rgb.b, rgb.g, -1, float(2).div(3)).toVar()\n const P_false = vec4(rgb.g, rgb.b, 0, float(-1).div(3)).toVar()\n const P_final = select(P_true, P_false, rgb.g.lessThan(rgb.b)).toVar()\n\n const Q_true = vec4(P_final.x, P_final.y, P_final.w, rgb.r).toVar()\n const Q_false = vec4(rgb.r, P_final.y, P_final.z, P_final.x).toVar()\n const Q_final = select(Q_true, Q_false, rgb.r.lessThan(P_final.x)).toVar()\n\n const C = Q_final.x.sub(Q_final.w.min(Q_final.y)).toVar()\n const H = Q_final.w.sub(Q_final.y).div(float(6).mul(C).add(HCV_EPSILON)).add(Q_final.z).abs().toVar()\n return vec3(H, C, Q_final.x)\n}).setLayout({\n name: 'rgb2hcv',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hcvVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hcv(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hcvVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4 } from '../../../node'\nimport { rgb2hcv } from './rgb2hcv'\n\nconst HSL_EPSILON = float('1e-10')\n\nexport const rgb2hsl = Fn(([rgb]: [Vec3]): Vec3 => {\n const HCV = rgb2hcv(rgb).toVar()\n const L = HCV.z.sub(HCV.y.div(2)).toVar()\n const S = HCV.y.div(float(1).sub(L.mul(2).sub(1).abs()).add(HSL_EPSILON)).toVar()\n return vec3(HCV.x, S, L)\n}).setLayout({\n name: 'rgb2hsl',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hslVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hsl(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hslVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10')\n\nexport const rgb2hsv = Fn(([c]: [Vec3]): Vec3 => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n const H = Q.z\n .add(Q.w.sub(Q.y).div(float(6).mul(d).add(HCV_EPSILON)))\n .abs()\n .toVar()\n const S = d.div(Q.x.add(HCV_EPSILON)).toVar()\n const V = Q.x.toVar()\n\n return vec3(H, S, V)\n}).setLayout({\n name: 'rgb2hsv',\n type: 'vec3',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hsvVec4 = Fn(([c]: [Vec4]): Vec4 => {\n return vec4(rgb2hsv(c.xyz), c.w)\n}).setLayout({\n name: 'rgb2hsvVec4',\n type: 'vec4',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, Float, float, vec4, select } from '../../../node'\n\nconst HUE_EPSILON = float('1e-10')\n\nexport const rgb2hue = Fn(([c]: [Vec3]): Float => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n return Q.z.add(Q.w.sub(Q.y).div(float(6).mul(d).add(HUE_EPSILON))).abs()\n}).setLayout({\n name: 'rgb2hue',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hueVec4 = Fn(([c]: [Vec4]): Float => {\n return rgb2hue(c.xyz)\n}).setLayout({\n name: 'rgb2hueVec4',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2xyz } from './rgb2xyz'\nimport { xyz2lab } from './xyz2lab'\n\nexport const rgb2lab = Fn(([rgb]: [Vec3]): Vec3 => {\n return xyz2lab(rgb2xyz(rgb))\n}).setLayout({\n name: 'rgb2lab',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2labVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2lab(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2labVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst RGB2XYZ = mat3(0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.072175, 0.0193339, 0.119192, 0.9503041)\n\nexport const rgb2xyz = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2XYZ.mul(rgb)\n}).setLayout({\n name: 'rgb2xyz',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2xyzVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2xyz(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, step, mix } from '../../../node'\n\nexport const xyz2lab = Fn(([xyz]: [Vec3]): Vec3 => {\n const n = xyz.div(vec3(95.047, 100, 108.883)).toVar()\n const c0 = n.pow(vec3(1 / 3)).toVar()\n const c1 = n\n .mul(7.787)\n .add(16 / 116)\n .toVar()\n const v = mix(c0, c1, step(n, vec3(0.008856))).toVar()\n const L = v.y.mul(116).sub(16).toVar()\n const A = v.x.sub(v.y).mul(500).toVar()\n const B = v.y.sub(v.z).mul(200).toVar()\n return vec3(L, A, B)\n}).setLayout({\n name: 'xyz2lab',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2labVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2lab(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2labVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2lab } from './rgb2lab'\nimport { lab2lch } from './lab2lch'\n\nexport const rgb2lch3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return lab2lch(rgb2lab(rgb))\n}).setLayout({\n name: 'rgb2lch3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2lch4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const lch = rgb2lch3(rgb.xyz)\n return vec4(lch, rgb.w)\n}).setLayout({\n name: 'rgb2lch4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2lch = rgb2lch3\n","import { Fn, mat3, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2OKLAB_A = mat3(\n 0.2104542553,\n 1.9779984951,\n 0.0259040371,\n 0.793617785,\n -2.428592205,\n 0.7827717662,\n -0.0040720468,\n 0.4505937099,\n -0.808675766\n)\n\nconst RGB2OKLAB_B = mat3(\n 0.4122214708,\n 0.2119034982,\n 0.0883024619,\n 0.5363325363,\n 0.6806995451,\n 0.2817188376,\n 0.0514459929,\n 0.1073969566,\n 0.6299787005\n)\n\nexport const rgb2oklab3 = Fn(([rgb]: [Vec3]): Vec3 => {\n const lms = RGB2OKLAB_B.mul(rgb)\n return RGB2OKLAB_A.mul(lms.sign().mul(lms.abs().pow(vec3(0.3333333333333))))\n}).setLayout({\n name: 'rgb2oklab3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2oklab4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const oklab = rgb2oklab3(rgb.xyz)\n return vec4(oklab, rgb.w)\n}).setLayout({\n name: 'rgb2oklab4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2oklab = rgb2oklab3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const rgb2srgbFloat = Fn(([c]: [Float]): Float => {\n return select(c.mul(12.92), float(1.055).mul(c.pow(0.4166666666666667)).sub(0.055), c.lessThan(0.0031308))\n}).setLayout({\n name: 'rgb2srgb',\n type: 'float',\n inputs: [{ name: 'c', type: 'float' }],\n})\n\nexport const rgb2srgbVec3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return vec3(\n rgb2srgbFloat(rgb.r.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.g.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.b.sub(SRGB_EPSILON))\n ).saturate()\n}).setLayout({\n name: 'rgb2srgbVec3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2srgbVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2srgbVec3(rgb.rgb), rgb.a)\n}).setLayout({\n name: 'rgb2srgbVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const rgb2srgb = rgb2srgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YIQ = mat3(0.3, 0.59, 0.11, 0.599, -0.2773, -0.3217, 0.213, -0.5251, 0.3121)\n\nexport const rgb2yiq3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YIQ.mul(rgb)\n}).setLayout({\n name: 'rgb2yiq3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yiq4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yiq = rgb2yiq3(rgb.xyz)\n return vec4(yiq, rgb.w)\n}).setLayout({\n name: 'rgb2yiq4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yiq = rgb2yiq3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YUV_HDTV = mat3(0.2126, -0.09991, 0.615, 0.7152, -0.33609, -0.55861, 0.0722, 0.426, -0.05639)\n\nconst RGB2YUV_SDTV = mat3(0.299, -0.14713, 0.615, 0.587, -0.28886, -0.51499, 0.114, 0.436, -0.10001)\n\nexport const rgb2yuv3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_HDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuv3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yuv = rgb2yuv3(rgb.xyz)\n return vec4(yuv, rgb.w)\n}).setLayout({\n name: 'rgb2yuv4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yuvSDTV = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_SDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuvSDTV',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv = rgb2yuv3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const srgb2rgbFloat = Fn(([v]: [Float]): Float => {\n return select(v.mul(0.0773993808), v.add(0.055).mul(0.947867298578199).pow(2.4), v.lessThan(0.04045))\n}).setLayout({\n name: 'srgb2rgb',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const srgb2rgbVec3 = Fn(([srgb]: [Vec3]): Vec3 => {\n return vec3(\n srgb2rgbFloat(srgb.r.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.g.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.b.add(SRGB_EPSILON))\n )\n}).setLayout({\n name: 'srgb2rgbVec3',\n type: 'vec3',\n inputs: [{ name: 'srgb', type: 'vec3' }],\n})\n\nexport const srgb2rgbVec4 = Fn(([srgb]: [Vec4]): Vec4 => {\n return vec4(srgb2rgbVec3(srgb.rgb), srgb.a)\n}).setLayout({\n name: 'srgb2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'srgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const srgb2rgb = srgb2rgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YIQ2RGB = mat3(1, 0.9469, 0.6235, 1, -0.2747, -0.6357, 1, -1.1085, 1.702)\n\nexport const yiq2rgb3 = Fn(([yiq]: [Vec3]): Vec3 => {\n return YIQ2RGB.mul(yiq)\n}).setLayout({\n name: 'yiq2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yiq', type: 'vec3' }],\n})\n\nexport const yiq2rgb4 = Fn(([yiq]: [Vec4]): Vec4 => {\n const rgb = yiq2rgb3(yiq.xyz)\n return vec4(rgb, yiq.w)\n}).setLayout({\n name: 'yiq2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yiq', type: 'vec4' }],\n})\n\nexport const yiq2rgb = yiq2rgb3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YUV2RGB_HDTV = mat3(1, 1, 1, 0, -0.21482, 2.12798, 1.28033, -0.38059, 0)\n\nconst YUV2RGB_SDTV = mat3(1, 1, 1, 0, -0.39465, 2.03211, 1.13983, -0.5806, 0)\n\nexport const yuv2rgb3 = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_HDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb4 = Fn(([yuv]: [Vec4]): Vec4 => {\n const rgb = yuv2rgb3(yuv.xyz)\n return vec4(rgb, yuv.w)\n}).setLayout({\n name: 'yuv2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yuv', type: 'vec4' }],\n})\n\nexport const yuv2rgbSDTV = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_SDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgbSDTV',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb = yuv2rgb3\n","import { Fn, Vec2, Float, float, vec2, floor, length, clamp, min, dot, cos, normalize, If } from '../../node'\n\n// Constants\nconst ARROWS_TILE_SIZE = float(32)\nconst ARROWS_HEAD_ANGLE = float(0.5)\n\n// Arrow tile center coordinate calculation\nexport const arrowsTileCenterCoord = Fn(([pos]: [Vec2]): Vec2 => {\n return floor(pos.div(ARROWS_TILE_SIZE)).add(0.5).mul(ARROWS_TILE_SIZE)\n}).setLayout({\n name: 'arrowsTileCenterCoord',\n type: 'vec2',\n inputs: [{ name: 'pos', type: 'vec2' }],\n})\n\n// Arrows with resolution parameter\nexport const arrowsWithResolution = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]): Float => {\n const scaledP = p.mul(resolution).toVar()\n scaledP.subAssign(arrowsTileCenterCoord(scaledP))\n const mag_v = length(v).toVar()\n\n const result = float(0).toVar()\n\n If(mag_v.greaterThan(0), () => {\n const dir_v = v.div(mag_v).toVar()\n mag_v.assign(clamp(mag_v, 5, ARROWS_TILE_SIZE.div(2)))\n const vScaled = dir_v.mul(mag_v).toVar()\n\n // Simplified arrow implementation based on GLSL default style\n const arrow = float(1)\n .add(\n min(\n float(0),\n dot(normalize(vScaled.sub(scaledP)), dir_v).sub(cos(ARROWS_HEAD_ANGLE.div(2)))\n )\n .mul(2)\n .mul(length(vScaled.sub(scaledP)))\n .add(min(float(0), dot(scaledP, dir_v).add(1)))\n .add(\n min(\n float(0),\n cos(ARROWS_HEAD_ANGLE.div(2)).sub(\n dot(normalize(vScaled.mul(0.33).sub(scaledP)), dir_v)\n )\n )\n .mul(mag_v)\n .mul(0.8)\n )\n )\n .saturate()\n result.assign(arrow)\n })\n\n return result\n}).setLayout({\n name: 'arrowsWithResolution',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n { name: 'resolution', type: 'vec2' },\n ],\n})\n\n// Arrows with default resolution\nexport const arrows = Fn(([p, v]: [Vec2, Vec2]): Float => {\n return arrowsWithResolution(p, v, vec2(1))\n}).setLayout({\n name: 'arrows',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4, Loop, int } from '../../node'\nimport { line } from './line'\n\nexport const axis = Fn(([st, M, pos, thickness]: [Vec2, Mat4, Vec3, Float]): Vec4 => {\n let result = vec4(0, 0, 0, 0).toVar()\n\n // Transform center position\n const center = M.mul(vec4(pos, 1)).toVar()\n center.xy.assign(center.xy.div(center.w))\n center.xy.assign(center.xy.div(2).add(0.5))\n\n // Define axis colors (RGB for XYZ)\n const axisColors = [\n vec4(1, 0, 0, 1), // Red for X axis\n vec4(0, 1, 0, 1), // Green for Y axis\n vec4(0, 0, 1, 1), // Blue for Z axis\n ]\n\n const axisDirections = [\n vec3(1, 0, 0), // X direction\n vec3(0, 1, 0), // Y direction\n vec3(0, 0, 1), // Z direction\n ]\n\n // Draw each axis\n Loop(int(3), ({ i }) => {\n const axisColor = (i.equal(int(0)) as any).select(\n axisColors[0],\n (i.equal(int(1)) as any).select(axisColors[1], axisColors[2])\n )\n\n const axisDir = (i.equal(int(0)) as any).select(\n axisDirections[0],\n (i.equal(int(1)) as any).select(axisDirections[1], axisDirections[2])\n )\n\n // Transform axis endpoint\n const axisPoint = (M as any).mul(vec4((pos as any).add(axisDir as any), 1)).toVar()\n axisPoint.xy.assign(axisPoint.xy.div(axisPoint.w))\n axisPoint.xy.assign(axisPoint.xy.div(2).add(0.5))\n\n // Draw line from center to axis endpoint\n const axisLine = line(st, center.xy, axisPoint.xy, thickness)\n result.addAssign((axisColor as any).mul(axisLine as any))\n })\n\n return result\n}).setLayout({\n name: 'axis',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat4' },\n { name: 'pos', type: 'vec3' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\nimport { fill } from './fill'\n\nexport const line = Fn(([st, a, b, thickness]: [Vec2, Vec2, Vec2, Float]): Float => {\n return fill(lineSDF(st, a, b), thickness)\n}).setLayout({\n name: 'line',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, clamp, dot, length, cross } from '../../node'\n\n// 2D line segment distance function\nexport const lineSDF2D = Fn(([st, a, b]: [Vec2, Vec2, Vec2]): Float => {\n const b_to_a = b.sub(a).toVar('b_to_a')\n const to_a = st.sub(a).toVar('to_a')\n const h = clamp(dot(to_a, b_to_a).div(dot(b_to_a, b_to_a)), 0, 1).toVar('h')\n return length(to_a.sub(h.mul(b_to_a)))\n}).setLayout({\n name: 'lineSDF2D',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\n// 3D line distance function\nexport const lineSDF3D = Fn(([p, a, b]: [Vec3, Vec3, Vec3]): Float => {\n return length(cross(p.sub(a), p.sub(b))).div(length(b.sub(a)))\n}).setLayout({\n name: 'lineSDF3D',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\n// Unified lineSDF function (defaults to 2D)\nexport const lineSDF = lineSDF2D\n","import { Fn, Float, smoothstep } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const fillWithEdge = Fn(([x, size, edge]: [Float, Float, Float]): Float => {\n return smoothstep(size.sub(edge), size.add(edge), x).oneMinus()\n}).setLayout({\n name: 'fillWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const fill = Fn(([x, size]: [Float, Float]): Float => {\n return aastep(size, x).oneMinus()\n}).setLayout({\n name: 'fill',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n ],\n})\n","import { Fn, Float, length, vec2, dFdx, dFdy, smoothstep } from '../../node'\n\nexport const aastep = Fn(([threshold, value]: [Float, Float]): Float => {\n const derivative = vec2(dFdx(value), dFdy(value))\n const afwidth = length(derivative).mul(0.7)\n return smoothstep(threshold.sub(afwidth), threshold.add(afwidth), value)\n}).setLayout({\n name: 'aastep',\n type: 'float',\n inputs: [\n { name: 'threshold', type: 'float' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X, float } from '../../node'\nimport { stroke } from './stroke'\n\n// Bridge effect for float\nexport const bridgeFloat = Fn(([c, d, s, w]: [Float, Float, Float, Float]): Float => {\n const maskedC = c.mul(float(1).sub(stroke(d, s, w.mul(2))))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeFloat',\n type: 'float',\n inputs: [\n { name: 'c', type: 'float' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec2\nexport const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec2',\n type: 'vec2',\n inputs: [\n { name: 'c', type: 'vec2' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec3\nexport const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'c', type: 'vec3' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec4\nexport const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridgeVec4',\n type: 'vec4',\n inputs: [\n { name: 'c', type: 'vec4' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Generic bridge function using auto type\nexport const bridge = Fn(([c, d, s, w]: [X, Float, Float, Float]): X => {\n const strokeMask = stroke(d, s, (w as any).mul(2))\n const maskedC = (c as any).mul(float(1).sub(strokeMask))\n return maskedC.add(strokeMask)\n}).setLayout({\n name: 'bridge',\n type: 'auto',\n inputs: [\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep, clamp } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const strokeWithEdge = Fn(([x, size, w, edge]: [Float, Float, Float, Float]): Float => {\n const d = smoothstep(size.sub(edge), size.add(edge), x.add(w.div(2))).sub(\n smoothstep(size.sub(edge), size.add(edge), x.sub(w.div(2)))\n )\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'strokeWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const stroke = Fn(([x, size, w]: [Float, Float, Float]): Float => {\n const d = aastep(size, x.add(w.div(2))).sub(aastep(size, x.sub(w.div(2))))\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'stroke',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, float, vec2, floor, ivec2 } from '../../node'\n\nexport const charLookupSimple = Fn(([index]: [Int]): Float => {\n const isValidChar = index.greaterThan(31).and(index.lessThan(127))\n return float(0).select(float(1), isValidChar)\n}).setLayout({\n name: 'charLookupSimple',\n type: 'float',\n inputs: [{ name: 'index', type: 'int' }],\n})\n\nexport const charSimple = Fn(([uv, charCode]: [Vec2, Int]): Float => {\n const charCoord = ivec2(floor(uv.mul(vec2(8, 16)))).toVar()\n charCoord.x.assign(charCoord.x.clamp(0, 7))\n charCoord.y.assign(charCoord.y.clamp(0, 15))\n const centerX = charCoord.x.sub(4).abs()\n const centerY = charCoord.y.sub(8).abs()\n const pattern = centerX.add(centerY).lessThan(charCode.mod(8) as any)\n return float(0).select(float(1), pattern)\n}).setLayout({\n name: 'charSimple',\n type: 'float',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'charCode', type: 'int' },\n ],\n})\n\n// Default char function using simplified implementation\nexport const char = charSimple\n","import { Fn, Vec2, Float } from '../../node'\nimport { circleSDFBasic } from '../sdf/circleSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const circleFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circleFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const circle = circleFill\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const circleSDF = Fn(([v, center]: [Vec2, Vec2]) => {\n return v.sub(center).length().mul(2)\n}).setLayout({\n name: 'circleSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const circleSDFBasic = Fn(([v]: [Vec2]) => {\n return v.sub(vec2(0.5)).length().mul(2)\n}).setLayout({\n name: 'circleSDFBasic',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, Vec3, Vec4, X, float, vec3, vec4, mix } from '../../node'\n\nexport const flipFloat = Fn(([v, pct]: [Float, Float]): Float => {\n return mix(v, float(1).sub(v), pct)\n}).setLayout({\n name: 'flipFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec3 = Fn(([v, pct]: [Vec3, Float]): Vec3 => {\n return mix(v, vec3(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec4 = Fn(([v, pct]: [Vec4, Float]): Vec4 => {\n return mix(v, vec4(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flip = Fn(([v, pct]: [X, Float]): X => {\n return mix(v, v.oneMinus(), pct)\n}).setLayout({\n name: 'flip',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'pct', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { hexSDF } from '../sdf/hexSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const hexFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(hexSDF(st), size)\n}).setLayout({\n name: 'hexFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const hexStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(hexSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'hexStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const hex = hexFill\n","import { Fn, Vec2, Float, abs, max, float } from '../../node'\n\nexport const hexSDF = Fn(([st]: [Vec2]): Float => {\n\t// Transform to centered coordinates [-1, 1]\n\tconst normalized = st.mul(2).sub(1).toVar()\n\tnormalized.assign(abs(normalized))\n\t\n\t// Hexagon SDF calculation using geometric properties\n\tconst sqrt3_2 = float(0.866025) // sqrt(3)/2\n\treturn max(\n\t\tabs(normalized.y), \n\t\tnormalized.x.mul(sqrt3_2).add(normalized.y.div(2))\n\t)\n}).setLayout({\n\tname: 'hexSDF',\n\ttype: 'float',\n\tinputs: [{ name: 'st', type: 'vec2' }],\n})","import { Fn, Vec2, Vec3, Vec4, Float, vec3, vec4, float } from '../../node'\nimport { circleFill } from './circle'\n\nexport const point2D = Fn(([st, pos, color, radius]: [Vec2, Vec2, Vec3, Float]): Vec4 => {\n const st_p = st.sub(pos)\n const circle = circleFill(st_p.add(0.5), radius)\n return vec4(color, 1).mul(circle)\n}).setLayout({\n name: 'point2D',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n { name: 'color', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n\nexport const pointSimple = Fn(([st, pos]: [Vec2, Vec2]): Vec4 => {\n return point2D(st, pos, vec3(1, 0, 0), float(0.02))\n}).setLayout({\n name: 'pointSimple',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n ],\n})\n\nexport const point = pointSimple\n","import { Fn, Vec2, Float, float } from '../../node'\nimport { rectSDF, rectSDFUniform } from '../sdf/rectSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const rectStroke = Fn(([st, size, strokeWidth]: [Vec2, Vec2, Float]): Float => {\n return stroke(rectSDF(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectStrokeUniform = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(rectSDFUniform(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStrokeUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectFill = Fn(([st, size]: [Vec2, Vec2]): Float => {\n return fill(rectSDF(st, size), float(1))\n}).setLayout({\n name: 'rectFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n ],\n})\n\nexport const rectFillUniform = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(rectSDFUniform(st, size), float(1))\n}).setLayout({\n name: 'rectFillUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const rect = rectFill\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const rectSDFBasic = Fn(([st]: [Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.abs().max(normalizedSt.y.abs())\n}).setLayout({\n name: 'rectSDFBasic',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const rectSDF = Fn(([st, s]: [Vec2, Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.div(s.x).abs().max(normalizedSt.y.div(s.y).abs())\n}).setLayout({\n name: 'rectSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const rectSDFUniform = Fn(([st, s]: [Vec2, Float]) => {\n return rectSDF(st, vec2(s))\n}).setLayout({\n name: 'rectSDFUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const rectSDFRounded = Fn(([p, b, r]: [Vec2, Vec2, Float]) => {\n const d = p.sub(0.5).mul(4.2).abs().sub(b).add(vec2(r)).toVar()\n return d.x.max(d.y).min(0).add(d.max(0).length()).sub(r)\n}).setLayout({\n name: 'rectSDFRounded',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { triSDF } from '../sdf/triSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const triFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(triSDF(st), size)\n}).setLayout({\n name: 'triFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const triStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(triSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'triStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const tri = triFill\n","import { Fn, Vec2, Float, max, abs, float } from '../../node'\n\nexport const triSDF = Fn(([st]: [Vec2]): Float => {\n\tconst normalized = st.sub(0.5).mul(5).toVar()\n\tconst sqrt3_2 = float(0.866025) // sqrt(3)/2\n\treturn max(\n\t\tabs(normalized.x).mul(sqrt3_2).add(normalized.y.div(2)),\n\t\tnormalized.y.div(-2)\n\t)\n}).setLayout({\n\tname: 'triSDF',\n\ttype: 'float',\n\tinputs: [{ name: 'st', type: 'vec2' }],\n})","import { struct, vec3 } from '../../../node'\n\nexport const AABB = struct({\n minBounds: vec3(),\n maxBounds: vec3(),\n})\n\nexport type AABBType = ReturnType<typeof AABB>\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbCentroid = Fn(([box]: [AABBType]): Vec3 => {\n return box.minBounds.add(box.maxBounds).mul(0.5)\n}).setLayout({\n name: 'aabbCentroid',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Bool } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbContain = Fn(([box, point]: [AABBType, Vec3]): Bool => {\n return point.x\n .greaterThan(box.minBounds.x)\n .and(point.x.lessThanEqual(box.maxBounds.x))\n .and(point.y.greaterThan(box.minBounds.y))\n .and(point.y.lessThanEqual(box.maxBounds.y))\n .and(point.z.greaterThan(box.minBounds.z))\n .and(point.z.lessThanEqual(box.maxBounds.z))\n}).setLayout({\n name: 'aabbContain',\n type: 'bool',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'point', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const diagonal = Fn(([box]: [AABBType]): Vec3 => {\n return box.maxBounds.sub(box.minBounds).abs()\n}).setLayout({\n name: 'diagonal',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Float } from '../../../node'\nimport { AABBType, AABB } from './aabb'\n\nexport const expand = Fn(([box, value]: [AABBType, Float]): AABBType => {\n return AABB({\n minBounds: box.minBounds.sub(value),\n maxBounds: box.maxBounds.add(value),\n })\n}).setLayout({\n name: 'expand',\n type: 'auto',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbIntersect = Fn(([box, rayOrigin, rayDir]: [AABBType, Vec3, Vec3]): Vec2 => {\n const tMin = box.minBounds.sub(rayOrigin).div(rayDir)\n const tMax = box.maxBounds.sub(rayOrigin).div(rayDir)\n const t1 = tMin.min(tMax)\n const t2 = tMin.max(tMax)\n const tNear = t1.x.max(t1.y).max(t1.z)\n const tFar = t2.x.min(t2.y).min(t2.z)\n return vec2(tNear, tFar)\n}).setLayout({\n name: 'aabbIntersect',\n type: 'vec2',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, max, abs } from '../../../node'\nimport { AABBType, AABB } from './aabb'\nimport { diagonal } from './diagonal'\n\nexport const square = Fn(([box]: [AABBType]): AABBType => {\n const diag = diagonal(box).mul(0.5).toVar('diag')\n const center = box.minBounds.add(diag).toVar('center')\n const maxDim = max(abs(diag.x), max(abs(diag.y), abs(diag.z))).toVar('maxDim')\n return AABB({\n minBounds: center.sub(maxDim),\n maxBounds: center.add(maxDim),\n })\n}).setLayout({\n name: 'square',\n type: 'auto',\n inputs: [{ name: 'box', type: 'auto' }],\n})","import { Fn, Float, length, cross } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const area = Fn(([tri]: [TriangleType]): Float => {\n return length(cross(tri.b.sub(tri.a), tri.c.sub(tri.a))).mul(0.5)\n}).setLayout({\n name: 'area',\n type: 'float',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, length, cross, dot, vec3, float } from '../../../node'\nimport { area } from './area'\nimport { TriangleType } from './triangle'\n\nexport const barycentricFromVec3 = Fn(([a, b, c]: [Vec3, Vec3, Vec3]): Vec3 => {\n const daa = dot(a, a).toVar('daa')\n const dab = dot(a, b).toVar('dab')\n const dbb = dot(b, b).toVar('dbb')\n const dca = dot(c, a).toVar('dca')\n const dcb = dot(c, b).toVar('dcb')\n const denom = daa.mul(dbb).sub(dab.mul(dab)).toVar('denom')\n const y = dbb.mul(dca).sub(dab.mul(dcb)).div(denom).toVar('y')\n const z = daa.mul(dcb).sub(dab.mul(dca)).div(denom).toVar('z')\n return vec3(float(1).sub(y).sub(z), y, z)\n}).setLayout({\n name: 'barycentricFromVec3',\n type: 'vec3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// barycentric(Triangle tri) - Triangle structから座標計算\nexport const barycentric = Fn(([tri]: [TriangleType]): Vec3 => {\n return barycentricFromVec3(tri.a, tri.b, tri.c)\n}).setLayout({\n name: 'barycentric',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n\nexport const barycentricFromPosition = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const f0 = a.sub(pos).toVar('f0')\n const f1 = b.sub(pos).toVar('f1')\n const f2 = c.sub(pos).toVar('f2')\n const areaValue = area(tri).toVar('area')\n return vec3(length(cross(f1, f2)), length(cross(f2, f0)), length(cross(f0, f1))).div(areaValue)\n}).setLayout({\n name: 'barycentricFromPosition',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleCentroid = Fn(([tri]: [TriangleType]): Vec3 => {\n return tri.a.add(tri.b).add(tri.c).div(3)\n}).setLayout({\n name: 'triangleCentroid',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, dot, length, cross, normalize, max, min, vec3, float, If, Return } from '../../../node'\nimport { barycentricFromVec3 } from './barycentric'\nimport { TriangleType } from './triangle'\n\nexport const closestPointWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a)\n const ac = c.sub(a)\n const p = pos.sub(dot(triNormal, pos.sub(a)).mul(triNormal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n Return(b.add(t.div(n).mul(bc)))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n Return(c.add(t.div(n).mul(ca)))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n Return(a.add(t.div(n).mul(ab)))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPointWithNormal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const closestPoint = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a) // .toVar('ab') @TODO FIX\n const ac = c.sub(a)\n const normal = normalize(cross(ac, ab))\n const p = pos.sub(dot(normal, pos.sub(a)).mul(normal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n Return(b.add(t.div(n).mul(bc)))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n Return(c.add(t.div(n).mul(ca)))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n Return(a.add(t.div(n).mul(ab)))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPoint',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Bool, Vec3, cross, dot } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleContain = Fn(([tri, pos]: [TriangleType, Vec3]): Bool => {\n const localA = tri.a.sub(pos).toVar('localA')\n const localB = tri.b.sub(pos).toVar('localB')\n const localC = tri.c.sub(pos).toVar('localC')\n const u = cross(localB, localC).toVar('u')\n const v = cross(localC, localA).toVar('v')\n const w = cross(localA, localB).toVar('w')\n return dot(u, v).greaterThanEqual(0).and(dot(u, w).greaterThanEqual(0))\n}).setLayout({\n name: 'triangleContain',\n type: 'bool',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, cross, dot, sign, sqrt, min } from '../../../node'\nimport { lengthSq } from '../../math/lengthSq'\nimport { TriangleType } from './triangle'\n\nexport const distanceSq = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const v21 = b.sub(a)\n const p1 = pos.sub(a)\n const v32 = c.sub(b)\n const p2 = pos.sub(b)\n const v13 = a.sub(c)\n const p3 = pos.sub(c)\n const nor = cross(v21, v13)\n\n const s1 = sign(dot(cross(v21, nor), p1))\n const s2 = sign(dot(cross(v32, nor), p2))\n const s3 = sign(dot(cross(v13, nor), p3))\n const signSum = s1.add(s2).add(s3)\n\n const edge1 = lengthSq(v21.mul(dot(v21, p1).div(lengthSq(v21)).saturate()).sub(p1))\n const edge2 = lengthSq(v32.mul(dot(v32, p2).div(lengthSq(v32)).saturate()).sub(p2))\n const edge3 = lengthSq(v13.mul(dot(v13, p3).div(lengthSq(v13)).saturate()).sub(p3))\n const edgeDistance = min(min(edge1, edge2), edge3)\n\n const planeDistance = dot(nor, p1).mul(dot(nor, p1)).div(lengthSq(nor))\n\n // @ts-ignore\n return sqrt(edgeDistance.select(planeDistance, signSum.lessThan(2))) as Float\n}).setLayout({\n name: 'distanceSq',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn } from '../../node'\nimport type { Vec2, X } from '../../node/types'\n\nexport const lengthSq = Fn(([v]: [X]): X => {\n return (v as Vec2).dot(v as Vec2) as X\n}).setLayout({\n name: 'lengthSq',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, cross, dot, float, struct, vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const Ray = struct({\n origin: vec3(),\n direction: vec3(),\n})\n\nexport type RayType = ReturnType<typeof Ray>\n\nexport const triangleIntersect = Fn(([tri, rayOrigin, rayDir]: [TriangleType, Vec3, Vec3]): Float => {\n const v1v0 = tri.b.sub(tri.a)\n const v2v0 = tri.c.sub(tri.a)\n const rov0 = rayOrigin.sub(tri.a)\n const point = cross(v1v0, v2v0)\n const q = cross(rov0, rayDir)\n const d = float(1).div(dot(rayDir, point))\n const u = d.mul(dot(q, v2v0).negate())\n const v = d.mul(dot(q, v1v0))\n const t = d.mul(dot(point, rov0).negate())\n\n const isOutside = u\n .lessThan(0)\n .or(u.greaterThan(1))\n .or(v.lessThan(0))\n .or(u.add(v).greaterThan(1))\n .or(t.lessThan(0))\n\n return float(9999999.9).select(t, isOutside)\n}).setLayout({\n name: 'triangleIntersect',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n\nexport const triangleIntersectRay = Fn(([tri, ray]: [TriangleType, RayType]): Float => {\n return triangleIntersect(tri, ray.origin, ray.direction)\n}).setLayout({\n name: 'triangleIntersectRay',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'ray', type: 'auto' },\n ],\n})\n","import { Fn, Vec3, cross, normalize } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const normal = Fn(([tri]: [TriangleType]): Vec3 => {\n return normalize(cross(tri.b.sub(tri.a), tri.c.sub(tri.a)))\n}).setLayout({\n name: 'normal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec3, length, sign, dot } from '../../../node'\nimport { normal } from './normal'\nimport { closestPointWithNormal } from './closestPoint'\nimport { TriangleType } from './triangle'\n\nexport const signedDistanceWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Float => {\n const nearest = closestPointWithNormal(tri, triNormal, pos).toVar('nearest')\n const delta = pos.sub(nearest).toVar('delta')\n const distance = length(delta).toVar('distance')\n return distance.mul(sign(dot(delta.div(distance), triNormal)))\n}).setLayout({\n name: 'signedDistanceWithNormal',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const signedDistance = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const triNormal = normal(tri).toVar('triNormal')\n return signedDistanceWithNormal(tri, triNormal, pos)\n}).setLayout({\n name: 'signedDistance',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const Triangle = struct({\n a: vec3(),\n b: vec3(),\n c: vec3(),\n})\n\nexport type TriangleType = ReturnType<typeof Triangle>\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const cnoiseVec2 = Fn(([P]: [Vec2]): Float => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y)\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'cnoiseVec2',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec2' }],\n})\n\nexport const cnoiseVec3 = Fn(([P]: [Vec3]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x)\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec3',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec3' }],\n})\n\nexport const cnoiseVec4 = Fn(([P]: [Vec4]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(1).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(gx00.step(vec4(0)).sub(0.5)))\n gy00.subAssign(sw00.mul(gy00.step(vec4(0)).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(gx01.step(vec4(0)).sub(0.5)))\n gy01.subAssign(sw01.mul(gy01.step(vec4(0)).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(gx10.step(vec4(0)).sub(0.5)))\n gy10.subAssign(sw10.mul(gy10.step(vec4(0)).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(gx11.step(vec4(0)).sub(0.5)))\n gy11.subAssign(sw11.mul(gy11.step(vec4(0)).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x)\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec4',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\n\nfunction fun(x: Float): Float\nfunction fun(x: Vec2): Vec2\nfunction fun(x: Vec3): Vec3\nfunction fun(x: Vec4): Vec4\nfunction fun(x: X): X {\n return x.sub(\n x\n .div(289)\n .floor()\n .mul(289)\n )\n}\n\nexport const mod289 = Fn(([x]: [Float]): Float => {\n return fun(x)\n}).setLayout({\n name: 'mod289',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const mod289Vec2 = Fn(([x]: [Vec2]): Vec2 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const mod289Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const mod289Vec4 = Fn(([x]: [Vec4]): Vec4 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec4',\n type: 'vec4',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\nimport { mod289, mod289Vec2, mod289Vec3, mod289Vec4 } from './mod289'\n\nfunction fun(v: Float): Float\nfunction fun(v: Vec2): Vec2\nfunction fun(v: Vec3): Vec3\nfunction fun(v: Vec4): Vec4\nfunction fun(v: X): X {\n return v.mul(34).add(1).mul(v)\n}\n\nexport const permute = Fn(([v]: [Float]): Float => {\n return mod289(fun(v))\n}).setLayout({\n name: 'permute',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const permuteVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return mod289Vec2(fun(v))\n}).setLayout({\n name: 'permuteVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const permuteVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return mod289Vec3(fun(v))\n}).setLayout({\n name: 'permuteVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const permuteVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return mod289Vec4(fun(v))\n}).setLayout({\n name: 'permuteVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const taylorInvSqrt = Fn(([r]: [X]): X => {\n return r.mul(-0.85373472095314).add(1.79284291400159)\n}).setLayout({\n name: 'taylorInvSqrt',\n type: 'auto',\n inputs: [{ name: 'r', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const quintic = Fn(([v]: [X]): X => {\n\tconst v3 = v.mul(v).mul(v).toVar('v3')\n\tconst inner = v.mul(v.mul(6).sub(15)).add(10).toVar('inner')\n\treturn v3.mul(inner)\n}).setLayout({\n\tname: 'quintic',\n\ttype: 'auto',\n\tinputs: [\n\t\t{\n\t\t\tname: 'v',\n\t\t\ttype: 'auto'\n\t\t}\n\t]\n})","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { snoise2, snoise3Vec3, snoise3Vec4 } from './snoise'\n\nexport const curlVec2 = Fn(([p]: [Vec2]): Vec2 => {\n const e = float(0.1).toVar('e')\n const dx = vec2(e, 0).toVar('dx')\n const dy = vec2(0, e).toVar('dy')\n const p_x0 = snoise2(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise2(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise2(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise2(p.add(dy)).toVar('p_y1')\n const x = p_x1.y.add(p_x0.y).toVar('x')\n const y = p_y1.x.sub(p_y0.x).toVar('y')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec2(x, y).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const curlVec3 = Fn(([p]: [Vec3]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec3(e, 0, 0).toVar('dx')\n const dy = vec3(0, e, 0).toVar('dy')\n const dz = vec3(0, 0, e).toVar('dz')\n const p_x0 = snoise3Vec3(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec3(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec3(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec3(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec3(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec3(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const curlVec4 = Fn(([p]: [Vec4]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec4(e, 0, 0, 1).toVar('dx')\n const dy = vec4(0, e, 0, 1).toVar('dy')\n const dz = vec4(0, 0, e, 1).toVar('dz')\n const p_x0 = snoise3Vec4(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec4(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec4(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec4(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec4(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec4(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec4',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { mod289Vec2, mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permute, permuteVec3, permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { grad4 } from '../math/grad4'\n\nexport const snoiseVec2 = Fn(([v]: [Vec2]): Float => {\n const C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439).toVar('C')\n const i = v.add(v.dot(C.yy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xx)).toVar('x0')\n const i1 = vec2(1, 0).select(vec2(0, 1), x0.x.greaterThan(x0.y)).toVar('i1')\n const x12 = x0.xyxy.add(C.xxzz).toVar('x12')\n x12.xy = x12.xy.sub(i1)\n i.assign(mod289Vec2(i))\n const p = permuteVec3(\n permuteVec3(i.y.add(vec3(0, i1.y, 1)))\n .add(i.x)\n .add(vec3(0, i1.x, 1))\n ).toVar('p')\n const m = float(0.5)\n .sub(vec3(x0.dot(x0), x12.xy.dot(x12.xy), x12.zw.dot(x12.zw)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n m.assign(m.mul(m))\n const x = p.mul(C.www).fract().mul(2).sub(1).toVar('x')\n const h = x.abs().sub(0.5).toVar('h')\n const ox = x.add(0.5).floor().toVar('ox')\n const a0 = x.sub(ox).toVar('a0')\n m.mulAssign(float(1.79284291400159).sub(float(0.85373472095314).mul(a0.mul(a0).add(h.mul(h)))))\n const g = vec3(a0.x.mul(x0.x).add(h.x.mul(x0.y)), a0.yz.mul(x12.xz).add(h.yz.mul(x12.yw))).toVar('g')\n return float(130).mul(m.dot(g))\n}).setLayout({\n name: 'snoiseVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const snoiseVec3 = Fn(([v]: [Vec3]): Float => {\n const C = vec2(1 / 6, 1 / 3).toVar('C')\n const D = vec4(0, 0.5, 1, 2).toVar('D')\n const i = v.add(v.dot(C.yyy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxx)).toVar('x0')\n const g = x0.yzx.step(x0.xyz).toVar('g')\n const l = float(1).sub(g).toVar('l')\n const i1 = g.xyz.min(l.zxy).toVar('i1')\n const i2 = g.xyz.max(l.zxy).toVar('i2')\n const x1 = x0.sub(i1).add(C.xxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyy).toVar('x2')\n const x3 = x0.sub(D.yyy).toVar('x3')\n i.assign(mod289Vec3(i))\n const p = permuteVec4(\n permuteVec4(\n permuteVec4(i.z.add(vec4(0, i1.z, i2.z, 1)))\n .add(i.y)\n .add(vec4(0, i1.y, i2.y, 1))\n )\n .add(i.x)\n .add(vec4(0, i1.x, i2.x, 1))\n ).toVar('p')\n const n_ = float(0.142857142857).toVar('n_')\n const ns = n_.mul(D.wyz).sub(D.xzx).toVar('ns')\n const j = p.sub(p.mul(ns.z).mul(ns.z).floor().mul(49)).toVar('j')\n const x_ = j.mul(ns.z).floor().toVar('x_')\n const y_ = j.sub(x_.mul(7)).floor().toVar('y_')\n const x = x_.mul(ns.x).add(ns.yyyy).toVar('x')\n const y = y_.mul(ns.x).add(ns.yyyy).toVar('y')\n const h = float(1).sub(x.abs()).sub(y.abs()).toVar('h')\n const b0 = vec4(x.xy, y.xy).toVar('b0')\n const b1 = vec4(x.zw, y.zw).toVar('b1')\n const s0 = b0.floor().mul(2).add(1).toVar('s0')\n const s1 = b1.floor().mul(2).add(1).toVar('s1')\n const sh = vec4(0).step(h).negate().toVar('sh')\n const a0 = b0.xzyw.add(s0.xzyw.mul(sh.xxyy)).toVar('a0')\n const a1 = b1.xzyw.add(s1.xzyw.mul(sh.zzww)).toVar('a1')\n const p0 = vec3(a0.xy, h.x).toVar('p0')\n const p1 = vec3(a0.zw, h.y).toVar('p1')\n const p2 = vec3(a1.xy, h.z).toVar('p2')\n const p3 = vec3(a1.zw, h.w).toVar('p3')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n const m = float(0.6)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n return float(42).mul(m.mul(m).dot(vec4(p0.dot(x0), p1.dot(x1), p2.dot(x2), p3.dot(x3))))\n}).setLayout({\n name: 'snoiseVec3',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const snoiseVec4 = Fn(([v]: [Vec4]): Float => {\n const C = vec4(0.138196601125011, 0.276393202250021, 0.414589803375032, -0.447213595499958).toVar('C')\n const i = v\n .add(v.dot(vec4(0.309016994374947451)))\n .floor()\n .toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxxx)).toVar('x0')\n const i0 = vec4(0).toVar('i0')\n const isX = x0.xxx.step(x0.yzw).toVar('isX')\n const isYZ = x0.yyz.step(x0.zww).toVar('isYZ')\n i0.x = isX.x.add(isX.y).add(isX.z)\n i0.yzw = float(1).sub(isX)\n i0.y = i0.y.add(isYZ.x).add(isYZ.y)\n i0.zw = i0.zw.add(float(1).sub(isYZ.xy))\n i0.z = i0.z.add(isYZ.z)\n i0.w = i0.w.add(float(1).sub(isYZ.z))\n const i3 = i0.clamp(0, 1).toVar('i3')\n const i2 = i0.sub(1).clamp(0, 1).toVar('i2')\n const i1 = i0.sub(2).clamp(0, 1).toVar('i1')\n const x1 = x0.sub(i1).add(C.xxxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyyy).toVar('x2')\n const x3 = x0.sub(i3).add(C.zzzz).toVar('x3')\n const x4 = x0.add(C.wwww).toVar('x4')\n i.assign(mod289Vec4(i))\n const j0 = permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x)).toVar('j0')\n const j1 = permuteVec4(\n permuteVec4(\n permuteVec4(\n permuteVec4(i.w.add(vec4(i1.w, i2.w, i3.w, 1)))\n .add(i.z)\n .add(vec4(i1.z, i2.z, i3.z, 1))\n )\n .add(i.y)\n .add(vec4(i1.y, i2.y, i3.y, 1))\n )\n .add(i.x)\n .add(vec4(i1.x, i2.x, i3.x, 1))\n ).toVar('j1')\n const ip = vec4(1 / 294, 1 / 49, 1 / 7, 0).toVar('ip')\n const p0 = grad4(j0, ip).toVar('p0')\n const p1 = grad4(j1.x, ip).toVar('p1')\n const p2 = grad4(j1.y, ip).toVar('p2')\n const p3 = grad4(j1.z, ip).toVar('p3')\n const p4 = grad4(j1.w, ip).toVar('p4')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n p4.mulAssign(taylorInvSqrt(p4.dot(p4)))\n const m0 = float(0.6)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .max(0)\n .toVar('m0')\n const m1 = float(0.6)\n .sub(vec2(x3.dot(x3), x4.dot(x4)))\n .max(0)\n .toVar('m1')\n m0.assign(m0.mul(m0))\n m1.assign(m1.mul(m1))\n return float(49).mul(\n m0\n .mul(m0)\n .dot(vec3(p0.dot(x0), p1.dot(x1), p2.dot(x2)))\n .add(m1.mul(m1).dot(vec2(p3.dot(x3), p4.dot(x4))))\n )\n}).setLayout({\n name: 'snoiseVec4',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const snoise2 = Fn(([x]: [Vec2]): Vec2 => {\n const s = snoiseVec2(x).toVar('s')\n const s1 = snoiseVec2(vec2(x.y.sub(19.1), x.x.add(47.2))).toVar('s1')\n return vec2(s, s1)\n}).setLayout({\n name: 'snoise2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const snoise3Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n const s = snoiseVec3(x).toVar('s')\n const s1 = snoiseVec3(vec3(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2))).toVar('s1')\n const s2 = snoiseVec3(vec3(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4))).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const snoise3Vec4 = Fn(([x]: [Vec4]): Vec3 => {\n const s = snoiseVec4(x).toVar('s')\n const s1 = snoiseVec4(vec4(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2), x.w)).toVar('s1')\n const s2 = snoiseVec4(vec4(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4), x.w)).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec4',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec4, vec4, vec3, float } from '../../node'\n\nexport const grad4 = Fn(([j, ip]: [Float, Vec4]): Vec4 => {\n const ones = vec4(1, 1, 1, -1).toVar('ones')\n const p = vec4(0).toVar('p')\n const s = vec4(0).toVar('s')\n p.xyz = vec3(j, j, j).mul(ip.xyz).fract().mul(7).floor().mul(ip.z).sub(1)\n p.w = float(1.5).sub(p.xyz.abs().dot(ones.xyz))\n s.assign(vec4(p.x.lessThan(0.0), p.y.lessThan(0.0), p.z.lessThan(0.0), p.w.lessThan(0.0)))\n p.xyz = p.xyz.add(s.xyz.mul(2).sub(1).mul(s.www))\n return p\n}).setLayout({\n name: 'grad4',\n type: 'vec4',\n inputs: [\n { name: 'j', type: 'float' },\n { name: 'ip', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, float, Loop, int } from '../../node'\nimport { snoiseVec2, snoiseVec3 } from './snoise'\nimport { gnoiseVec3Tiled } from './gnoise'\n\nconst FBM_OCTAVES = int(4)\nconst FBM_SCALE_SCALAR = 2\nconst FBM_AMPLITUDE_INITIAL = 0.5\nconst FBM_AMPLITUDE_SCALAR = 0.5\n\nexport const fbmVec2 = Fn(([st]: [Vec2]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const coord = st.toVar('coord')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec2(coord)))\n coord.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const fbmVec3 = Fn(([pos]: [Vec3]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const posVar = pos.toVar('posVar')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec3(posVar)))\n posVar.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const fbmVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const persistence = float(0.5).toVar('persistence')\n const lacunarity = float(2).toVar('lacunarity')\n const amplitude = float(0.5).toVar('amplitude')\n const total = float(0).toVar('total')\n const normalization = float(0).toVar('normalization')\n const pVar = p.toVar('pVar')\n Loop(FBM_OCTAVES, () => {\n const noiseValue = gnoiseVec3Tiled(pVar, tileLength.mul(lacunarity).div(2))\n .div(2)\n .add(0.5)\n .toVar('noiseValue')\n total.addAssign(noiseValue.mul(amplitude))\n normalization.addAssign(amplitude)\n amplitude.mulAssign(persistence)\n pVar.assign(pVar.mul(lacunarity))\n })\n return total.div(normalization)\n}).setLayout({\n name: 'fbmVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const fbm = fbmVec3\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float } from '../../node'\nimport { random, randomVec2, randomVec3 } from './random'\nimport { srandom3Vec3Tiled } from './srandom'\nimport { cubicVec2 } from '../math/cubic'\nimport { quintic } from '../math/quintic'\n\nexport const gnoise = Fn(([x]: [Float]): Float => {\n const i = x.floor().toVar('i')\n const f = x.fract().toVar('f')\n return random(i).mix(random(i.add(1)), float(0).smoothstep(float(1), f))\n}).setLayout({\n name: 'gnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const gnoiseVec2 = Fn(([st]: [Vec2]): Float => {\n const i = st.floor().toVar('i')\n const f = st.fract().toVar('f')\n const a = randomVec2(i).toVar('a')\n const b = randomVec2(i.add(vec2(1, 0))).toVar('b')\n const c = randomVec2(i.add(vec2(0, 1))).toVar('c')\n const d = randomVec2(i.add(vec2(1, 1))).toVar('d')\n const u = cubicVec2(f).toVar('u')\n return a.mix(b, u.x).add(c.sub(a).mul(u.y).mul(float(1).sub(u.x)).add(d.sub(b).mul(u.x).mul(u.y)))\n}).setLayout({\n name: 'gnoiseVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const gnoiseVec3 = Fn(([p]: [Vec3]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return float(-1).add(\n float(2).mul(\n randomVec3(i.add(vec3(0, 0, 0)))\n .mix(randomVec3(i.add(vec3(1, 0, 0))), u.x)\n .mix(randomVec3(i.add(vec3(0, 1, 0))).mix(randomVec3(i.add(vec3(1, 1, 0))), u.x), u.y)\n .mix(\n randomVec3(i.add(vec3(0, 0, 1)))\n .mix(randomVec3(i.add(vec3(1, 0, 1))), u.x)\n .mix(\n randomVec3(i.add(vec3(0, 1, 1))).mix(\n randomVec3(i.add(vec3(1, 1, 1))),\n u.x\n ),\n u.y\n ),\n u.z\n )\n )\n )\n}).setLayout({\n name: 'gnoiseVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const gnoiseVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return srandom3Vec3Tiled(i.add(vec3(0, 0, 0)), tileLength)\n .dot(f.sub(vec3(0, 0, 0)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 0)), tileLength).dot(f.sub(vec3(1, 0, 0))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 0)), tileLength)\n .dot(f.sub(vec3(0, 1, 0)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 0)), tileLength).dot(f.sub(vec3(1, 1, 0))),\n u.x\n ),\n u.y\n )\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 0, 1)), tileLength)\n .dot(f.sub(vec3(0, 0, 1)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 1)), tileLength).dot(f.sub(vec3(1, 0, 1))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 1)), tileLength)\n .dot(f.sub(vec3(0, 1, 1)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 1)), tileLength).dot(\n f.sub(vec3(1, 1, 1))\n ),\n u.x\n ),\n u.y\n ),\n u.z\n )\n}).setLayout({\n name: 'gnoiseVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const gnoise3 = Fn(([x]: [Vec3]): Vec3 => {\n return vec3(\n gnoiseVec3(x.add(vec3(123.456, 0.567, 0.37))),\n gnoiseVec3(x.add(vec3(0.11, 47.43, 19.17))),\n gnoiseVec3(x)\n )\n}).setLayout({\n name: 'gnoise3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, fract, sin } from '../../node'\n\nconst RANDOM_SCALE = vec4(443.897, 441.423, 0.0973, 0.1099)\n\nexport const random = Fn(([x]: [Float]): Float => {\n return x.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'random',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const randomVec2 = Fn(([st]: [Vec2]): Float => {\n return st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const randomVec3 = Fn(([pos]: [Vec3]): Float => {\n return pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()\n}).setLayout({\n name: 'randomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const randomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return dot_product.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const random2Float = Fn(([p]: [Float]): Vec2 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Float',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const p3 = p.xyx.mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random2Vec3 = Fn(([p3]: [Vec3]): Vec2 => {\n p3.assign(p3.mul(RANDOM_SCALE.xyz).fract())\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p3', type: 'vec3' }],\n})\n\nexport const random3Float = Fn(([p]: [Float]): Vec3 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Float',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random3Vec2 = Fn(([p]: [Vec2]): Vec3 => {\n const p3 = vec3(p.xyx).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yxz.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Vec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(p.mul(RANDOM_SCALE.xyz).fract())\n p.addAssign(p.dot(p.yxz.add(19.19)))\n return p.xxy.add(p.yzz).mul(p.zyx).fract()\n}).setLayout({\n name: 'random3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Float = Fn(([p]: [Float]): Vec4 => {\n const p4 = float(p).mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Float',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random4Vec2 = Fn(([p]: [Vec2]): Vec4 => {\n const p4 = p.xyxy.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec2',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random4Vec3 = Fn(([p]: [Vec3]): Vec4 => {\n const p4 = p.xyzx.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec3',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Vec4 = Fn(([p4]: [Vec4]): Vec4 => {\n p4.assign(p4.mul(RANDOM_SCALE).fract())\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec4',\n type: 'vec4',\n inputs: [{ name: 'p4', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, sin } from '../../node'\n\nexport const srandom = Fn(([x]: [Float]): Float => {\n return float(-1).add(float(2).mul(x.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandom',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const srandomVec2 = Fn(([st]: [Vec2]): Float => {\n return float(-1).add(float(2).mul(st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandomVec3 = Fn(([pos]: [Vec3]): Float => {\n return float(-1).add(float(2).mul(pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const srandomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return float(-1).add(float(2).mul(dot_product.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const srandom2Vec2 = Fn(([st]: [Vec2]): Vec2 => {\n const k = vec2(0.3183099, 0.3678794).toVar('k')\n st.assign(st.mul(k).add(k.yx))\n return vec2(-1).add(\n vec2(2).mul(\n float(16)\n .mul(k)\n .mul(st.x.mul(st.y).mul(st.x.add(st.y)).fract())\n .fract()\n )\n )\n}).setLayout({\n name: 'srandom2Vec2',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandom3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(\n vec3(\n p.dot(vec3(127.1, 311.7, 74.7)),\n p.dot(vec3(269.5, 183.3, 246.1)),\n p.dot(vec3(113.5, 271.9, 124.6))\n )\n )\n return float(-1).add(float(2).mul(p.sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandom3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const srandom2Vec2Tiled = Fn(([p, tileLength]: [Vec2, Float]): Vec2 => {\n p.assign(p.mod(vec2(tileLength)))\n return srandom2Vec2(p)\n}).setLayout({\n name: 'srandom2Vec2Tiled',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const srandom3Vec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Vec3 => {\n p.assign(p.mod(vec3(tileLength)))\n return srandom3Vec3(p)\n}).setLayout({\n name: 'srandom3Vec3Tiled',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\n\nexport const cubic = Fn(([v]: [Float]): Float => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicFloat',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const cubicVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const cubicVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const cubicVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const cubicFloatSlopes = Fn(([v, slope0, slope1]: [Float, Float, Float]): Float => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicFloatSlopes',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec2Slopes = Fn(([v, slope0, slope1]: [Vec2, Float, Float]): Vec2 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec2Slopes',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec3Slopes = Fn(([v, slope0, slope1]: [Vec3, Float, Float]): Vec3 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec3Slopes',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec4Slopes = Fn(([v, slope0, slope1]: [Vec4, Float, Float]): Vec4 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec4Slopes',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec3, dot, sqrt, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const gerstnerWave = Fn(([_uv, _dir, _steepness, _wavelength, _time]: [Vec2, Vec2, Float, Float, Float]) => {\n const k = PI.mul(2).div(_wavelength).toVar('k')\n const c = float(9.8).div(k).sqrt().toVar('c')\n const d = _dir.normalize().toVar('d')\n const f = k.mul(_uv.dot(d).sub(c.mul(_time))).toVar('f')\n const a = _steepness.div(k).toVar('a')\n return vec3(d.x.mul(a.mul(f.cos())), a.mul(f.sin()), d.y.mul(a.mul(f.cos())))\n}).setLayout({\n name: 'gerstnerWave',\n type: 'vec3',\n inputs: [\n { name: '_uv', type: 'vec2' },\n { name: '_dir', type: 'vec2' },\n { name: '_steepness', type: 'float' },\n { name: '_wavelength', type: 'float' },\n { name: '_time', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec2, vec3, vec4 } from '../../node'\nimport { srandom2Vec2, srandom3Vec3 } from './srandom'\n\nexport const noised = Fn(([p]: [Vec2]) => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = f\n .mul(f)\n .mul(f)\n .mul(f.mul(f.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = f\n .mul(f)\n .mul(f.mul(f.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom2Vec2(i.add(vec2(0, 0))).toVar('ga')\n const gb = srandom2Vec2(i.add(vec2(1, 0))).toVar('gb')\n const gc = srandom2Vec2(i.add(vec2(0, 1))).toVar('gc')\n const gd = srandom2Vec2(i.add(vec2(1, 1))).toVar('gd')\n\n const va = f.sub(vec2(0, 0)).dot(ga).toVar('va')\n const vb = f.sub(vec2(1, 0)).dot(gb).toVar('vb')\n const vc = f.sub(vec2(0, 1)).dot(gc).toVar('vc')\n const vd = f.sub(vec2(1, 1)).dot(gd).toVar('vd')\n\n return vec3(\n va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd))),\n ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(du.mul(u.yx.mul(va.sub(vb).sub(vc).add(vd)).add(vec2(vb, vc)).sub(va)))\n )\n}).setLayout({\n name: 'noised',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const noisedVec3 = Fn(([pos]: [Vec3]) => {\n const p = pos.floor().toVar('p')\n const w = pos.fract().toVar('w')\n const u = w\n .mul(w)\n .mul(w)\n .mul(w.mul(w.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = w\n .mul(w)\n .mul(w.mul(w.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom3Vec3(p.add(vec3(0, 0, 0))).toVar('ga')\n const gb = srandom3Vec3(p.add(vec3(1, 0, 0))).toVar('gb')\n const gc = srandom3Vec3(p.add(vec3(0, 1, 0))).toVar('gc')\n const gd = srandom3Vec3(p.add(vec3(1, 1, 0))).toVar('gd')\n const ge = srandom3Vec3(p.add(vec3(0, 0, 1))).toVar('ge')\n const gf = srandom3Vec3(p.add(vec3(1, 0, 1))).toVar('gf')\n const gg = srandom3Vec3(p.add(vec3(0, 1, 1))).toVar('gg')\n const gh = srandom3Vec3(p.add(vec3(1, 1, 1))).toVar('gh')\n\n const va = w.sub(vec3(0, 0, 0)).dot(ga).toVar('va')\n const vb = w.sub(vec3(1, 0, 0)).dot(gb).toVar('vb')\n const vc = w.sub(vec3(0, 1, 0)).dot(gc).toVar('vc')\n const vd = w.sub(vec3(1, 1, 0)).dot(gd).toVar('vd')\n const ve = w.sub(vec3(0, 0, 1)).dot(ge).toVar('ve')\n const vf = w.sub(vec3(1, 0, 1)).dot(gf).toVar('vf')\n const vg = w.sub(vec3(0, 1, 1)).dot(gg).toVar('vg')\n const vh = w.sub(vec3(1, 1, 1)).dot(gh).toVar('vh')\n\n const noiseValue = va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.z.mul(ve.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd)))\n .add(u.y.mul(u.z).mul(va.sub(vc).sub(ve).add(vg)))\n .add(u.z.mul(u.x).mul(va.sub(vb).sub(ve).add(vf)))\n .add(va.negate().add(vb).add(vc).sub(vd).add(ve).sub(vf).sub(vg).add(vh).mul(u.x).mul(u.y).mul(u.z))\n\n const gradientValue = ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.z.mul(ge.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(u.y.mul(u.z).mul(ga.sub(gc).sub(ge).add(gg)))\n .add(u.z.mul(u.x).mul(ga.sub(gb).sub(ge).add(gf)))\n .add(ga.negate().add(gb).add(gc).sub(gd).add(ge).sub(gf).sub(gg).add(gh).mul(u.x).mul(u.y).mul(u.z))\n .add(\n du.mul(\n vec3(vb, vc, ve)\n .sub(va)\n .add(\n u.yzx.mul(\n vec3(\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg),\n va.sub(vb).sub(ve).add(vf)\n )\n )\n )\n .add(\n u.zxy.mul(\n vec3(\n va.sub(vb).sub(ve).add(vf),\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg)\n )\n )\n )\n .add(\n u.yzx\n .mul(u.zxy)\n .mul(\n va\n .negate()\n .add(vb)\n .add(vc)\n .sub(vd)\n .add(ve)\n .sub(vf)\n .sub(vg)\n .add(vh)\n )\n )\n )\n )\n\n return vec4(noiseValue, gradientValue)\n}).setLayout({\n name: 'noisedVec3',\n type: 'vec4',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec4, mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const pnoise = Fn(([P, rep]: [Vec2, Vec2]) => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(Pi.mod(rep.xyxy))\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y).toVar('n_xy')\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'pnoise',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec2' },\n { name: 'rep', type: 'vec2' },\n ],\n})\n\nexport const pnoiseVec3 = Fn(([P, rep]: [Vec3, Vec3]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x).toVar('n_xyz')\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec3',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec3' },\n { name: 'rep', type: 'vec3' },\n ],\n})\n\nexport const pnoiseVec4 = Fn(([P, rep]: [Vec4, Vec4]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(1).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(vec4(0).step(gx00).sub(0.5)))\n gy00.subAssign(sw00.mul(vec4(0).step(gy00).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(vec4(0).step(gx01).sub(0.5)))\n gy01.subAssign(sw01.mul(vec4(0).step(gy01).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(vec4(0).step(gx10).sub(0.5)))\n gy10.subAssign(sw10.mul(vec4(0).step(gy10).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(vec4(0).step(gx11).sub(0.5)))\n gy11.subAssign(sw11.mul(vec4(0).step(gy11).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x).toVar('n_xyzw')\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec4',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec4' },\n { name: 'rep', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, vec4, mat3, step, mix, If, float, any } from '../../node'\nimport { mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\n\n// Basic psrdnoise 2D implementation\nexport const psrdnoise2D = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Vec2 => {\n const uv = vec2(x.x.add(x.y.div(2)), x.y).toVar('uv')\n const i0 = uv.floor().toVar('i0')\n const f0 = uv.fract().toVar('f0')\n const cmp = f0.x.step(f0.y).toVar('cmp')\n const o1 = vec2(cmp, cmp.oneMinus()).toVar('o1')\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(vec2(1, 1)).toVar('i2')\n\n const v0 = vec2(i0.x.sub(i0.y.div(2)), i0.y).toVar('v0')\n const v1 = vec2(v0.x.add(o1.x).sub(o1.y.div(2)), v0.y.add(o1.y)).toVar('v1')\n const v2 = vec2(v0.x.add(0.5), v0.y.add(1)).toVar('v2')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n\n let iu = vec3(i0.x, i1.x, i2.x).toVar('iu')\n let iv = vec3(i0.y, i1.y, i2.y).toVar('iv')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)), () => {\n const xw = vec3(v0.x, v1.x, v2.x).toVar('xw')\n const yw = vec3(v0.y, v1.y, v2.y).toVar('yw')\n\n If(period.x.greaterThan(0), () => {\n xw.assign(xw.mod(period.x))\n })\n\n If(period.y.greaterThan(0), () => {\n yw.assign(yw.mod(period.y))\n })\n\n iu.assign(xw.add(yw.div(2)).add(0.5).floor())\n iv.assign(yw.add(0.5).floor())\n })\n\n let hash = mod289Vec3(iu).toVar('hash')\n hash.assign(mod289Vec3(hash.mul(51).add(2).mul(hash).add(iv)))\n hash.assign(mod289Vec3(hash.mul(34).add(10).mul(hash)))\n\n const psi = hash.mul(0.07482).add(alpha).toVar('psi')\n const gx = psi.cos().toVar('gx')\n const gy = psi.sin().toVar('gy')\n\n const g0 = vec2(gx.x, gy.x).toVar('g0')\n const g1 = vec2(gx.y, gy.y).toVar('g1')\n const g2 = vec2(gx.z, gy.z).toVar('g2')\n\n const w = vec3(0.8)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w4 = w2.mul(w2).toVar('w4')\n const gdotx = vec3(g0.dot(x0), g1.dot(x1), g2.dot(x2)).toVar('gdotx')\n const n = w4.dot(gdotx).toVar('n')\n\n const w3 = w2.mul(w).toVar('w3')\n const dw = w3.mul(-8).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w4.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w4.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w4.z).add(x2.mul(dw.z)).toVar('dn2')\n const gradient = dn0.add(dn1).add(dn2).mul(10.9).toVar('gradient')\n\n return vec2(n.mul(10.9), gradient.length())\n}).setLayout({\n name: 'psrdnoise2D',\n type: 'vec2',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Basic psrdnoise 3D implementation\nexport const psrdnoise3D = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Vec3 => {\n const M = mat3(0, 1, 1, 1, 0, 1, 1, 1, 0).toVar('M')\n const Mi = mat3(-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5).toVar('Mi')\n\n const uvw = M.mul(x).toVar('uvw')\n const i0 = uvw.floor().toVar('i0')\n const f0 = uvw.fract().toVar('f0')\n\n const g_ = f0.yzz.step(f0.xyx).toVar('g_')\n const l_ = g_.oneMinus().toVar('l_')\n const g = vec3(l_.z, g_.xy).toVar('g')\n const l = vec3(l_.xy, g_.z).toVar('l')\n\n const o1 = g.min(l).toVar('o1')\n const o2 = g.max(l).toVar('o2')\n\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(o2).toVar('i2')\n const i3 = i0.add(vec3(1)).toVar('i3')\n\n let v0 = Mi.mul(i0).toVar('v0')\n let v1 = Mi.mul(i1).toVar('v1')\n let v2 = Mi.mul(i2).toVar('v2')\n let v3 = Mi.mul(i3).toVar('v3')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n const x3 = x.sub(v3).toVar('x3')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)).or(period.z.greaterThan(0)), () => {\n const vx = vec4(v0.x, v1.x, v2.x, v3.x).toVar('vx')\n const vy = vec4(v0.y, v1.y, v2.y, v3.y).toVar('vy')\n const vz = vec4(v0.z, v1.z, v2.z, v3.z).toVar('vz')\n\n If(period.x.greaterThan(0), () => vx.assign(vx.mod(period.x)))\n If(period.y.greaterThan(0), () => vy.assign(vy.mod(period.y)))\n If(period.z.greaterThan(0), () => vz.assign(vz.mod(period.z)))\n\n i0.assign(M.mul(vec3(vx.x, vy.x, vz.x)))\n i1.assign(M.mul(vec3(vx.y, vy.y, vz.y)))\n i2.assign(M.mul(vec3(vx.z, vy.z, vz.z)))\n i3.assign(M.mul(vec3(vx.w, vy.w, vz.w)))\n\n i0.assign(i0.add(0.5).floor())\n i1.assign(i1.add(0.5).floor())\n i2.assign(i2.add(0.5).floor())\n i3.assign(i3.add(0.5).floor())\n })\n\n const hash = permuteVec4(\n permuteVec4(permuteVec4(vec4(i0.z, i1.z, i2.z, i3.z)).add(vec4(i0.y, i1.y, i2.y, i3.y))).add(\n vec4(i0.x, i1.x, i2.x, i3.x)\n )\n ).toVar('hash')\n\n const theta = hash.mul(3.883222077).toVar('theta')\n const sz = hash.mul(-0.006920415).add(0.996539792).toVar('sz')\n const psi = hash.mul(0.108705628).toVar('psi')\n\n const Ct = theta.cos().toVar('Ct')\n const St = theta.sin().toVar('St')\n const sz_prime = sz.mul(sz).oneMinus().sqrt().toVar('sz_prime')\n\n const gx = Ct.mul(sz_prime).toVar('gx')\n const gy = St.mul(sz_prime).toVar('gy')\n const gz = sz.toVar('gz')\n\n If(alpha.notEqual(0), () => {\n const Sp = psi.sin().toVar('Sp')\n const Cp = psi.cos().toVar('Cp')\n const px = Ct.mul(sz_prime).toVar('px')\n const py = St.mul(sz_prime).toVar('py')\n const pz = sz.toVar('pz')\n\n const Ctp = St.mul(Sp).sub(Ct.mul(Cp)).toVar('Ctp')\n const qx = Ctp.mul(St).mix(Sp, sz).toVar('qx')\n const qy = Ctp.negate().mul(Ct).mix(Cp, sz).toVar('qy')\n const qz = py.mul(Cp).add(px.mul(Sp)).negate().toVar('qz')\n\n const Sa = vec4(alpha.sin()).toVar('Sa')\n const Ca = vec4(alpha.cos()).toVar('Ca')\n\n gx.assign(Ca.mul(px).add(Sa.mul(qx)))\n gy.assign(Ca.mul(py).add(Sa.mul(qy)))\n gz.assign(Ca.mul(pz).add(Sa.mul(qz)))\n })\n\n const g0 = vec3(gx.x, gy.x, gz.x).toVar('g0')\n const g1 = vec3(gx.y, gy.y, gz.y).toVar('g1')\n const g2 = vec3(gx.z, gy.z, gz.z).toVar('g2')\n const g3 = vec3(gx.w, gy.w, gz.w).toVar('g3')\n\n let w = vec4(0.5)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w3 = w2.mul(w).toVar('w3')\n const gdotx = vec4(g0.dot(x0), g1.dot(x1), g2.dot(x2), g3.dot(x3)).toVar('gdotx')\n const n = w3.dot(gdotx).toVar('n')\n\n const dw = w2.mul(-6).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w3.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w3.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w3.z).add(x2.mul(dw.z)).toVar('dn2')\n const dn3 = g3.mul(w3.w).add(x3.mul(dw.w)).toVar('dn3')\n const gradient = dn0.add(dn1).add(dn2).add(dn3).mul(39.5).toVar('gradient')\n\n return vec3(n.mul(39.5), gradient.xy)\n}).setLayout({\n name: 'psrdnoise3D',\n type: 'vec3',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Simplified overloads\nexport const psrdnoise = Fn(([x]: [Vec2]): Float => {\n return psrdnoise2D(x, vec2(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\n// Two-parameter overload for compatibility\nexport const psrdnoise2 = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise2',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoisePeriod = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoisePeriod',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoiseAlpha = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Float => {\n return psrdnoise2D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoiseAlpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\nexport const psrdnoise3 = Fn(([x]: [Vec3]): Float => {\n return psrdnoise3D(x, vec3(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise3',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const psrdnoise3Period = Fn(([x, period]: [Vec3, Vec3]): Float => {\n return psrdnoise3D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise3Period',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n ],\n})\n\nexport const psrdnoise3Alpha = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Float => {\n return psrdnoise3D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoise3Alpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float, If } from '../../node'\nimport { random2Vec2 } from './random'\nimport { TAU } from '../math/const'\n\nexport const voronoi = Fn(([uv, time]: [Vec2, Float]): Vec3 => {\n const i_uv = uv.floor().toVar('i_uv')\n const f_uv = uv.fract().toVar('f_uv')\n const rta = vec3(0, 0, 10).toVar('rta')\n\n // Unroll nested loop: for j=-1 to 1, for i=-1 to 1\n // j=-1, i=-1\n const neighbor_m1m1 = vec2(-1, -1).toVar('neighbor_m1m1')\n const point_m1m1 = random2Vec2(i_uv.add(neighbor_m1m1)).toVar('point_m1m1')\n point_m1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_m1m1.mul(TAU)).sin())))\n const diff_m1m1 = neighbor_m1m1.add(point_m1m1).sub(f_uv).toVar('diff_m1m1')\n const dist_m1m1 = diff_m1m1.length().toVar('dist_m1m1')\n If(dist_m1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_m1m1)\n rta.z.assign(dist_m1m1)\n })\n\n // j=-1, i=0\n const neighbor_0m1 = vec2(0, -1).toVar('neighbor_0m1')\n const point_0m1 = random2Vec2(i_uv.add(neighbor_0m1)).toVar('point_0m1')\n point_0m1.assign(float(0.5).add(float(0.5).mul(time.add(point_0m1.mul(TAU)).sin())))\n const diff_0m1 = neighbor_0m1.add(point_0m1).sub(f_uv).toVar('diff_0m1')\n const dist_0m1 = diff_0m1.length().toVar('dist_0m1')\n If(dist_0m1.lessThan(rta.z), () => {\n rta.xy.assign(point_0m1)\n rta.z.assign(dist_0m1)\n })\n\n // j=-1, i=1\n const neighbor_1m1 = vec2(1, -1).toVar('neighbor_1m1')\n const point_1m1 = random2Vec2(i_uv.add(neighbor_1m1)).toVar('point_1m1')\n point_1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_1m1.mul(TAU)).sin())))\n const diff_1m1 = neighbor_1m1.add(point_1m1).sub(f_uv).toVar('diff_1m1')\n const dist_1m1 = diff_1m1.length().toVar('dist_1m1')\n If(dist_1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_1m1)\n rta.z.assign(dist_1m1)\n })\n\n // j=0, i=-1\n const neighbor_m10 = vec2(-1, 0).toVar('neighbor_m10')\n const point_m10 = random2Vec2(i_uv.add(neighbor_m10)).toVar('point_m10')\n point_m10.assign(float(0.5).add(float(0.5).mul(time.add(point_m10.mul(TAU)).sin())))\n const diff_m10 = neighbor_m10.add(point_m10).sub(f_uv).toVar('diff_m10')\n const dist_m10 = diff_m10.length().toVar('dist_m10')\n If(dist_m10.lessThan(rta.z), () => {\n rta.xy.assign(point_m10)\n rta.z.assign(dist_m10)\n })\n\n // j=0, i=0\n const neighbor_00 = vec2(0, 0).toVar('neighbor_00')\n const point_00 = random2Vec2(i_uv.add(neighbor_00)).toVar('point_00')\n point_00.assign(float(0.5).add(float(0.5).mul(time.add(point_00.mul(TAU)).sin())))\n const diff_00 = neighbor_00.add(point_00).sub(f_uv).toVar('diff_00')\n const dist_00 = diff_00.length().toVar('dist_00')\n If(dist_00.lessThan(rta.z), () => {\n rta.xy.assign(point_00)\n rta.z.assign(dist_00)\n })\n\n // j=0, i=1\n const neighbor_10 = vec2(1, 0).toVar('neighbor_10')\n const point_10 = random2Vec2(i_uv.add(neighbor_10)).toVar('point_10')\n point_10.assign(float(0.5).add(float(0.5).mul(time.add(point_10.mul(TAU)).sin())))\n const diff_10 = neighbor_10.add(point_10).sub(f_uv).toVar('diff_10')\n const dist_10 = diff_10.length().toVar('dist_10')\n If(dist_10.lessThan(rta.z), () => {\n rta.xy.assign(point_10)\n rta.z.assign(dist_10)\n })\n\n // j=1, i=-1\n const neighbor_m11 = vec2(-1, 1).toVar('neighbor_m11')\n const point_m11 = random2Vec2(i_uv.add(neighbor_m11)).toVar('point_m11')\n point_m11.assign(float(0.5).add(float(0.5).mul(time.add(point_m11.mul(TAU)).sin())))\n const diff_m11 = neighbor_m11.add(point_m11).sub(f_uv).toVar('diff_m11')\n const dist_m11 = diff_m11.length().toVar('dist_m11')\n If(dist_m11.lessThan(rta.z), () => {\n rta.xy.assign(point_m11)\n rta.z.assign(dist_m11)\n })\n\n // j=1, i=0\n const neighbor_01 = vec2(0, 1).toVar('neighbor_01')\n const point_01 = random2Vec2(i_uv.add(neighbor_01)).toVar('point_01')\n point_01.assign(float(0.5).add(float(0.5).mul(time.add(point_01.mul(TAU)).sin())))\n const diff_01 = neighbor_01.add(point_01).sub(f_uv).toVar('diff_01')\n const dist_01 = diff_01.length().toVar('dist_01')\n If(dist_01.lessThan(rta.z), () => {\n rta.xy.assign(point_01)\n rta.z.assign(dist_01)\n })\n\n // j=1, i=1\n const neighbor_11 = vec2(1, 1).toVar('neighbor_11')\n const point_11 = random2Vec2(i_uv.add(neighbor_11)).toVar('point_11')\n point_11.assign(float(0.5).add(float(0.5).mul(time.add(point_11.mul(TAU)).sin())))\n const diff_11 = neighbor_11.add(point_11).sub(f_uv).toVar('diff_11')\n const dist_11 = diff_11.length().toVar('dist_11')\n If(dist_11.lessThan(rta.z), () => {\n rta.xy.assign(point_11)\n rta.z.assign(dist_11)\n })\n\n return rta\n}).setLayout({\n name: 'voronoi',\n type: 'vec3',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'time', type: 'float' },\n ],\n})\n\nexport const voronoiVec2 = Fn(([p]: [Vec2]): Vec3 => {\n return voronoi(p, float(0))\n}).setLayout({\n name: 'voronoiVec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const voronoiVec3 = Fn(([p]: [Vec3]): Vec3 => {\n return voronoi(p.xy, p.z)\n}).setLayout({\n name: 'voronoiVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, int, smoothstep, float, Loop } from '../../node'\nimport { random3Vec2, random3Vec3 } from './random'\n\nexport const voronoise = Fn(([p, u, v]: [Vec2, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec2(xOffset, yOffset).toVar('g')\n const o = random3Vec2(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o.xy).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoise',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n\nexport const voronoiseVec3 = Fn(([p, u, v]: [Vec3, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: zLoop }) => {\n const zOffset = zLoop.sub(int(2)).toFloat().toVar('zOffset')\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec3(xOffset, yOffset, zOffset).toVar('g')\n const o = random3Vec3(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o).add(0.5).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoiseVec3',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, mat2 } from '../../node'\nimport { randomVec2 } from './random'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const wavelet = Fn(([p, phase, k]: [Vec2, Float, Float]): Float => {\n const d = float(0).toVar('d')\n const s = float(1).toVar('s')\n const m = float(0).toVar('m')\n\n Loop(int(4), ({ i }) => {\n const q = p.mul(s).toVar('q')\n const a = randomVec2(q.floor()).mul(1000).toVar('a')\n\n q.assign(q.fract().sub(0.5).mul(rotate2d(a)))\n\n d.addAssign(\n q.x\n .mul(10)\n .add(phase)\n .sin()\n .mul(float(0.25).smoothstep(0, q.dot(q)))\n .div(s)\n )\n\n p.assign(p.mul(mat2(0.54, -0.84, 0.84, 0.54)).add(i.toFloat()))\n m.addAssign(float(1).div(s))\n s.mulAssign(k)\n })\n\n return d.div(m)\n}).setLayout({\n name: 'wavelet',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3K = Fn(([p, k]: [Vec3, Float]): Float => {\n return wavelet(p.xy, p.z, k)\n}).setLayout({\n name: 'waveletVec3K',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3 = Fn(([p]: [Vec3]): Float => {\n return waveletVec3K(p, float(1.24))\n}).setLayout({\n name: 'waveletVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const waveletVec2Phase = Fn(([p, phase]: [Vec2, Float]): Float => {\n return wavelet(p, phase, float(1.24))\n}).setLayout({\n name: 'waveletVec2Phase',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const waveletVec2 = Fn(([p]: [Vec2]): Float => {\n return wavelet(p, float(0), float(1.24))\n}).setLayout({\n name: 'waveletVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n","import { Fn, Float, Mat2, mat2 } from '../../node'\n\nexport const rotate2d = Fn(([r]: [Float]): Mat2 => {\n const c = r.cos()\n const s = r.sin()\n return mat2(c, s, s.negate(), c)\n}).setLayout({\n name: 'rotate2d',\n type: 'mat2',\n inputs: [\n {\n name: 'r',\n type: 'float',\n },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, vec2, vec3, If } from '../../node'\nimport { random2Vec2, random3Vec3 } from './random'\nimport { distEuclidean } from '../math/dist'\n\nexport const worley2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec2(0).toVar('off1')\n const pos1 = vec2(0).toVar('pos1')\n const off2 = vec2(0).toVar('off2')\n const pos2 = vec2(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n const g = vec2(i.toFloat().sub(1), j.toFloat().sub(1)).toVar('g')\n const o = random2Vec2(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worleyVec2 = Fn(([p]: [Vec2]): Float => {\n return float(1).sub(worley2Vec2(p).x)\n}).setLayout({\n name: 'worleyVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worley2Vec3 = Fn(([p]: [Vec3]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec3(0).toVar('off1')\n const pos1 = vec3(0).toVar('pos1')\n const off2 = vec3(0).toVar('off2')\n const pos2 = vec3(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n Loop(int(3), ({ i: k }) => {\n const g = vec3(i.toFloat().sub(1), j.toFloat().sub(1), k.toFloat().sub(1)).toVar('g')\n const o = random3Vec3(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const worleyVec3 = Fn(([p]: [Vec3]): Float => {\n return float(1).sub(worley2Vec3(p).x)\n}).setLayout({\n name: 'worleyVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, abs, distance, max, pow } from '../../node'\n\nconst DIST_MINKOWSKI_P = 2.0\n\nexport const distEuclidean = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distance(a, b)\n}).setLayout({\n name: 'distEuclidean',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n\nexport const distManhattan = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return abs(a.x.sub(b.x)).add(abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distManhattan3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distManhattan4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n .add(abs(a.w.sub(b.w)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distChebychev = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return max(abs(a.x.sub(b.x)), abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distChebychev3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), abs(a.z.sub(b.z))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distChebychev4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), max(abs(a.z.sub(b.z)), abs(a.w.sub(b.w)))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distMinkowski = Fn(([a, b]: [Vec2, Vec2]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(pow(abs(a.x.sub(b.x)), p).add(pow(abs(a.y.sub(b.y)), p)), 1 / p)\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distMinkowski3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distMinkowski4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p))\n .add(pow(abs(a.w.sub(b.w)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const dist = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distEuclidean(a, b)\n}).setLayout({\n name: 'dist',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, X, dFdx, dFdy, fract, float, select } from '../../node'\nimport { mapRange } from './map'\n\nexport const aafloor = Fn(([x]: [X]): X => {\n const afwidth = dFdx(x).pow(2).add(dFdy(x).pow(2)).sqrt().mul(2).toVar()\n const fx = fract(x).toVar()\n const idx = afwidth.oneMinus().toVar()\n return select(x.sub(fx), mapRange(fx, idx, float(1), x.sub(fx), x), fx.lessThan(idx))\n}).setLayout({\n name: 'aafloor',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const map = Fn(([v, iMin, iMax]: [X, X, X]): X => {\n return v.sub(iMin).div(iMax.sub(iMin))\n}).setLayout({\n name: 'map',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n ],\n})\n\nexport const mapRange = Fn(([v, iMin, iMax, oMin, oMax]: [X, X, X, X, X]): X => {\n return oMin.add(oMax.sub(oMin).mul(v.sub(iMin).div(iMax.sub(iMin))))\n}).setLayout({\n name: 'mapRange',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n { name: 'oMin', type: 'auto' },\n { name: 'oMax', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec2, X, dFdx, dFdy, fract, length, mix, smoothstep, vec2, select, float } from '../../node'\n\nconst nyquist = Fn(([x, width]: [Float, Float]): Float => {\n const cutoffStart = float(0.25).toVar('cutoffStart') // NYQUIST_FILTER_CENTER - NYQUIST_FILTER_WIDTH\n const cutoffEnd = float(0.75).toVar('cutoffEnd') // NYQUIST_FILTER_CENTER + NYQUIST_FILTER_WIDTH\n const f = smoothstep(cutoffEnd, cutoffStart, width).toVar('f')\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'width', type: 'float' },\n ],\n})\n\nexport const aafract = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n .mul(2)\n .toVar('afwidth')\n const fx = fract(x).toVar('fx')\n const idx = afwidth.oneMinus().toVar('idx')\n const v = select(fx.div(idx as any), fx.oneMinus().div(afwidth as any), fx.lessThan(idx as any)).toVar('v')\n return nyquist(v as any, afwidth as any)\n}).setLayout({\n name: 'aafract',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n\n// Vector overloads\nexport const aafractVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(aafract(v.x), aafract(v.y))\n}).setLayout({\n name: 'aafractVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, X, dFdx, dFdy, length, vec2, floor, abs } from '../../node'\nimport { nyquist } from './nyquist'\n\nexport const aamirror = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n const v = abs(x.sub(floor(x.add(0.5)))).mul(2)\n return nyquist(v, afwidth)\n}).setLayout({\n name: 'aamirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, X, mix, smoothstep, float } from '../../node'\n\nexport const nyquist = Fn(([x, width]: [X, Float]): X => {\n const cutoffStart = 0.25\n const cutoffEnd = 0.75\n const f = smoothstep(cutoffEnd, cutoffStart, width)\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'width', type: 'float' },\n ],\n})\n","import { Fn, X, select } from '../../node'\n\nexport const absi = Fn(([x]: [X]): X => {\n return select(x.mul(-1), x, x.lessThan(0))\n}).setLayout({\n name: 'absi',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, step } from '../../node'\n\nexport const adaptiveThreshold = Fn(([v, blur_v, b]: [Float, Float, Float]): Float => {\n return step(blur_v.add(b), v)\n}).setLayout({\n name: 'adaptiveThreshold',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n\nexport const adaptiveThresholdSimple = Fn(([v, blur_v]: [Float, Float]): Float => {\n return step(blur_v.sub(0.05), v)\n}).setLayout({\n name: 'adaptiveThresholdSimple',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\nexport const bump = Fn(([x, k]: [X, X]): X => {\n return x.mul(x).sub(1).negate().sub(k).saturate()\n}).setLayout({\n name: 'bump',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n\nexport const bumpSimple = Fn(([x]: [X]): X => {\n return x.mul(x).sub(1).negate().max(0)\n}).setLayout({\n name: 'bumpSimple',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { X, Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\nimport { cubic, cubicVec2, cubicVec3, cubicVec4 } from './cubic'\n\nexport const cubicMix = Fn(([a, b, t]: [Float, Float, Float]): X => {\n return a.add(b.sub(a).mul(cubic(t)))\n}).setLayout({\n name: 'cubicMix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec2 = Fn(([a, b, t]: [Vec2, Vec2, Vec2]): X => {\n return a.add(b.sub(a).mul(cubicVec2(t)))\n}).setLayout({\n name: 'cubicMixVec2',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\nexport const cubicMixVec3 = Fn(([a, b, t]: [Vec3, Vec3, Vec3]): X => {\n return a.add(b.sub(a).mul(cubicVec3(t)))\n}).setLayout({\n name: 'cubicMixVec3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec4 = Fn(([a, b, t]: [Vec4, Vec4, Vec4]): X => {\n return a.add(b.sub(a).mul(cubicVec4(t)))\n}).setLayout({\n name: 'cubicMixVec4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n","import { X, Fn } from '../../node'\n\nexport const decimate = Fn(([v, p]: [X, X]): X => {\n return v.mul(p).floor().div(p)\n}).setLayout({\n name: 'decimate',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'p', type: 'auto' },\n ],\n})","import { Fn, Float, cos, fwidth, smoothstep } from '../../node'\nimport { TWO_PI } from './const'\n\nexport const fcos = Fn(([x]: [Float]): Float => {\n const w = fwidth(x)\n return cos(x).mul(smoothstep(TWO_PI, 0, w))\n}).setLayout({\n name: 'fcos',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const frac = Fn(([x]: [X]): X => {\n return x.fract()\n}).setLayout({\n name: 'frac',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, float, select } from '../../node'\n\nexport const gain = Fn(([x, k]: [X, X]): X => {\n const conditionValue = select(x.oneMinus(), x, x.lessThan(0.5))\n const a = float(0.5).mul(float(2).mul(conditionValue).pow(k)).toVar('a')\n return select(a.oneMinus(), a, x.lessThan(0.5))\n}).setLayout({\n name: 'gain',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n","import { Fn, X, dot } from '../../node'\n\nexport const gaussian = Fn(([d, s]: [X<'vec2' | 'vec3' | 'vec4' | 'ivec2' | 'ivec3' | 'ivec4'>, X]): X => {\n const dotProduct = dot(d, d)\n const variance = s.mul(s).mul(2)\n return dotProduct.negate().div(variance).exp()\n}).setLayout({\n name: 'gaussian',\n type: 'float',\n inputs: [\n { name: 'd', type: 'auto' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { PI } from './const'\nimport { Fn, Int, Vec2, Vec3, float, vec2, vec3, uint } from '../../node'\n\nexport const hammersley = Fn(([index, numSamples]: [Int, Int]): Vec2 => {\n const tof = float(0.5).div(float(2147483648)).toVar('tof')\n const bits = uint(index).toVar('bits')\n\n bits.assign(bits.shiftLeft(uint(16)).bitOr(bits.shiftRight(uint(16))))\n bits.assign(\n bits\n .bitAnd(uint(0x55555555))\n .shiftLeft(uint(1))\n .bitOr(bits.bitAnd(uint(0xaaaaaaaa)).shiftRight(uint(1)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x33333333))\n .shiftLeft(uint(2))\n .bitOr(bits.bitAnd(uint(0xcccccccc)).shiftRight(uint(2)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x0f0f0f0f))\n .shiftLeft(uint(4))\n .bitOr(bits.bitAnd(uint(0xf0f0f0f0)).shiftRight(uint(4)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x00ff00ff))\n .shiftLeft(uint(8))\n .bitOr(bits.bitAnd(uint(0xff00ff00)).shiftRight(uint(8)))\n )\n\n return vec2(float(index).div(float(numSamples)), float(bits).mul(tof))\n}).setLayout({\n name: 'hammersley',\n type: 'vec2',\n inputs: [\n { name: 'index', type: 'int' },\n { name: 'numSamples', type: 'int' },\n ],\n})\n\nexport const hemisphereCosSample = Fn(([u]: [Vec2]): Vec3 => {\n const phi = float(2).mul(PI).mul(u.x).toVar('phi')\n const cosTheta2 = float(1).sub(u.y).toVar('cosTheta2')\n const cosTheta = cosTheta2.sqrt().toVar('cosTheta')\n const sinTheta = float(1).sub(cosTheta2).sqrt().toVar('sinTheta')\n return vec3(phi.cos().mul(sinTheta), phi.sin().mul(sinTheta), cosTheta)\n}).setLayout({\n name: 'hemisphereCosSample',\n type: 'vec3',\n inputs: [{ name: 'u', type: 'vec2' }],\n})\n","import { Fn, Float, max, float } from '../../node'\n\nexport const highPass = Fn(([v, b]: [Float, Float]): Float => {\n return max(v.sub(b), 0).div(float(1).sub(b))\n}).setLayout({\n name: 'highPass',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n","import { Fn, all } from '../../node'\nimport type { Bool, Float, Vec2, Vec3, Vec4, X } from '../../node/types'\n\nexport const inside = Fn(([x, min, max]: [X, X, X]): Bool => {\n return all(x.greaterThanEqual(min).and(x.lessThanEqual(max)))\n}).setLayout({\n name: 'inside',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'min', type: 'auto' },\n { name: 'max', type: 'auto' },\n ],\n})\n\nexport const insideFloat = Fn(([x, min, max]: [Float, Float, Float]): Bool => {\n return x.greaterThanEqual(min).and(x.lessThanEqual(max))\n}).setLayout({\n name: 'insideFloat',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'min', type: 'float' },\n { name: 'max', type: 'float' },\n ],\n})\n\nexport const insideVec2 = Fn(([v, min, max]: [Vec2, Vec2, Vec2]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n}).setLayout({\n name: 'insideVec2',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'min', type: 'vec2' },\n { name: 'max', type: 'vec2' },\n ],\n})\n\nexport const insideVec3 = Fn(([v, min, max]: [Vec3, Vec3, Vec3]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n .and(v.z.greaterThanEqual(min.z).and(v.z.lessThanEqual(max.z)))\n}).setLayout({\n name: 'insideVec3',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'min', type: 'vec3' },\n { name: 'max', type: 'vec3' },\n ],\n})\n\nexport const insideAABB = Fn(([v, aabb]: [Vec2, Vec4]): Bool => {\n return insideVec2(v, aabb.xy, aabb.zw)\n}).setLayout({\n name: 'insideAABB',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'aabb', type: 'vec4' },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const invCubic = Fn(([v]: [X]): X => {\n return float(0.5).sub(float(1).sub(float(2).mul(v)).asin().div(3).sin())\n}).setLayout({\n name: 'invCubic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const invQuartic = Fn(([v]: [X]): X => {\n return v.oneMinus().sqrt().oneMinus().sqrt()\n}).setLayout({\n name: 'invQuartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const inverse = Fn(([m]: [X]): X => {\n return float(1).div(m)\n}).setLayout({\n name: 'reciprocal',\n type: 'auto',\n inputs: [{ name: 'm', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const mirror = Fn(([x]: [X]): X => {\n const f = x.fract()\n const m = x.mod(2).floor()\n const fm = f.mul(m)\n return f.add(m).sub(fm.mul(2))\n}).setLayout({\n name: 'mirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, max } from '../../node'\n\nexport const mmax2 = Fn(([v]: [Vec2]): Float => {\n return max(v.x, v.y)\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmax3 = Fn(([v]: [Vec3]): Float => {\n return max(v.x, max(v.y, v.z))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmax4 = Fn(([v]: [Vec4]): Float => {\n return max(max(v.x, v.y), max(v.z, v.w))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const mmax = mmax4\n","import { Fn, X, mix, max, step, clamp } from '../../node'\n\n// Basic mmix function - wrapper around standard mix\nexport const mmix = Fn(([a, b, c]: [X, X, X]): X => {\n return mix(a, b, c)\n}).setLayout({\n name: 'mmix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n ],\n})\n\n// Three-value interpolation with percentage control\nexport const mmix3 = Fn(([a, b, c, pct]: [X, X, X, X]): X => {\n return mix(mix(a, b, pct.mul(2)), mix(b, c, max(pct, 0.5).sub(0.5).mul(2)), step(0.5, pct))\n}).setLayout({\n name: 'mmix3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n\n// Four-value interpolation with percentage control\nexport const mmix4 = Fn(([a, b, c, d, pct]: [X, X, X, X, X]): X => {\n return mix(\n mix(a, b, pct.mul(3)),\n mix(b, mix(c, d, max(pct, 0.66).sub(0.66).mul(3)), clamp(pct, 0.33, 0.66).sub(0.33).mul(3)),\n step(0.33, pct)\n )\n}).setLayout({\n name: 'mmix4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n","import { Fn, Vec2, X, vec4 } from '../../node'\n\n// 2D modulo function that returns both cell coordinates and wrapped position\n// Returns vec4(cellX, cellY, wrappedX, wrappedY)\nexport const mod2 = Fn(([p, s]: [Vec2, X]): X => {\n const halfS = s.div(2).toVar()\n const pShifted = p.add(halfS).toVar()\n const c = pShifted.div(s).floor().toVar()\n const wrapped = pShifted.mod(s).sub(halfS)\n return vec4(c.x, c.y, wrapped.x, wrapped.y)\n}).setLayout({\n name: 'mod2',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract cell coordinates from mod2 result\nexport const mod2Cell = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.xy\n}).setLayout({\n name: 'mod2Cell',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract wrapped position from mod2 result\nexport const mod2Wrap = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.zw\n}).setLayout({\n name: 'mod2Wrap',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { Fn, Int } from '../../node'\n\nexport const modi = Fn(([x, y]: [Int, Int]): Int => {\n const xf = x.toFloat()\n const yf = y.toFloat()\n const quotient = xf.div(yf).floor()\n return x.sub(quotient.mul(yf).toInt())\n}).setLayout({\n name: 'modi',\n type: 'int',\n inputs: [\n { name: 'x', type: 'int' },\n { name: 'y', type: 'int' },\n ],\n})\n","import { Fn, Float, Vec4, fract, vec3, vec4, float } from '../../node'\n\nconst PackUpscale = float(256.0 / 255.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst ShiftRight8 = float(1 / 256)\n\nexport const pack = Fn(([v]: [Float]): Vec4 => {\n const r = vec4(fract(v.mul(PackFactors)), v).toVar()\n r.yzw.assign(r.yzw.sub(r.xyz.mul(ShiftRight8)))\n return r.mul(PackUpscale)\n}).setLayout({\n name: 'pack',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'float' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const parabola = Fn(([x, k]: [Float, Float]): Float => {\n return x.mul(4).mul(x.oneMinus()).pow(k)\n}).setLayout({\n name: 'parabola',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\n// Square function - computes x^2 with quadratic energy amplification\nexport const pow2 = Fn(([v]: [X]): X => {\n return v.mul(v)\n}).setLayout({\n name: 'pow2',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow3 = Fn(([x]: [X]): X => {\n return x.mul(x).mul(x)\n}).setLayout({\n name: 'pow3',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow5 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n return v2.mul(v2).mul(x)\n}).setLayout({\n name: 'pow5',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow7 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n const v4 = v2.mul(v2).toVar('v4')\n const v6 = v4.mul(v2).toVar('v6')\n return v6.mul(x)\n}).setLayout({\n name: 'pow7',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, Float, float } from '../../node'\n\nexport const powFast = Fn(([a, b]: [X, X]): X => {\n return a.div((float(1) as any).sub(b).mul(a).add(b))\n}).setLayout({\n name: 'powFast',\n type: 'auto',\n inputs: [\n {\n name: 'a',\n type: 'auto'\n },\n {\n name: 'b', \n type: 'auto'\n }\n ]\n})","import { Fn, Vec4, Mat3, mat3, vec3, float } from '../../../node'\n\nexport const quat2mat3 = Fn(([q]: [Vec4]): Mat3 => {\n const qxx = q.x.mul(q.x).toVar('qxx')\n const qyy = q.y.mul(q.y).toVar('qyy')\n const qzz = q.z.mul(q.z).toVar('qzz')\n const qxz = q.x.mul(q.z).toVar('qxz')\n const qxy = q.x.mul(q.y).toVar('qxy')\n const qyw = q.y.mul(q.w).toVar('qyw')\n const qzw = q.z.mul(q.w).toVar('qzw')\n const qyz = q.y.mul(q.z).toVar('qyz')\n const qxw = q.x.mul(q.w).toVar('qxw')\n\n return mat3(\n vec3(float(1).sub(float(2).mul(qyy.add(qzz))), float(2).mul(qxy.sub(qzw)), float(2).mul(qxz.add(qyw))),\n vec3(float(2).mul(qxy.add(qzw)), float(1).sub(float(2).mul(qxx.add(qzz))), float(2).mul(qyz.sub(qxw))),\n vec3(float(2).mul(qxz.sub(qyw)), float(2).mul(qyz.add(qxw)), float(1).sub(float(2).mul(qxx.add(qyy))))\n )\n}).setLayout({\n name: 'quat2mat3',\n type: 'mat3',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Mat4 } from '../../../node'\nimport { quat2mat3 } from './quat2mat3'\nimport { toMat4 } from '../toMat4'\n\nexport const quat2mat4 = Fn(([q]: [Vec4]): Mat4 => {\n return toMat4(quat2mat3(q))\n}).setLayout({\n name: 'quat2mat4',\n type: 'mat4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Mat3, Mat4, mat4, vec4 } from '../../node'\n\nexport const toMat4 = Fn(([m]: [Mat3]): Mat4 => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'toMat4',\n type: 'mat4',\n inputs: [\n {\n name: 'm',\n type: 'mat3',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatAdd = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.add(b.xyz), a.w.add(b.w))\n}).setLayout({\n name: 'quatAdd',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatConj = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w)\n}).setLayout({\n name: 'quatConj',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatDiv = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.div(s), q.w.div(s))\n}).setLayout({\n name: 'quatDiv',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatIdentity = Fn(([]): Vec4 => {\n return vec4(0, 0, 0, 1)\n}).setLayout({\n name: 'quatIdentity',\n type: 'vec4',\n inputs: [],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatConj } from './quatConj'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatInverse = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(quatConj(q), quatLengthSq(q))\n}).setLayout({\n name: 'quatInverse',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\n\nexport const quatLengthSq = Fn(([q]: [Vec4]): Float => {\n return q.xyz.dot(q.xyz).add(q.w.mul(q.w))\n}).setLayout({\n name: 'quatLengthSq',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatLength = Fn(([q]: [Vec4]): Float => {\n return quatLengthSq(q).sqrt()\n}).setLayout({\n name: 'quatLength',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4, If, Return, float } from '../../../node'\n\nexport const quatLerp = Fn(([qa, qb, t]: [Vec4, Vec4, Float]): Vec4 => {\n const cosHalfTheta = qa.w.mul(qb.w).add(qa.xyz.dot(qb.xyz)).toVar('cosHalfTheta')\n const adjustedQb = qb.negate().select(qb, cosHalfTheta.lessThan(0)).toVar('adjustedQb')\n const absCosHalfTheta = cosHalfTheta.abs().toVar('absCosHalfTheta')\n\n If(absCosHalfTheta.greaterThanEqual(1), () => {\n Return(qa)\n })\n\n const halfTheta = absCosHalfTheta.acos().toVar('halfTheta')\n const sinHalfTheta = float(1).sub(absCosHalfTheta.mul(absCosHalfTheta)).sqrt().toVar('sinHalfTheta')\n\n If(sinHalfTheta.abs().lessThan(0.001), () => {\n Return(qa.div(2).add(adjustedQb.div(2)).normalize())\n })\n\n const ratioA = float(1).sub(t).mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioA')\n const ratioB = t.mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioB')\n\n return qa.mul(ratioA).add(adjustedQb.mul(ratioB)).normalize()\n}).setLayout({\n name: 'quatLerp',\n type: 'vec4',\n inputs: [\n {\n name: 'qa',\n type: 'vec4',\n },\n {\n name: 'qb',\n type: 'vec4',\n },\n {\n name: 't',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatMul = Fn(([q1, q2]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n q2.xyz.mul(q1.w).add(q1.xyz.mul(q2.w)).add(q1.xyz.cross(q2.xyz)),\n q1.w.mul(q2.w).sub(q1.xyz.dot(q2.xyz))\n )\n}).setLayout({\n name: 'quatMul',\n type: 'vec4',\n inputs: [\n {\n name: 'q1',\n type: 'vec4',\n },\n {\n name: 'q2',\n type: 'vec4',\n },\n ],\n})\n\nexport const quatMulScalar = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.mul(s), q.w.mul(s))\n}).setLayout({\n name: 'quatMulScalar',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatNeg = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w.negate())\n}).setLayout({\n name: 'quatNeg',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatLength } from './quatLength'\n\nexport const quatNorm = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(q, quatLength(q))\n}).setLayout({\n name: 'quatNorm',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatSub = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.sub(b.xyz), a.w.sub(b.w))\n}).setLayout({\n name: 'quatSub',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const quartic = Fn(([v]: [X]): X => {\n\tconst v2 = v.mul(v).toVar('v2')\n\treturn v2.mul((float(2) as any).sub(v2))\n}).setLayout({\n\tname: 'quartic',\n\ttype: 'auto',\n\tinputs: [\n\t\t{\n\t\t\tname: 'v',\n\t\t\ttype: 'auto'\n\t\t}\n\t]\n})","import { Fn, Float, Mat3, Vec3, float, mat3, vec3 } from '../../node'\n\nexport const rotate3d = Fn(([a, r]: [Vec3, Float]): Mat3 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec3(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s))\n )\n const col2 = vec3(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s))\n )\n const col3 = vec3(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c)\n )\n return mat3(col1, col2, col3)\n}).setLayout({\n name: 'rotate3d',\n type: 'mat3',\n inputs: [\n {\n name: 'a',\n type: 'vec3'\n },\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dX = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(1, 0, 0),\n vec3(0, c, s),\n vec3(0, s.negate(), c)\n )\n}).setLayout({\n name: 'rotate3dX',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dY = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(c, 0, s.negate()),\n vec3(0, 1, 0),\n vec3(s, 0, c)\n )\n}).setLayout({\n name: 'rotate3dY',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dZ = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(\n vec3(c, s, 0),\n vec3(s.negate(), c, 0),\n vec3(0, 0, 1)\n )\n}).setLayout({\n name: 'rotate3dZ',\n type: 'mat3',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, Vec3, float, mat4, vec4 } from '../../node'\n\nexport const rotate4d = Fn(([a, r]: [Vec3, Float]): Mat4 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec4(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s)),\n 0\n )\n const col2 = vec4(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s)),\n 0\n )\n const col3 = vec4(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c),\n 0\n )\n const col4 = vec4(0, 0, 0, 1)\n return mat4(col1, col2, col3, col4)\n}).setLayout({\n name: 'rotate4d',\n type: 'mat4',\n inputs: [\n {\n name: 'a',\n type: 'vec3'\n },\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dX = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(\n vec4(1, 0, 0, 0),\n vec4(0, c, s, 0),\n vec4(0, s.negate(), c, 0),\n vec4(0, 0, 0, 1)\n )\n}).setLayout({\n name: 'rotate4dX',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dY = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, 0, s.negate(), 0), vec4(0, 1, 0, 0), vec4(s, 0, c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dY',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float',\n },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dZ = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(\n vec4(c, s, 0, 0),\n vec4(s.negate(), c, 0, 0),\n vec4(0, 0, 1, 0),\n vec4(0, 0, 0, 1)\n )\n}).setLayout({\n name: 'rotate4dZ',\n type: 'mat4',\n inputs: [\n {\n name: 'r',\n type: 'float'\n }\n ]\n})","import { Fn, X, float } from '../../node'\n\nconst MEDIUMP_FLT_MAX = float(65504.0)\n\nexport const saturateMediump = Fn(([x]: [X]): X => {\n\treturn x.min(MEDIUMP_FLT_MAX)\n}).setLayout({\n\tname: 'saturateMediump',\n\ttype: 'auto',\n\tinputs: [{ name: 'x', type: 'auto' }],\n})","import { Fn, Float, Vec2, mat2, Mat2 } from '../../node'\n\nexport const scale2d = Fn(([s]: [Float]): Mat2 => {\n return mat2(s, 0, 0, s)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 's',\n type: 'float',\n },\n ]\n})\n\nexport const scale2dVec = Fn(([s]: [Vec2]): Mat2 => {\n return mat2(s.x, 0, 0, s.y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 's',\n type: 'vec2',\n },\n ]\n})\n\nexport const scale2dXY = Fn(([x, y]: [Float, Float]): Mat2 => {\n return mat2(x, 0, 0, y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n {\n name: 'x',\n type: 'float',\n },\n {\n name: 'y', \n type: 'float',\n },\n ]\n})","import { Fn, Float, Vec3, Mat3, mat3 } from '../../node'\n\nexport const scale3d = Fn(([s]: [Float]): Mat3 => {\n return mat3(s, 0, 0, 0, s, 0, 0, 0, s)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale3dVec = Fn(([s]: [Vec3]): Mat3 => {\n return mat3(s.x, 0, 0, 0, s.y, 0, 0, 0, s.z)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n","import { Fn, Float, Vec3, Vec4, Mat4, mat4 } from '../../node'\n\nexport const scale4d = Fn(([s]: [Float]): Mat4 => {\n return mat4(s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale4dXYZ = Fn(([x, y, z]: [Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' }\n ]\n})\n\nexport const scale4dXYZW = Fn(([x, y, z, w]: [Float, Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' },\n { name: 'w', type: 'float' }\n ]\n})\n\nexport const scale4dVec3 = Fn(([s]: [Vec3]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n\nexport const scale4dVec4 = Fn(([s]: [Vec4]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, s.w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec4' }]\n})","import { Fn, X } from '../../node'\nimport { quintic } from './quintic'\n\nexport const smootherstep = Fn(([a, b, v]: [X, X, X]): X => {\n\tconst normalized = v.sub(a).div(b.sub(a)).toVar('normalized')\n\tconst saturated = normalized.saturate().toVar('saturated')\n\treturn quintic(saturated)\n}).setLayout({\n\tname: 'smootherstep',\n\ttype: 'auto',\n\tinputs: [\n\t\t{ name: 'a', type: 'auto' },\n\t\t{ name: 'b', type: 'auto' },\n\t\t{ name: 'v', type: 'auto' }\n\t]\n})","import { Fn, Mat3, Mat4, mat3 } from '../../node'\n\nexport const toMat3 = Fn(([m]: [Mat4]): Mat3 => {\n return mat3(m[0].xyz, m[1].xyz, m[2].xyz)\n}).setLayout({\n name: 'toMat3',\n type: 'mat3',\n inputs: [\n {\n name: 'm',\n type: 'mat4',\n },\n ],\n})\n","import { Fn, Float, Mat4, Vec3, X, mat4 } from '../../node'\n\nexport const translate4d = Fn(([x, y, z]: [X, X?, X?]): Mat4 => {\n if (y === undefined && z === undefined) {\n const t = x as Vec3\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n t.x, t.y, t.z, 1\n )\n } else {\n const tx = x as Float\n const ty = y as Float\n const tz = z as Float\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n tx, ty, tz, 1\n )\n }\n}).setLayout({\n name: 'translate4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'y', type: 'auto' },\n { name: 'z', type: 'auto' }\n ]\n})","import { Fn, Float, Vec3, Vec4, dot, vec3, vec4, float } from '../../node'\n\nconst UnpackDownscale = float(255.0 / 256.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst UnpackFactors = UnpackDownscale.div(vec4(PackFactors, 1.0))\n\nexport const unpack8 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(8, 8 * 8, 8 * 8 * 8)\n return dot(v, f).div(512.0)\n}).setLayout({\n name: 'unpack8',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack16 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(16, 16 * 16, 16 * 16 * 16)\n return dot(v, f).div(4096.0)\n}).setLayout({\n name: 'unpack16',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack32 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(32, 32 * 32, 32 * 32 * 32)\n return dot(v, f).div(32768.0)\n}).setLayout({\n name: 'unpack32',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack64 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(64, 64 * 64, 64 * 64 * 64)\n return dot(v, f).div(262144.0)\n}).setLayout({\n name: 'unpack64',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack128 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(128, 128 * 128, 128 * 128 * 128)\n return dot(v, f).div(2097152.0)\n}).setLayout({\n name: 'unpack128',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack256 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(256, 256 * 256, 256 * 256 * 256)\n return dot(v, f).div(16581375.0)\n}).setLayout({\n name: 'unpack256',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpackBase = Fn(([v, base]: [Vec3, Float]): Float => {\n const base3 = base.mul(base).mul(base)\n const f = vec3(base, base.mul(base), base3)\n return dot(v, f).div(base3)\n}).setLayout({\n name: 'unpackBase',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'base', type: 'float' },\n ],\n})\n\nexport const unpack = Fn(([v]: [Vec4]): Float => {\n return dot(v, UnpackFactors)\n}).setLayout({\n name: 'unpack',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const unpackDefault = Fn(([v]: [Vec3]): Float => {\n return unpack256(v)\n}).setLayout({\n name: 'unpackDefault',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const sphereSDF = Fn(([p]: [Vec3]) => {\n return p.length()\n}).setLayout({\n name: 'sphereSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const sphereSDFRadius = Fn(([p, s]: [Vec3, Float]) => {\n return p.length().sub(s)\n}).setLayout({\n name: 'sphereSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3 } from '../../node'\n\nexport const boxSDF = Fn(([p]: [Vec3]) => {\n const d = p.abs().toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' }\n ]\n})\n\nexport const boxSDFSize = Fn(([p, b]: [Vec3, Vec3]) => {\n const d = p.abs().sub(b).toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDFSize',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' }\n ]\n})","import { Fn, Vec2 } from '../../node'\n\nexport const aspect = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n const result = st.toVar('result')\n result.x.assign(result.x.mul(s.x.div(s.y)))\n return result\n}).setLayout({\n name: 'aspect',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' }\n ]\n})","import { Fn, Vec2, Float, mat2, atan2, cos, sin, mod, vec2, float } from '../../node'\n\nconst PI = float(3.1415926535897932384626433832795)\nconst TWO_PI = float(6.283185307179586476925286766559)\nconst BRACKETING_ANGLE_DELTA = PI.div(20.0)\n\nexport const bracketingAxis0 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n return vec2(cos(angle0), sin(angle0))\n}).setLayout({\n name: 'bracketingAxis0',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingAxis1 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n const vAxis0 = vec2(cos(angle0), sin(angle0))\n const RotateByAngleDelta = mat2(\n cos(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA).negate(),\n cos(BRACKETING_ANGLE_DELTA)\n )\n return RotateByAngleDelta.mul(vAxis0)\n}).setLayout({\n name: 'bracketingAxis1',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingBlend = Fn(([dir]: [Vec2]): Float => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n return fractional.div(BRACKETING_ANGLE_DELTA)\n}).setLayout({\n name: 'bracketingBlend',\n type: 'float',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, floor, fract } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const brickTile = Fn(([t]: [Vec4]): Vec4 => {\n const result = t.toVar('result')\n result.x.assign(result.x.add(mod(result.w, 2).mul(0.5)))\n result.z.assign(floor(result.z.add(result.x)))\n result.x.assign(fract(result.x))\n return result\n}).setLayout({\n name: 'brickTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const brickTileVec2 = Fn(([st]: [Vec2]): Vec4 => {\n return brickTile(sqTile(st))\n}).setLayout({\n name: 'brickTileVec2',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const brickTileFloat = Fn(([st, s]: [Vec2, Float]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const brickTileVec2Scale = Fn(([st, s]: [Vec2, Vec2]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4, fract, floor } from '../../node'\n\nexport const sqTile = Fn(([st]: [Vec2]): Vec4 => {\n return vec4(fract(st), floor(st))\n}).setLayout({\n name: 'sqTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const sqTileScale = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return sqTile(st.mul(scale))\n}).setLayout({\n name: 'sqTileScale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, atan2, length, acos, vec2, vec3 } from '../../node'\n\nexport const cart2polar = Fn(([st]: [Vec2]): Vec2 => {\n return vec2(atan2(st.y, st.x), length(st))\n}).setLayout({\n name: 'cart2polar',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const cart2polar3D = Fn(([st]: [Vec3]): Vec3 => {\n const r = length(st).toVar('r')\n const phi = acos(st.z.div(r)).toVar('phi')\n const theta = atan2(st.y, st.x).toVar('theta')\n return vec3(r, phi, theta)\n}).setLayout({\n name: 'cart2polar3D',\n type: 'vec3',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction center(x: Float): Float\nfunction center(v: Vec2): Vec2\nfunction center(v: Vec3): Vec3\nfunction center(v: any): any {\n return v.mul(2).sub(1)\n}\n\nexport const centerFloat = Fn(([x]: [Float]): Float => {\n return center(x)\n}).setLayout({\n name: 'centerFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const centerVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return center(v)\n}).setLayout({\n name: 'centerVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const centerVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return center(v)\n}).setLayout({\n name: 'centerVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const checkerTile = Fn(([t]: [Vec4]): Float => {\n const c = mod(t.zw, 2).toVar('c')\n return abs(c.x.sub(c.y))\n}).setLayout({\n name: 'checkerTile',\n type: 'float',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const checkerTileVec2 = Fn(([v]: [Vec2]): Float => {\n return checkerTile(sqTile(v))\n}).setLayout({\n name: 'checkerTileVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const checkerTileFloat = Fn(([v, s]: [Vec2, Float]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const checkerTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileVec2Scale',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, select } from '../../node'\n\n// Perspective projection version\nexport const depth2viewZ = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return near.mul(far).div(far.sub(near).mul(depth).sub(far))\n}).setLayout({\n name: 'depth2viewZ',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Orthographic projection version\nexport const depth2viewZOrthographic = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return depth.mul(near.sub(far)).sub(near)\n}).setLayout({\n name: 'depth2viewZOrthographic',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Combined version with orthographic flag\nexport const depth2viewZCombined = Fn(([depth, near, far, orthographic]: [Float, Float, Float, Float]): Float => {\n const perspective = near.mul(far).div(far.sub(near).mul(depth).sub(far))\n const ortho = depth.mul(near.sub(far)).sub(near)\n return select(ortho, perspective, orthographic.greaterThan(0.5))\n}).setLayout({\n name: 'depth2viewZCombined',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n { name: 'orthographic', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, X, texture, float, vec3, int, Loop, If } from '../../node'\nimport { lookAtBasic } from './lookAt'\n\nconst DISPLACE_DEPTH = float(1).constant('DISPLACE_DEPTH')\nconst DISPLACE_PRECISION = float(0.01).constant('DISPLACE_PRECISION')\nconst DISPLACE_MAX_ITERATIONS = int(120).constant('DISPLACE_MAX_ITERATIONS')\n\nexport const displace = Fn(([tex, ro, rd]: [X, Vec3, Vec3]): Vec3 => {\n const dz = ro.z.sub(DISPLACE_DEPTH).toVar('dz')\n const t = dz.div(rd.z).toVar('t')\n const prev = vec3(ro.x.sub(rd.x.mul(t)), ro.y.sub(rd.y.mul(t)), ro.z.sub(rd.z.mul(t))).toVar('prev')\n const curr = prev.toVar('curr')\n const lastD = prev.z.toVar('lastD')\n const hmap = float(0).toVar('hmap')\n const df = float(0).toVar('df')\n\n Loop(DISPLACE_MAX_ITERATIONS, () => {\n prev.assign(curr)\n curr.assign(prev.add(rd.mul(DISPLACE_PRECISION)))\n hmap.assign(texture(tex, curr.xy.sub(0.5)).r)\n df.assign(curr.z.sub(hmap.mul(DISPLACE_DEPTH)))\n\n If(df.lessThan(0), () => {\n const t = lastD.div(df.abs().add(lastD)).toVar('t')\n return prev.add(t.mul(curr.sub(prev))).add(vec3(0.5, 0.5, 0))\n })\n\n lastD.assign(df)\n })\n\n return vec3(0, 0, 1)\n}).setLayout({\n name: 'displace',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'rd', type: 'vec3' },\n ],\n})\n\nexport const displaceUV = Fn(([tex, ro, uv]: [X, Vec3, Vec2]): Vec3 => {\n const rd = lookAtBasic(ro.negate())\n .mul(vec3(uv.sub(float(0.5)), 1).normalize())\n .toVar('rd')\n return displace(tex, ro, rd)\n}).setLayout({\n name: 'displaceUV',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'uv', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, mat3 } from '../../node'\n\nexport const lookAtForward = Fn(([forward, up]: [Vec3, Vec3]) => {\n const zaxis = forward.normalize().toVar()\n const xaxis = up.cross(zaxis).normalize().toVar()\n const yaxis = zaxis.cross(xaxis).toVar()\n return mat3(xaxis, yaxis, zaxis)\n}).setLayout({\n name: 'lookAtForward',\n type: 'mat3',\n inputs: [\n { name: 'forward', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAt = Fn(([eye, target, up]: [Vec3, Vec3, Vec3]) => {\n const forward = target.sub(eye).normalize().toVar()\n return lookAtForward(forward, up)\n}).setLayout({\n name: 'lookAt',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtRoll = Fn(([eye, target, roll]: [Vec3, Vec3, Float]) => {\n const up = vec3(roll.sin(), roll.cos(), 0).toVar()\n return lookAt(eye, target, up)\n}).setLayout({\n name: 'lookAtRoll',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtBasic = Fn(([forward]: [Vec3]) => {\n return lookAtForward(forward, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtBasic',\n type: 'mat3',\n inputs: [{ name: 'forward', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, vec3, cos, sin, sqrt, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const equirect2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const phi = PI.sub(uv.y.mul(PI)).toVar('phi')\n const theta = uv.x.mul(TWO_PI).toVar('theta')\n const dir = vec3(cos(theta), 0, sin(theta)).toVar('dir')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'equirect2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec3, Mat4, mat3 } from '../../node'\nimport { rotate3dX, rotate3dY, rotate3dZ } from '../math'\nimport { translateMat3 } from './translate'\n\nexport const eulerView = Fn(([position, euler]: [Vec3, Vec3]): Mat4 => {\n const rotZ = rotate3dZ(euler.z)\n const rotX = rotate3dX(euler.x)\n const rotY = rotate3dY(euler.y)\n const identity = mat3(1).toVar('identity')\n const rotation = rotY.mul(rotX).mul(rotZ).mul(identity).toVar('rotation')\n return translateMat3(rotation, position)\n}).setLayout({\n name: 'eulerView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'euler', type: 'vec3' },\n ],\n})\n","import { Fn, Mat3, Vec3, vec4, mat4 } from '../../node'\n\nexport const translateMat3 = Fn(([m, translation]: [Mat3, Vec3]) => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(translation, 1))\n}).setLayout({\n name: 'translateMat3',\n type: 'mat4',\n inputs: [\n { name: 'm', type: 'mat3' },\n { name: 'translation', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec3, sqrt, cos, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const fisheye2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const ndc = uv.mul(2).sub(1).toVar('ndc')\n const R = sqrt(ndc.x.mul(ndc.x).add(ndc.y.mul(ndc.y))).toVar('R')\n const dir = vec3(ndc.x.div(R), 0, ndc.y.div(R)).toVar('dir')\n const phi = R.mul(PI).mul(0.52).toVar('phi')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'fisheye2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4 } from '../../node'\n\nexport const flipYVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(v.x, v.y.oneMinus())\n}).setLayout({\n name: 'flipY',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const flipYVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return vec3(v.x, v.y.oneMinus(), v.z)\n}).setLayout({\n name: 'flipY',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const flipYVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(v.x, v.y.oneMinus(), v.z, v.w)\n}).setLayout({\n name: 'flipY',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec2, Vec4, vec2, vec4, float, floor, dot, select } from '../../node'\n\nexport const hexTile = Fn(([st]: [Vec2]): Vec4 => {\n const s = vec2(1, 1.7320508).toVar('s')\n const o = vec2(0.5, 1).toVar('o')\n const stYX = vec2(st.y, st.x).toVar('stYX')\n const i = floor(vec4(stYX, stYX.sub(o)).div(vec4(s, s)))\n .add(0.5)\n .toVar('i')\n const f = vec4(stYX.sub(i.xy.mul(s)), stYX.sub(i.zw.add(0.5).mul(s))).toVar('f')\n const dotXY = dot(f.xy, f.xy)\n const dotZW = dot(f.zw, f.zw)\n return select(vec4(f.wz.add(float(0.5)), i.zw.add(o)), vec4(f.yx.add(float(0.5)), i.xy), dotXY.lessThan(dotZW))\n}).setLayout({\n name: 'hexTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, vec2, float, length, atan2, floor, min, max, cos, sin } from '../../node'\n\nconst TWO_PI = 6.283185307179586\n\nconst kaleidoscopeCore = (coord: Vec2, segmentCount: Float, phase: Float) => {\n const uv = coord.sub(0.5).toVar('uv')\n const radius = length(uv).toVar('radius')\n const angle = atan2(uv.y, uv.x).toVar('angle')\n const segmentAngle = float(TWO_PI).div(segmentCount).toVar('segmentAngle')\n const adjustedAngle = angle.sub(segmentAngle.mul(floor(angle.div(segmentAngle)))).toVar('adjustedAngle')\n const finalAngle = min(adjustedAngle, segmentAngle.sub(adjustedAngle)).toVar('finalAngle')\n const kuv = vec2(cos(finalAngle.add(phase)), sin(finalAngle.add(phase)))\n .mul(radius)\n .add(0.5)\n .toVar('kuv')\n return max(min(kuv, kuv.mul(-1).add(2)), kuv.negate())\n}\n\nexport const kaleidoscope = Fn(([coord, segmentCount, phase]: [Vec2, Float, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, phase)\n}).setLayout({\n name: 'kaleidoscope',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const kaleidoscopeDefault = Fn(([coord]: [Vec2]): Vec2 => {\n return kaleidoscopeCore(coord, float(8), float(0))\n}).setLayout({\n name: 'kaleidoscopeDefault',\n type: 'vec2',\n inputs: [{ name: 'coord', type: 'vec2' }],\n})\n\nexport const kaleidoscopeCount = Fn(([coord, segmentCount]: [Vec2, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, float(0))\n}).setLayout({\n name: 'kaleidoscopeCount',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const linearizeDepth = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n const normalizedDepth = depth.mul(2).sub(1).toVar('normalizedDepth')\n return near\n .mul(far)\n .mul(2)\n .div(far.add(near).sub(normalizedDepth.mul(far.sub(near))))\n}).setLayout({\n name: 'linearizeDepth',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4 } from '../../node'\nimport { sqTile } from './sqTile'\nimport { mirror } from '../math/mirror'\n\nexport const mirrorTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.xy.add(t.zw)), t.z, t.w)\n}).setLayout({\n name: 'mirrorTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorTile(sqTile(v))\n}).setLayout({\n name: 'mirrorTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const mirrorTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const mirrorXTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.x.add(t.z)), t.y, t.z, t.w)\n}).setLayout({\n name: 'mirrorXTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorXTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorXTile(sqTile(v))\n}).setLayout({\n name: 'mirrorXTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorYTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(t.x, mirror(t.y.add(t.w)), t.z, t.w)\n}).setLayout({\n name: 'mirrorYTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorYTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorYTile(sqTile(v))\n}).setLayout({\n name: 'mirrorYTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Vec2, floor } from '../../node'\n\nexport const nearest = Fn(([v, res]: [Vec2, Vec2]): Vec2 => {\n const offset = res.sub(1).reciprocal().mul(0.5).toVar('offset')\n return floor(v.mul(res)).div(res).add(offset)\n}).setLayout({\n name: 'nearest',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'res', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const orthographic = Fn(([l, r, b, t, n, f]: [Float, Float, Float, Float, Float, Float]): Mat4 => {\n const width = r.sub(l).toVar('width')\n const height = t.sub(b).toVar('height')\n const depth = f.sub(n).toVar('depth')\n\n return mat4(\n vec4(width.reciprocal().mul(2), 0, 0, 0),\n vec4(0, height.reciprocal().mul(2), 0, 0),\n vec4(0, 0, depth.reciprocal().mul(-2), 0),\n vec4(r.add(l).div(width).negate(), t.add(b).div(height).negate(), f.add(n).div(depth).negate(), 1)\n )\n}).setLayout({\n name: 'orthographic',\n type: 'mat4',\n inputs: [\n { name: 'l', type: 'float' },\n { name: 'r', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 't', type: 'float' },\n { name: 'n', type: 'float' },\n { name: 'f', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, X, texture, float, vec2, vec3, int, Loop, If, Break } from '../../node'\n\nconst PARALLAXMAPPING_SCALE = float(0.01).constant('PARALLAXMAPPING_SCALE')\nconst PARALLAXMAPPING_NUMSEARCHES = float(10).constant('PARALLAXMAPPING_NUMSEARCHES')\n\nexport const parallaxMappingSimple = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const initialHeight = texture(tex, T).r.toVar('initialHeight')\n const texCoordOffset = PARALLAXMAPPING_SCALE.mul(V.xy).mul(initialHeight).toVar('texCoordOffset')\n return T.sub(texCoordOffset)\n}).setLayout({\n name: 'parallaxMappingSimple',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingSteep = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.mul(0.5).toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingSteep',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingRelief = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const deltaTexCoord = dtex.mul(0.5).toVar('deltaTexCoord')\n const deltaHeight = layerHeight.mul(0.5).toVar('deltaHeight')\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n\n Loop(int(5), ({ i }) => {\n deltaTexCoord.mulAssign(0.5)\n deltaHeight.mulAssign(0.5)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n\n If(heightFromTexture.greaterThan(currentLayerHeight), () => {\n currentTextureCoords.subAssign(deltaTexCoord)\n currentLayerHeight.addAssign(deltaHeight)\n }).Else(() => {\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n })\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingRelief',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingOcclusion = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const curLayerHeight = float(0).toVar('curLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n const prevTCoords = currentTextureCoords.toVar('prevTCoords')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(curLayerHeight), () => {\n Break()\n })\n curLayerHeight.addAssign(layerHeight)\n prevTCoords.assign(currentTextureCoords)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const nextH = heightFromTexture.sub(curLayerHeight).toVar('nextH')\n const prevH = texture(tex, prevTCoords).r.sub(curLayerHeight).add(layerHeight).toVar('prevH')\n const weight = nextH.div(nextH.sub(prevH)).toVar('weight')\n const finalTexCoords = prevTCoords\n .mul(weight)\n .add(currentTextureCoords.mul(float(1).sub(weight)))\n .toVar('finalTexCoords')\n\n return finalTexCoords\n}).setLayout({\n name: 'parallaxMappingOcclusion',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMapping = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n return parallaxMappingOcclusion(tex, V, T)\n}).setLayout({\n name: 'parallaxMapping',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, tan, float } from '../../node'\n\nexport const perspective = Fn(([fov, aspect, near, far]: [Float, Float, Float, Float]): Mat4 => {\n const f = float(1)\n .div(tan(fov.div(2)))\n .toVar('f')\n const nf = float(1).div(near.sub(far)).toVar('nf')\n // prettier-ignore\n return mat4(\n f.div(aspect), 0, 0, 0,\n 0, f, 0, 0,\n 0, 0, far.add(near).mul(nf), -1,\n 0, 0, float(2).mul(far).mul(near).mul(nf), 0\n )\n}).setLayout({\n name: 'perspective',\n type: 'mat4',\n inputs: [\n { name: 'fov', type: 'float' },\n { name: 'aspect', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, cos, sin, vec2, vec3 } from '../../node'\n\nexport const polar2cart = Fn(([polar]: [Vec2]): Vec2 => {\n return vec2(cos(polar.x), sin(polar.x)).mul(polar.y)\n}).setLayout({\n name: 'polar2cart',\n type: 'vec2',\n inputs: [{ name: 'polar', type: 'vec2' }],\n})\n\nexport const polar2cart3D = Fn(([r, phi, theta]: [Float, Float, Float]): Vec3 => {\n const x = r.mul(cos(theta)).mul(sin(phi)).toVar('x')\n const y = r.mul(sin(theta)).mul(sin(phi)).toVar('y')\n const z = r.mul(cos(phi)).toVar('z')\n return vec3(x, y, z)\n}).setLayout({\n name: 'polar2cart3D',\n type: 'vec3',\n inputs: [\n { name: 'r', type: 'float' },\n { name: 'phi', type: 'float' },\n { name: 'theta', type: 'float' },\n ],\n})\n","import { Fn, Vec2, mix, vec2, step } from '../../node'\n\nexport const ratio = Fn(([v, s]: [Vec2, Vec2]): Vec2 => {\n const wideAspect = vec2(v.x.mul(s.x.div(s.y)).sub(s.x.mul(0.5).sub(s.y.mul(0.5)).div(s.y)), v.y)\n const tallAspect = vec2(v.x, v.y.mul(s.y.div(s.x)).sub(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.x)))\n return mix(wideAspect, tallAspect, step(s.x, s.y))\n}).setLayout({\n name: 'ratio',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, floor, fract } from '../../node'\n\nexport const sprite = Fn(([st, grid, index]: [Vec2, Vec2, Float]): Vec2 => {\n const adjustedIndex = index.add(grid.x).toVar('adjustedIndex')\n const f = vec2(1).div(grid).toVar('f')\n const cell = vec2(floor(adjustedIndex), grid.y.sub(floor(adjustedIndex.mul(f.x)))).toVar('cell')\n return fract(st.add(cell).mul(f))\n}).setLayout({\n name: 'sprite',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'grid', type: 'vec2' },\n { name: 'index', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Mat3, mat3, normalize, cross } from '../../node'\n\nexport const tbn = Fn(([t, b, n]: [Vec3, Vec3, Vec3]): Mat3 => {\n return mat3(t, b, n)\n}).setLayout({\n name: 'tbn',\n type: 'mat3',\n inputs: [\n { name: 't', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'n', type: 'vec3' },\n ],\n})\n\nexport const tbnFromNormal = Fn(([n, up]: [Vec3, Vec3]): Mat3 => {\n const t = normalize(cross(up, n)).toVar('t')\n const b = cross(n, t).toVar('b')\n return tbn(t, b, n)\n}).setLayout({\n name: 'tbnFromNormal',\n type: 'mat3',\n inputs: [\n { name: 'n', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { lookAt, lookAtRoll } from './lookAt'\nimport { translateMat3 } from './translate'\n\nexport const lookAtView = Fn(([position, target, up]: [Vec3, Vec3, Vec3]) => {\n const m = lookAt(position, target, up).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtViewRoll = Fn(([position, target, roll]: [Vec3, Vec3, Float]) => {\n const m = lookAtRoll(position, target, roll).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtViewRoll',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtViewBasic = Fn(([position, target]: [Vec3, Vec3]) => {\n return lookAtView(position, target, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtViewBasic',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const rotate2DCenter = Fn(([v, r, c]: [Vec2, Float, Vec2]) => {\n return rotate2d(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotate2DCenter',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec2' },\n ],\n})\n\nexport const rotate2DBasic = Fn(([v, r]: [Vec2, Float]) => {\n return rotate2DCenter(v, r, vec2(0.5))\n}).setLayout({\n name: 'rotate2DBasic',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const rotate2DAxis = Fn(([v, xAxis]: [Vec2, Vec2]) => {\n const negYAxis = vec2(xAxis.y.negate(), xAxis.x).toVar()\n return vec2(v.dot(negYAxis), v.dot(xAxis))\n}).setLayout({\n name: 'rotate2DAxis',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'xAxis', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dX } from '../math/rotate4dX'\n\n// vec4 rotateX(in vec4 v, in float r, in vec4 c)\nexport const rotateXVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dX(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateXVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateX(in vec4 v, in float r)\nexport const rotateXVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dX(r).mul(v)\n}).setLayout({\n name: 'rotateXVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r, in vec3 c)\nexport const rotateXVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dX(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateXVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r)\nexport const rotateXVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dX(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateXVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dY } from '../math/rotate4dY'\n\n// vec4 rotateY(in vec4 v, in float r, in vec4 c)\nexport const rotateYVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dY(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateYVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateY(in vec4 v, in float r)\nexport const rotateYVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dY(r).mul(v)\n}).setLayout({\n name: 'rotateYVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r, in vec3 c)\nexport const rotateYVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dY(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateYVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r)\nexport const rotateYVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dY(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateYVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dZ } from '../math/rotate4dZ'\n\n// vec4 rotateZ(in vec4 v, in float r, in vec4 c)\nexport const rotateZVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dZ(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateZVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateZ(in vec4 v, in float r)\nexport const rotateZVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dZ(r).mul(v)\n}).setLayout({\n name: 'rotateZVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r, in vec3 c)\nexport const rotateZVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dZ(r)\n .mul(vec4(v.sub(c), 0))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateZVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r)\nexport const rotateZVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dZ(r).mul(vec4(v, 0)).xyz\n}).setLayout({\n name: 'rotateZVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const unratio = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return vec2(st.x, st.y.mul(s.x.div(s.y)).add(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.y)))\n}).setLayout({\n name: 'unratio',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction uncenter(x: Float): Float\nfunction uncenter(v: Vec2): Vec2\nfunction uncenter(v: Vec3): Vec3\nfunction uncenter(v: any): any {\n return v.mul(0.5).add(0.5)\n}\n\nexport const uncenterFloat = Fn(([x]: [Float]): Float => {\n return uncenter(x)\n}).setLayout({\n name: 'uncenterFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const uncenterVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const uncenterVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const viewZ2depth = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).mul(far).div(far.sub(near).mul(viewZ))\n}).setLayout({\n name: 'viewZ2depth',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\nexport const viewZ2depthOrthographic = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).div(near.sub(far))\n}).setLayout({\n name: 'viewZ2depthOrthographic',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, atan2, acos } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const xyz2equirect = Fn(([d]: [Vec3]): Vec2 => {\n return vec2(atan2(d.z, d.x).add(PI), acos(d.y.negate())).div(vec2(TWO_PI, PI))\n}).setLayout({\n name: 'xyz2equirect',\n type: 'vec2',\n inputs: [{ name: 'd', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mat2, vec2, vec4, floor, fract, dot } from '../../node'\n\nexport const triTile = Fn(([st]: [Vec2]): Vec4 => {\n const transformed = st.mul(mat2(vec2(1, -1 / 1.7320508), vec2(0, 2 / 1.7320508))).toVar()\n const f = vec4(transformed, transformed.negate()).toVar()\n const i = floor(f).toVar()\n const fFractional = fract(f).toVar()\n\n const dotXY = dot(fFractional.xy, fFractional.xy)\n const dotZW = dot(fFractional.zw, fFractional.zw)\n\n const condition = dotXY.lessThan(dotZW)\n const trueValue = vec4(fFractional.xy, vec2(2, 1).mul(i.xy))\n const falseValue = vec4(fFractional.zw, vec2(2, 1).mul(i.zw).add(1).negate())\n\n return falseValue.select(trueValue, condition)\n}).setLayout({\n name: 'triTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triTileScaled = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return triTile(st.mul(scale))\n}).setLayout({\n name: 'triTileScaled',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs, vec4 } from '../../node'\nimport { rotate2DBasic } from './rotate'\nimport { sqTile } from './sqTile'\n\nexport const windmillTile = Fn(([t, turn]: [Vec4, Float]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(turn)), t.zw)\n}).setLayout({\n name: 'windmillTile',\n type: 'vec4',\n inputs: [\n { name: 't', type: 'vec4' },\n { name: 'turn', type: 'float' },\n ],\n})\n\nexport const windmillTileDefault = Fn(([t]: [Vec4]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(6.283185307179586)), t.zw)\n}).setLayout({\n name: 'windmillTileDefault',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const windmillTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return windmillTileDefault(sqTile(v))\n}).setLayout({\n name: 'windmillTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const windmillTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const windmillTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n"],"mappings":"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","names":["Fn","pow","sin","float","EIGHTH_PI","QTR_PI","HALF_PI","PI","TWO_PI","TAU","INV_PI","INV_SQRT_TAU","SQRT_HALF_PI","PHI","EPSILON","GOLDEN_RATIO","GOLDEN_RATIO_CONJUGATE","GOLDEN_ANGLE","DEG2RAD","RAD2DEG","backIn","Fn","pow","sin","PI","Fn","float","backInOut","Fn","f","float","g","backIn","Fn","float","backOut","Fn","float","backIn","Fn","float","Fn","float","bounceOut","a","b","c","ca","cb","cc","t2","bounceIn","Fn","float","bounceOut","Fn","float","bounceInOut","Fn","float","bounceOut","Fn","circularIn","Fn","circularInOut","early","late","Fn","float","circularOut","Fn","cubicIn","Fn","cubicInOut","early","late","Fn","cubicOut","f","Fn","sin","pow","float","elasticIn","Fn","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticInOut","Fn","t2","t2minus1","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticOut","Fn","sin","float","HALF_PI","pow","Fn","exponentialIn","Fn","exponentialInOut","isZeroOrOne","early","late","result","Fn","exponentialOut","Fn","linearIn","Fn","linearInOut","Fn","linearOut","Fn","quadraticIn","Fn","select","quadraticInOut","p","Fn","quadraticOut","Fn","quarticIn","Fn","select","quarticInOut","early","late","Fn","quarticOut","it","Fn","quinticIn","Fn","select","quinticInOut","early","late","Fn","quinticOut","Fn","sin","sineIn","Fn","sin","HALF_PI","Fn","cos","sineInOut","Fn","cos","PI","Fn","sin","sineOut","Fn","sin","HALF_PI","Fn","float","vec3","cmyk2rgb","cmyk","invK","Fn","float","vec4","GAMMA","gamma2linear","v","gamma2linearVec4","Fn","float","vec4","Fn","float","vec3","hue2rgb","hue","R","G","B","hsl2rgb","Fn","hsl","rgb","hue2rgb","C","float","hsl2rgbVec4","vec4","Fn","vec4","hsv2rgb","Fn","hsv","hue2rgb","hsv2rgbVec4","vec4","Fn","atan2","sqrt","vec3","vec4","lab2lch3","lab","chroma","hue","lab2lch4","lch","lab2lch","Fn","vec4","Fn","float","select","vec3","vec4","CIE_WHITE","lab2xyz","lab","fy","fx","fz","threshold","delta","factor","convertX","convertY","convertZ","lab2xyzVec4","Fn","mat3","vec4","XYZ2RGB","xyz2rgb","xyz","xyz2rgbVec4","lab2rgb","Fn","lab","xyz2rgb","lab2xyz","lab2rgbVec4","vec4","Fn","vec3","vec4","lch2lab3","lch","radians","lch2lab4","lab","lch2lab","Fn","vec4","lch2rgb3","Fn","lch","lab2rgb","lch2lab","lch2rgb4","rgb","vec4","lch2rgb","Fn","float","vec4","INV_GAMMA","linear2gamma","v","linear2gammaVec4","Fn","mat3","vec4","OKLAB2RGB_A","OKLAB2RGB_B","oklab2rgb3","oklab","lms","oklab2rgb4","rgb","oklab2rgb","Fn","float","vec4","step","Fn","min","mmin2","v","mmin3","mmin4","mmin","rgb2cmyk","Fn","rgb","k","mmin3","float","invK","cmy","step","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hcv","rgb","P_true","P_false","P_final","Q_true","Q_false","Q_final","C","H","rgb2hcvVec4","Fn","float","vec3","vec4","HSL_EPSILON","float","rgb2hsl","Fn","rgb","HCV","rgb2hcv","L","S","vec3","rgb2hslVec4","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hsv","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","H","S","V","rgb2hsvVec4","Fn","float","vec4","select","HUE_EPSILON","rgb2hue","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","rgb2hueVec4","Fn","vec4","Fn","mat3","vec4","RGB2XYZ","rgb2xyz","rgb","rgb2xyzVec4","Fn","vec3","vec4","step","mix","xyz2lab","xyz","n","c0","c1","v","L","A","B","xyz2labVec4","rgb2lab","Fn","rgb","xyz2lab","rgb2xyz","rgb2labVec4","vec4","Fn","vec4","rgb2lch3","Fn","rgb","lab2lch","rgb2lab","rgb2lch4","lch","vec4","rgb2lch","Fn","mat3","vec3","vec4","RGB2OKLAB_A","RGB2OKLAB_B","rgb2oklab3","rgb","lms","rgb2oklab4","oklab","rgb2oklab","Fn","float","vec3","vec4","select","SRGB_EPSILON","rgb2srgbFloat","c","rgb2srgbVec3","rgb","rgb2srgbVec4","rgb2srgb","Fn","mat3","vec4","RGB2YIQ","rgb2yiq3","rgb","rgb2yiq4","yiq","rgb2yiq","Fn","mat3","vec4","RGB2YUV_HDTV","RGB2YUV_SDTV","rgb2yuv3","rgb","rgb2yuv4","yuv","rgb2yuvSDTV","rgb2yuv","Fn","float","vec3","vec4","select","SRGB_EPSILON","srgb2rgbFloat","v","srgb2rgbVec3","srgb","srgb2rgbVec4","srgb2rgb","Fn","mat3","vec4","YIQ2RGB","yiq2rgb3","yiq","yiq2rgb4","rgb","yiq2rgb","Fn","mat3","vec4","YUV2RGB_HDTV","YUV2RGB_SDTV","yuv2rgb3","yuv","yuv2rgb4","rgb","yuv2rgbSDTV","yuv2rgb","Fn","float","vec2","floor","length","clamp","min","dot","cos","normalize","If","ARROWS_TILE_SIZE","ARROWS_HEAD_ANGLE","arrowsTileCenterCoord","pos","arrowsWithResolution","p","v","resolution","scaledP","mag_v","result","dir_v","vScaled","arrow","arrows","Fn","vec3","vec4","Loop","int","Fn","Fn","clamp","dot","length","cross","lineSDF2D","st","a","b","b_to_a","to_a","h","lineSDF3D","p","lineSDF","Fn","smoothstep","Fn","length","vec2","dFdx","dFdy","smoothstep","aastep","threshold","value","derivative","afwidth","fillWithEdge","Fn","x","size","edge","smoothstep","fill","aastep","line","Fn","st","a","b","thickness","fill","lineSDF","axis","Fn","st","M","pos","thickness","result","vec4","center","axisColors","axisDirections","vec3","Loop","int","i","axisColor","axisDir","axisPoint","axisLine","line","Fn","float","Fn","smoothstep","clamp","strokeWithEdge","Fn","x","size","w","edge","d","smoothstep","clamp","stroke","aastep","bridgeFloat","Fn","c","d","s","w","float","stroke","bridgeVec2","strokeMask","bridgeVec3","bridgeVec4","bridge","Fn","float","vec2","floor","ivec2","charLookupSimple","index","isValidChar","charSimple","uv","charCode","charCoord","centerX","centerY","pattern","char","Fn","Fn","vec2","circleSDF","v","center","circleSDFBasic","circleFill","Fn","st","size","fill","circleSDFBasic","circleStroke","strokeWidth","stroke","circle","Fn","float","vec3","vec4","mix","flipFloat","v","pct","flipVec3","flipVec4","flip","Fn","Fn","abs","max","float","hexSDF","st","normalized","sqrt3_2","hexFill","Fn","st","size","fill","hexSDF","hexStroke","strokeWidth","stroke","hex","Fn","vec3","vec4","float","point2D","Fn","st","pos","color","radius","st_p","circle","circleFill","vec4","pointSimple","vec3","float","point","Fn","float","Fn","vec2","rectSDFBasic","st","normalizedSt","rectSDF","s","rectSDFUniform","rectSDFRounded","p","b","r","d","rectStroke","Fn","st","size","strokeWidth","stroke","rectSDF","float","rectStrokeUniform","rectSDFUniform","rectFill","fill","rectFillUniform","rect","Fn","Fn","max","abs","float","triSDF","st","normalized","sqrt3_2","triFill","Fn","st","size","fill","triSDF","triStroke","strokeWidth","stroke","tri","struct","vec3","AABB","Fn","aabbCentroid","box","Fn","aabbContain","box","point","Fn","diagonal","box","Fn","expand","Fn","box","value","AABB","Fn","vec2","aabbIntersect","box","rayOrigin","rayDir","tMin","tMax","t1","t2","tNear","tFar","Fn","max","abs","square","Fn","box","diag","diagonal","center","maxDim","max","abs","AABB","Fn","length","cross","area","tri","Fn","length","cross","dot","vec3","float","barycentricFromVec3","Fn","a","b","c","daa","dot","dab","dbb","dca","dcb","denom","y","z","vec3","float","barycentric","tri","barycentricFromPosition","pos","f0","f1","f2","areaValue","area","length","cross","Fn","triangleCentroid","tri","Fn","dot","length","cross","normalize","max","min","float","If","Return","closestPointWithNormal","Fn","tri","triNormal","pos","b","c","ab","ac","p","dot","ap","bcoords","barycentricFromVec3","If","bc","n","length","t","max","float","min","Return","ca","closestPoint","a","normal","normalize","cross","Fn","cross","dot","triangleContain","tri","pos","localA","localB","localC","u","v","w","Fn","cross","dot","sign","sqrt","min","Fn","lengthSq","v","distanceSq","Fn","tri","pos","a","b","c","v21","p1","v32","p2","v13","p3","nor","cross","s1","sign","dot","s2","s3","signSum","edge1","lengthSq","edge2","edge3","edgeDistance","min","planeDistance","sqrt","Fn","cross","dot","float","struct","vec3","Ray","triangleIntersect","tri","rayOrigin","rayDir","v1v0","v2v0","rov0","point","q","d","v","t","isOutside","triangleIntersectRay","ray","Fn","cross","normalize","normal","tri","Fn","length","sign","dot","signedDistanceWithNormal","Fn","tri","triNormal","pos","nearest","closestPointWithNormal","delta","distance","length","sign","dot","signedDistance","normal","struct","vec3","Triangle","Fn","vec2","vec3","vec4","Fn","fun","x","mod289","mod289Vec2","mod289Vec3","mod289Vec4","Fn","fun","v","permute","Fn","mod289","permuteVec2","mod289Vec2","permuteVec3","mod289Vec3","permuteVec4","mod289Vec4","Fn","taylorInvSqrt","r","Fn","quintic","v","v3","inner","cnoiseVec2","Fn","P","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","cnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","cnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","float","Fn","vec2","vec3","vec4","float","Fn","vec4","vec3","float","grad4","j","ip","ones","p","s","snoiseVec2","Fn","v","C","vec4","i","x0","i1","vec2","x12","mod289Vec2","p","permuteVec3","vec3","m","float","x","h","ox","a0","g","snoiseVec3","D","l","i2","x1","x2","x3","mod289Vec3","permuteVec4","ns","j","x_","y_","y","b0","b1","s0","s1","sh","a1","p0","p1","p2","p3","norm","taylorInvSqrt","snoiseVec4","i0","isX","isYZ","i3","x4","mod289Vec4","j0","permute","j1","ip","grad4","p4","m0","m1","snoise2","s","snoise3Vec3","s2","snoise3Vec4","curlVec2","Fn","p","float","dx","vec2","dy","p_x0","snoise2","p_x1","p_y0","p_y1","x","y","divisor","curlVec3","vec3","dz","snoise3Vec3","p_z0","p_z1","z","curlVec4","vec4","snoise3Vec4","Fn","float","Loop","int","Fn","vec2","vec3","float","Fn","vec2","vec3","vec4","float","RANDOM_SCALE","random","x","randomVec2","st","randomVec3","pos","randomVec4","random2Float","p","p3","random2Vec2","random2Vec3","random3Float","random3Vec2","random3Vec3","random4Float","p4","random4Vec2","random4Vec3","random4Vec4","Fn","vec2","vec3","vec4","float","srandom","x","srandomVec2","st","srandomVec3","pos","srandomVec4","dot_product","srandom2Vec2","k","srandom3Vec3","p","srandom2Vec2Tiled","tileLength","srandom3Vec3Tiled","Fn","cubic","v","cubicVec2","cubicVec3","cubicVec4","cubicFloatSlopes","slope0","slope1","b","c","v2","v3","cubicVec2Slopes","cubicVec3Slopes","cubicVec4Slopes","gnoise","Fn","x","i","f","random","float","gnoiseVec2","st","randomVec2","b","vec2","c","d","u","cubicVec2","gnoiseVec3","p","quintic","randomVec3","vec3","gnoiseVec3Tiled","tileLength","srandom3Vec3Tiled","gnoise3","FBM_OCTAVES","int","FBM_SCALE_SCALAR","FBM_AMPLITUDE_INITIAL","FBM_AMPLITUDE_SCALAR","fbmVec2","Fn","st","value","float","amplitude","coord","Loop","snoiseVec2","fbmVec3","pos","posVar","snoiseVec3","fbmVec3Tiled","p","tileLength","persistence","lacunarity","total","normalization","pVar","noiseValue","gnoiseVec3Tiled","fbm","Fn","vec3","float","gerstnerWave","Fn","_uv","_dir","_steepness","_wavelength","_time","k","PI","float","d","f","a","vec3","Fn","vec2","vec3","vec4","noised","Fn","p","i","f","u","du","ga","srandom2Vec2","vec2","gb","gc","gd","va","vb","vc","vd","vec3","noisedVec3","pos","w","srandom3Vec3","ge","gf","gg","gh","ve","vf","vg","vh","noiseValue","gradientValue","vec4","Fn","vec2","vec3","vec4","pnoise","Fn","P","rep","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","pnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","pnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","mat3","If","float","psrdnoise2D","Fn","x","period","alpha","uv","vec2","i0","f0","cmp","o1","i1","i2","v0","v1","v2","x0","x1","x2","iu","vec3","iv","If","xw","yw","hash","mod289Vec3","psi","gx","gy","g0","g1","g2","w","w2","w4","gdotx","n","dw","dn0","dn1","dn2","gradient","psrdnoise3D","M","mat3","Mi","uvw","g_","l_","g","l","o2","i3","v3","x3","vx","vec4","vy","vz","permuteVec4","theta","sz","Ct","St","sz_prime","gz","Sp","Cp","px","py","pz","Ctp","qx","qy","qz","Sa","Ca","g3","w3","dn3","psrdnoise","float","psrdnoise2","psrdnoisePeriod","psrdnoiseAlpha","psrdnoise3","psrdnoise3Period","psrdnoise3Alpha","Fn","vec2","vec3","float","If","voronoi","Fn","uv","time","i_uv","f_uv","rta","vec3","neighbor_m1m1","vec2","point_m1m1","random2Vec2","float","TAU","dist_m1m1","If","neighbor_0m1","point_0m1","dist_0m1","neighbor_1m1","point_1m1","dist_1m1","neighbor_m10","point_m10","dist_m10","neighbor_00","point_00","dist_00","neighbor_10","point_10","dist_10","neighbor_m11","point_m11","dist_m11","neighbor_01","point_01","dist_01","neighbor_11","point_11","dist_11","voronoiVec2","p","voronoiVec3","Fn","vec2","vec3","int","float","Loop","voronoise","Fn","p","u","v","k","float","i","f","a","vec2","Loop","int","yLoop","yOffset","xLoop","xOffset","g","o","random3Vec2","vec3","d","w","voronoiseVec3","zLoop","zOffset","random3Vec3","Fn","Loop","int","float","mat2","Fn","mat2","rotate2d","r","c","s","wavelet","Fn","p","phase","k","d","float","s","m","Loop","int","i","q","a","randomVec2","rotate2d","mat2","waveletVec3K","waveletVec3","waveletVec2Phase","waveletVec2","Fn","Loop","int","float","vec2","vec3","If","Fn","abs","distance","max","pow","DIST_MINKOWSKI_P","distEuclidean","a","b","distManhattan","distManhattan3","distManhattan4","distChebychev","distChebychev3","distChebychev4","distMinkowski","p","distMinkowski3","distMinkowski4","dist","worley2Vec2","Fn","p","n","f","distF1","float","distF2","off1","vec2","pos1","off2","pos2","Loop","int","i","j","g","o","random2Vec2","point","distEuclidean","If","worleyVec2","worley2Vec3","vec3","k","random3Vec3","d","worleyVec3","Fn","dFdx","dFdy","fract","float","select","Fn","map","v","iMin","iMax","mapRange","oMin","oMax","aafloor","Fn","x","afwidth","dFdx","dFdy","fx","fract","idx","select","mapRange","float","Fn","dFdx","dFdy","fract","length","mix","smoothstep","vec2","select","float","nyquist","x","width","cutoffStart","cutoffEnd","f","aafract","afwidth","fx","idx","v","aafractVec2","Fn","dFdx","dFdy","length","vec2","floor","abs","Fn","mix","smoothstep","float","nyquist","x","width","f","aamirror","Fn","x","afwidth","length","vec2","dFdx","dFdy","v","abs","floor","nyquist","Fn","select","absi","x","Fn","step","adaptiveThreshold","v","blur_v","b","adaptiveThresholdSimple","Fn","bump","x","k","bumpSimple","Fn","cubicMix","Fn","a","b","t","cubic","cubicMixVec2","cubicVec2","cubicMixVec3","cubicVec3","cubicMixVec4","cubicVec4","Fn","decimate","v","p","Fn","cos","fwidth","smoothstep","fcos","Fn","x","w","fwidth","cos","smoothstep","TWO_PI","Fn","frac","x","Fn","float","select","gain","x","k","conditionValue","Fn","dot","gaussian","d","s","dotProduct","variance","Fn","float","vec2","vec3","uint","hammersley","index","numSamples","tof","bits","hemisphereCosSample","u","phi","PI","cosTheta2","cosTheta","sinTheta","Fn","max","float","highPass","v","b","Fn","all","inside","x","min","max","insideFloat","insideVec2","v","insideVec3","insideAABB","aabb","Fn","float","invCubic","v","Fn","invQuartic","v","Fn","float","inverse","m","Fn","mirror","x","f","m","fm","Fn","max","mmax2","v","mmax3","mmax4","mmax","Fn","mix","max","step","clamp","mmix","a","b","c","mmix3","pct","mmix4","d","Fn","vec4","mod2","p","s","halfS","pShifted","c","wrapped","mod2Cell","mod2Wrap","Fn","modi","x","y","xf","yf","quotient","Fn","fract","vec3","vec4","float","PackUpscale","PackFactors","ShiftRight8","pack","v","r","Fn","parabola","x","k","Fn","pow2","v","Fn","pow3","x","Fn","pow5","x","v2","Fn","pow7","x","v2","Fn","float","powFast","a","b","Fn","mat3","vec3","float","quat2mat3","q","qxx","qyy","qzz","qxz","qxy","qyw","qzw","qyz","qxw","Fn","Fn","mat4","vec4","toMat4","m","quat2mat4","Fn","q","toMat4","quat2mat3","Fn","vec4","quatAdd","a","b","Fn","vec4","quatConj","q","Fn","vec4","quatDiv","q","s","Fn","vec4","quatIdentity","Fn","Fn","quatLengthSq","q","quatInverse","Fn","q","quatDiv","quatConj","quatLengthSq","Fn","quatLength","Fn","q","quatLengthSq","Fn","If","Return","float","quatLerp","qa","qb","t","cosHalfTheta","adjustedQb","absCosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","Fn","vec4","quatMul","q1","q2","quatMulScalar","q","s","Fn","vec4","quatNeg","q","Fn","quatNorm","Fn","q","quatDiv","quatLength","Fn","vec4","quatSub","a","b","Fn","float","quartic","v","v2","Fn","float","mat3","vec3","rotate3d","a","r","axis","s","c","oc","col1","col2","col3","Fn","mat3","vec3","rotate3dX","r","c","s","Fn","mat3","vec3","rotate3dY","r","c","s","Fn","mat3","vec3","rotate3dZ","r","c","s","Fn","float","mat4","vec4","rotate4d","a","r","axis","s","c","oc","col1","col2","col3","col4","Fn","mat4","vec4","rotate4dX","r","c","s","Fn","mat4","vec4","rotate4dY","r","c","s","Fn","mat4","vec4","rotate4dZ","r","c","s","Fn","float","MEDIUMP_FLT_MAX","saturateMediump","x","Fn","mat2","scale2d","s","scale2dVec","scale2dXY","x","y","Fn","mat3","scale3d","s","scale3dVec","Fn","mat4","scale4d","s","scale4dXYZ","x","y","z","scale4dXYZW","w","scale4dVec3","scale4dVec4","Fn","smootherstep","Fn","a","b","v","saturated","quintic","Fn","mat3","toMat3","m","Fn","mat4","translate4d","x","y","z","t","Fn","dot","vec3","vec4","float","UnpackDownscale","PackFactors","UnpackFactors","unpack8","v","f","unpack16","unpack32","unpack64","unpack128","unpack256","unpackBase","base","base3","unpack","unpackDefault","Fn","sphereSDF","p","sphereSDFRadius","s","Fn","boxSDF","p","d","boxSDFSize","b","Fn","aspect","st","s","result","Fn","mat2","atan2","cos","sin","mod","vec2","float","PI","TWO_PI","BRACKETING_ANGLE_DELTA","bracketingAxis0","dir","angle","fractional","angle0","bracketingAxis1","vAxis0","bracketingBlend","Fn","mod","floor","fract","Fn","vec4","fract","floor","sqTile","st","sqTileScale","scale","brickTile","Fn","result","mod","floor","fract","brickTileVec2","st","sqTile","brickTileFloat","s","brickTileVec2Scale","Fn","atan2","length","acos","vec2","vec3","cart2polar","st","cart2polar3D","r","phi","theta","Fn","center","v","centerFloat","x","centerVec2","centerVec3","Fn","mod","abs","checkerTile","Fn","c","mod","abs","checkerTileVec2","v","sqTile","checkerTileFloat","s","checkerTileVec2Scale","Fn","select","depth2viewZ","depth","near","far","depth2viewZOrthographic","depth2viewZCombined","orthographic","perspective","ortho","Fn","texture","float","vec3","int","Loop","If","Fn","vec3","mat3","lookAtForward","forward","up","zaxis","xaxis","yaxis","lookAt","eye","target","lookAtRoll","roll","lookAtBasic","DISPLACE_DEPTH","float","DISPLACE_PRECISION","DISPLACE_MAX_ITERATIONS","int","displace","Fn","tex","ro","rd","t","prev","vec3","curr","lastD","hmap","df","Loop","texture","If","displaceUV","uv","lookAtBasic","Fn","vec3","cos","sin","sqrt","float","equirect2xyz","Fn","uv","phi","PI","theta","TWO_PI","dir","vec3","cos","sin","multiplier","sqrt","float","Fn","mat3","Fn","vec4","mat4","translateMat3","m","translation","eulerView","Fn","position","euler","rotZ","rotate3dZ","rotX","rotate3dX","rotY","rotate3dY","identity","mat3","rotation","translateMat3","Fn","vec3","sqrt","cos","float","fisheye2xyz","Fn","uv","ndc","R","sqrt","dir","vec3","phi","PI","cos","multiplier","float","Fn","vec2","vec3","vec4","flipYVec2","v","flipYVec3","flipYVec4","Fn","vec2","vec4","float","floor","dot","select","hexTile","st","s","stYX","i","f","dotXY","dotZW","Fn","vec2","float","length","atan2","floor","min","max","cos","sin","TWO_PI","kaleidoscopeCore","coord","segmentCount","phase","uv","radius","angle","segmentAngle","adjustedAngle","finalAngle","kuv","kaleidoscope","kaleidoscopeDefault","kaleidoscopeCount","Fn","linearizeDepth","depth","near","far","normalizedDepth","Fn","vec4","mirrorTile","Fn","vec4","mirror","mirrorTileVec2","v","sqTile","mirrorTileFloat","s","mirrorTileVec2Scale","mirrorXTile","mirrorXTileVec2","mirrorYTile","mirrorYTileVec2","Fn","floor","nearest","v","res","offset","Fn","mat4","vec4","orthographic","l","r","b","t","f","width","height","depth","Fn","texture","float","vec3","int","Loop","If","Break","PARALLAXMAPPING_SCALE","PARALLAXMAPPING_NUMSEARCHES","parallaxMappingSimple","tex","V","T","initialHeight","texCoordOffset","parallaxMappingSteep","minLayers","maxLayers","numLayers","layerHeight","currentLayerHeight","dtex","currentTextureCoords","heightFromTexture","i","parallaxMappingRelief","deltaTexCoord","deltaHeight","parallaxMappingOcclusion","curLayerHeight","prevTCoords","nextH","prevH","weight","parallaxMapping","Fn","mat4","tan","float","perspective","fov","aspect","near","far","f","nf","Fn","cos","sin","vec2","vec3","polar2cart","polar","polar2cart3D","r","phi","theta","x","y","z","Fn","mix","vec2","step","ratio","v","s","wideAspect","tallAspect","Fn","vec2","floor","fract","sprite","st","grid","index","adjustedIndex","f","cell","Fn","mat3","normalize","cross","tbn","b","n","tbnFromNormal","up","t","Fn","vec3","lookAtView","Fn","position","target","up","m","lookAt","translateMat3","lookAtViewRoll","roll","lookAtRoll","lookAtViewBasic","vec3","Fn","vec2","rotate2DCenter","Fn","v","r","c","rotate2d","rotate2DBasic","vec2","rotate2DAxis","xAxis","negYAxis","Fn","vec4","rotateXVec4Center","Fn","v","r","c","rotate4dX","rotateXVec4","rotateXVec3Center","vec4","rotateXVec3","Fn","vec4","rotateYVec4Center","Fn","v","r","c","rotate4dY","rotateYVec4","rotateYVec3Center","vec4","rotateYVec3","Fn","vec4","rotateZVec4Center","Fn","v","r","c","rotate4dZ","rotateZVec4","rotateZVec3Center","vec4","rotateZVec3","Fn","vec2","unratio","st","s","Fn","uncenter","v","uncenterFloat","x","uncenterVec2","uncenterVec3","Fn","viewZ2depth","viewZ","near","far","viewZ2depthOrthographic","Fn","vec2","atan2","acos","xyz2equirect","Fn","d","vec2","atan2","PI","acos","TWO_PI","Fn","mat2","vec2","vec4","floor","fract","dot","triTile","st","transformed","f","i","fFractional","dotXY","dotZW","condition","trueValue","triTileScaled","scale","Fn","mod","abs","vec4","windmillTile","Fn","turn","a","abs","mod","vec4","rotate2DBasic","windmillTileDefault","windmillTileVec2","v","sqTile","windmillTileFloat","s","windmillTileVec2Scale"]}