typegpu 0.5.6 → 0.5.8

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.
Files changed (48) hide show
  1. package/LICENSE.md +11 -12
  2. package/README.md +13 -5
  3. package/chunk-7ACLI4JY.cjs +2 -0
  4. package/chunk-7ACLI4JY.cjs.map +1 -0
  5. package/chunk-L7HIBZAX.js +4 -0
  6. package/chunk-L7HIBZAX.js.map +1 -0
  7. package/chunk-SFECI7OX.js +2 -0
  8. package/chunk-SFECI7OX.js.map +1 -0
  9. package/chunk-SLWTVY6K.js +2 -0
  10. package/chunk-SLWTVY6K.js.map +1 -0
  11. package/chunk-TF6YPHJS.cjs +2 -0
  12. package/chunk-TF6YPHJS.cjs.map +1 -0
  13. package/chunk-V4CSEIB2.cjs +4 -0
  14. package/chunk-V4CSEIB2.cjs.map +1 -0
  15. package/data/index.cjs +1 -1
  16. package/data/index.cjs.map +1 -1
  17. package/data/index.d.cts +5 -23
  18. package/data/index.d.ts +5 -23
  19. package/data/index.js +1 -1
  20. package/index.cjs +23 -19
  21. package/index.cjs.map +1 -1
  22. package/index.d.cts +4 -1045
  23. package/index.d.ts +4 -1045
  24. package/index.js +23 -19
  25. package/index.js.map +1 -1
  26. package/package.json +2 -2
  27. package/std/index.cjs +1 -1
  28. package/std/index.cjs.map +1 -1
  29. package/std/index.d.cts +87 -18
  30. package/std/index.d.ts +87 -18
  31. package/std/index.js +1 -1
  32. package/std/index.js.map +1 -1
  33. package/tgpuComputeFn-S61HxwW-.d.cts +3063 -0
  34. package/tgpuComputeFn-S61HxwW-.d.ts +3063 -0
  35. package/attributes-B90UjSYb.d.ts +0 -159
  36. package/attributes-zljQ-iA7.d.cts +0 -159
  37. package/chunk-KJHEEZQT.js +0 -4
  38. package/chunk-KJHEEZQT.js.map +0 -1
  39. package/chunk-LB4TSIPN.cjs +0 -2
  40. package/chunk-LB4TSIPN.cjs.map +0 -1
  41. package/chunk-VTUUXD6H.cjs +0 -4
  42. package/chunk-VTUUXD6H.cjs.map +0 -1
  43. package/chunk-YVK55BVR.js +0 -2
  44. package/chunk-YVK55BVR.js.map +0 -1
  45. package/dataTypes-6k4EJeol.d.cts +0 -1405
  46. package/dataTypes-6k4EJeol.d.ts +0 -1405
  47. package/sampler-ByLNpSxj.d.ts +0 -369
  48. package/sampler-NRTAYTIW.d.cts +0 -369
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "typegpu",
3
3
  "private": false,
4
- "version": "0.5.6",
4
+ "version": "0.5.8",
5
5
  "description": "A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "homepage": "https://typegpu.com",
51
51
  "dependencies": {
52
- "tinyest": "~0.1.0",
52
+ "tinyest": "~0.1.1",
53
53
  "typed-binary": "^4.3.1"
54
54
  },
55
55
  "main": "./index.js",
package/std/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkVTUUXD6Hcjs = require('../chunk-VTUUXD6H.cjs');var he=_chunkVTUUXD6Hcjs.p.call(void 0, ()=>{throw new Error("discard() can only be used on the GPU.")},()=>({value:"discard;",dataType:_chunkVTUUXD6Hcjs.R}));var R=e=>Math.sqrt(e.x**2+e.y**2),K=e=>Math.sqrt(e.x**2+e.y**2+e.z**2),N=e=>Math.sqrt(e.x**2+e.y**2+e.z**2+e.w**2),D=(e,t)=>e.x*t.x+e.y*t.y,P=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z,G=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w,r=(e,t,n)=>Math.min(Math.max(t,e),n),b=e=>t=>_chunkVTUUXD6Hcjs.r.call(void 0, e(t.x),e(t.y)),M=e=>t=>_chunkVTUUXD6Hcjs.s.call(void 0, e(t.x),e(t.y)),q=e=>t=>_chunkVTUUXD6Hcjs.t.call(void 0, e(t.x),e(t.y)),J=e=>t=>_chunkVTUUXD6Hcjs.u.call(void 0, e(t.x),e(t.y)),A=e=>t=>_chunkVTUUXD6Hcjs.w.call(void 0, e(t.x),e(t.y),e(t.z)),V=e=>t=>_chunkVTUUXD6Hcjs.x.call(void 0, e(t.x),e(t.y),e(t.z)),L=e=>t=>_chunkVTUUXD6Hcjs.y.call(void 0, e(t.x),e(t.y),e(t.z)),j=e=>t=>_chunkVTUUXD6Hcjs.z.call(void 0, e(t.x),e(t.y),e(t.z)),I=e=>t=>_chunkVTUUXD6Hcjs.B.call(void 0, e(t.x),e(t.y),e(t.z),e(t.w)),$=e=>t=>_chunkVTUUXD6Hcjs.C.call(void 0, e(t.x),e(t.y),e(t.z),e(t.w)),X=e=>t=>_chunkVTUUXD6Hcjs.D.call(void 0, e(t.x),e(t.y),e(t.z),e(t.w)),Z=e=>t=>_chunkVTUUXD6Hcjs.E.call(void 0, e(t.x),e(t.y),e(t.z),e(t.w)),ae=e=>(t,n)=>_chunkVTUUXD6Hcjs.r.call(void 0, e(t.x,n.x),e(t.y,n.y)),se=e=>(t,n)=>_chunkVTUUXD6Hcjs.s.call(void 0, e(t.x,n.x),e(t.y,n.y)),xe=e=>(t,n)=>_chunkVTUUXD6Hcjs.t.call(void 0, e(t.x,n.x),e(t.y,n.y)),ue=e=>(t,n)=>_chunkVTUUXD6Hcjs.u.call(void 0, e(t.x,n.x),e(t.y,n.y)),re=e=>(t,n)=>_chunkVTUUXD6Hcjs.w.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),ce=e=>(t,n)=>_chunkVTUUXD6Hcjs.x.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),we=e=>(t,n)=>_chunkVTUUXD6Hcjs.y.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),ie=e=>(t,n)=>_chunkVTUUXD6Hcjs.z.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z)),ye=e=>(t,n)=>_chunkVTUUXD6Hcjs.B.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),oe=e=>(t,n)=>_chunkVTUUXD6Hcjs.C.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),Te=e=>(t,n)=>_chunkVTUUXD6Hcjs.D.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),me=e=>(t,n)=>_chunkVTUUXD6Hcjs.E.call(void 0, e(t.x,n.x),e(t.y,n.y),e(t.z,n.z),e(t.w,n.w)),c={eq:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x===t.x,e.y===t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x===t.x,e.y===t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x===t.x,e.y===t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x===t.x,e.y===t.y),"vec2<bool>":(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x===t.x,e.y===t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z),"vec3<bool>":(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w),"vec4<bool>":(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x===t.x,e.y===t.y,e.z===t.z,e.w===t.w)},lt:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x<t.x,e.y<t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x<t.x,e.y<t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x<t.x,e.y<t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x<t.x,e.y<t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x<t.x,e.y<t.y,e.z<t.z,e.w<t.w)},or:{"vec2<bool>":(e,t)=>_chunkVTUUXD6Hcjs.v.call(void 0, e.x||t.x,e.y||t.y),"vec3<bool>":(e,t)=>_chunkVTUUXD6Hcjs.A.call(void 0, e.x||t.x,e.y||t.y,e.z||t.z),"vec4<bool>":(e,t)=>_chunkVTUUXD6Hcjs.F.call(void 0, e.x||t.x,e.y||t.y,e.z||t.z,e.w||t.w)},all:{"vec2<bool>":e=>e.x&&e.y,"vec3<bool>":e=>e.x&&e.y&&e.z,"vec4<bool>":e=>e.x&&e.y&&e.z&&e.w},abs:{vec2f:b(Math.abs),vec2h:M(Math.abs),vec2i:q(Math.abs),vec2u:J(Math.abs),vec3f:A(Math.abs),vec3h:V(Math.abs),vec3i:L(Math.abs),vec3u:j(Math.abs),vec4f:I(Math.abs),vec4h:$(Math.abs),vec4i:X(Math.abs),vec4u:Z(Math.abs)},atan2:{vec2f:ae(Math.atan2),vec2h:se(Math.atan2),vec3f:re(Math.atan2),vec3h:ce(Math.atan2),vec4f:ye(Math.atan2),vec4h:oe(Math.atan2)},acos:{vec2f:b(Math.acos),vec2h:M(Math.acos),vec2i:q(Math.acos),vec2u:J(Math.acos),vec3f:A(Math.acos),vec3h:V(Math.acos),vec3i:L(Math.acos),vec3u:j(Math.acos),vec4f:I(Math.acos),vec4h:$(Math.acos),vec4i:X(Math.acos),vec4u:Z(Math.acos)},asin:{vec2f:b(Math.asin),vec2h:M(Math.asin),vec2i:q(Math.asin),vec2u:J(Math.asin),vec3f:A(Math.asin),vec3h:V(Math.asin),vec3i:L(Math.asin),vec3u:j(Math.asin),vec4f:I(Math.asin),vec4h:$(Math.asin),vec4i:X(Math.asin),vec4u:Z(Math.asin)},ceil:{vec2f:b(Math.ceil),vec2h:M(Math.ceil),vec3f:A(Math.ceil),vec3h:V(Math.ceil),vec4f:I(Math.ceil),vec4h:$(Math.ceil)},clamp:{vec2f:(e,t,n)=>_chunkVTUUXD6Hcjs.r.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y)),vec2h:(e,t,n)=>_chunkVTUUXD6Hcjs.s.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y)),vec2i:(e,t,n)=>_chunkVTUUXD6Hcjs.t.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y)),vec2u:(e,t,n)=>_chunkVTUUXD6Hcjs.u.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y)),vec3f:(e,t,n)=>_chunkVTUUXD6Hcjs.w.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z)),vec3h:(e,t,n)=>_chunkVTUUXD6Hcjs.x.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z)),vec3i:(e,t,n)=>_chunkVTUUXD6Hcjs.y.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z)),vec3u:(e,t,n)=>_chunkVTUUXD6Hcjs.z.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z)),vec4f:(e,t,n)=>_chunkVTUUXD6Hcjs.B.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z),r(e.w,t.w,n.w)),vec4h:(e,t,n)=>_chunkVTUUXD6Hcjs.C.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z),r(e.w,t.w,n.w)),vec4i:(e,t,n)=>_chunkVTUUXD6Hcjs.D.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z),r(e.w,t.w,n.w)),vec4u:(e,t,n)=>_chunkVTUUXD6Hcjs.E.call(void 0, r(e.x,t.x,n.x),r(e.y,t.y,n.y),r(e.z,t.z,n.z),r(e.w,t.w,n.w))},length:{vec2f:R,vec2h:R,vec3f:K,vec3h:K,vec4f:N,vec4h:N},add:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.r.call(void 0, e.x+t.x,e.y+t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.s.call(void 0, e.x+t.x,e.y+t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.t.call(void 0, e.x+t.x,e.y+t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.u.call(void 0, e.x+t.x,e.y+t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.y.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.z.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.B.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.C.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.D.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.E.call(void 0, e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w)},sub:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.r.call(void 0, e.x-t.x,e.y-t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.s.call(void 0, e.x-t.x,e.y-t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.t.call(void 0, e.x-t.x,e.y-t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.u.call(void 0, e.x-t.x,e.y-t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.y.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.z.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.B.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.C.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.D.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.E.call(void 0, e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w)},mulSxV:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.r.call(void 0, e*t.x,e*t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.s.call(void 0, e*t.x,e*t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.t.call(void 0, e*t.x,e*t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.u.call(void 0, e*t.x,e*t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e*t.x,e*t.y,e*t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e*t.x,e*t.y,e*t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.y.call(void 0, e*t.x,e*t.y,e*t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.z.call(void 0, e*t.x,e*t.y,e*t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.B.call(void 0, e*t.x,e*t.y,e*t.z,e*t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.C.call(void 0, e*t.x,e*t.y,e*t.z,e*t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.D.call(void 0, e*t.x,e*t.y,e*t.z,e*t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.E.call(void 0, e*t.x,e*t.y,e*t.z,e*t.w),mat2x2f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.G.call(void 0, e*n[0].x,e*n[0].y,e*n[1].x,e*n[1].y)},mat3x3f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.H.call(void 0, e*n[0].x,e*n[0].y,e*n[0].z,e*n[1].x,e*n[1].y,e*n[1].z,e*n[2].x,e*n[2].y,e*n[2].z)},mat4x4f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.I.call(void 0, e*n[0].x,e*n[0].y,e*n[0].z,e*n[0].w,e*n[1].x,e*n[1].y,e*n[1].z,e*n[1].w,e*n[2].x,e*n[2].y,e*n[2].z,e*n[2].w,e*n[3].x,e*n[3].y,e*n[3].z,e*n[3].w)}},mulVxV:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.r.call(void 0, e.x*t.x,e.y*t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.s.call(void 0, e.x*t.x,e.y*t.y),vec2i:(e,t)=>_chunkVTUUXD6Hcjs.t.call(void 0, e.x*t.x,e.y*t.y),vec2u:(e,t)=>_chunkVTUUXD6Hcjs.u.call(void 0, e.x*t.x,e.y*t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z),vec3i:(e,t)=>_chunkVTUUXD6Hcjs.y.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z),vec3u:(e,t)=>_chunkVTUUXD6Hcjs.z.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.B.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.C.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4i:(e,t)=>_chunkVTUUXD6Hcjs.D.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4u:(e,t)=>_chunkVTUUXD6Hcjs.E.call(void 0, e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),mat2x2f:(e,t)=>{let n=e.columns,a=t.columns;return _chunkVTUUXD6Hcjs.G.call(void 0, n[0].x*a[0].x+n[1].x*a[0].y,n[0].y*a[0].x+n[1].y*a[0].y,n[0].x*a[1].x+n[1].x*a[1].y,n[0].y*a[1].x+n[1].y*a[1].y)},mat3x3f:(e,t)=>{let n=e.columns,a=t.columns;return _chunkVTUUXD6Hcjs.H.call(void 0, n[0].x*a[0].x+n[1].x*a[0].y+n[2].x*a[0].z,n[0].y*a[0].x+n[1].y*a[0].y+n[2].y*a[0].z,n[0].z*a[0].x+n[1].z*a[0].y+n[2].z*a[0].z,n[0].x*a[1].x+n[1].x*a[1].y+n[2].x*a[1].z,n[0].y*a[1].x+n[1].y*a[1].y+n[2].y*a[1].z,n[0].z*a[1].x+n[1].z*a[1].y+n[2].z*a[1].z,n[0].x*a[2].x+n[1].x*a[2].y+n[2].x*a[2].z,n[0].y*a[2].x+n[1].y*a[2].y+n[2].y*a[2].z,n[0].z*a[2].x+n[1].z*a[2].y+n[2].z*a[2].z)},mat4x4f:(e,t)=>{let n=e.columns,a=t.columns;return _chunkVTUUXD6Hcjs.I.call(void 0, n[0].x*a[0].x+n[1].x*a[0].y+n[2].x*a[0].z+n[3].x*a[0].w,n[0].y*a[0].x+n[1].y*a[0].y+n[2].y*a[0].z+n[3].y*a[0].w,n[0].z*a[0].x+n[1].z*a[0].y+n[2].z*a[0].z+n[3].z*a[0].w,n[0].w*a[0].x+n[1].w*a[0].y+n[2].w*a[0].z+n[3].w*a[0].w,n[0].x*a[1].x+n[1].x*a[1].y+n[2].x*a[1].z+n[3].x*a[1].w,n[0].y*a[1].x+n[1].y*a[1].y+n[2].y*a[1].z+n[3].y*a[1].w,n[0].z*a[1].x+n[1].z*a[1].y+n[2].z*a[1].z+n[3].z*a[1].w,n[0].w*a[1].x+n[1].w*a[1].y+n[2].w*a[1].z+n[3].w*a[1].w,n[0].x*a[2].x+n[1].x*a[2].y+n[2].x*a[2].z+n[3].x*a[2].w,n[0].y*a[2].x+n[1].y*a[2].y+n[2].y*a[2].z+n[3].y*a[2].w,n[0].z*a[2].x+n[1].z*a[2].y+n[2].z*a[2].z+n[3].z*a[2].w,n[0].w*a[2].x+n[1].w*a[2].y+n[2].w*a[2].z+n[3].w*a[2].w,n[0].x*a[3].x+n[1].x*a[3].y+n[2].x*a[3].z+n[3].x*a[3].w,n[0].y*a[3].x+n[1].y*a[3].y+n[2].y*a[3].z+n[3].y*a[3].w,n[0].z*a[3].x+n[1].z*a[3].y+n[2].z*a[3].z+n[3].z*a[3].w,n[0].w*a[3].x+n[1].w*a[3].y+n[2].w*a[3].z+n[3].w*a[3].w)}},mulMxV:{mat2x2f:(e,t)=>{let n=e.columns;return _chunkVTUUXD6Hcjs.r.call(void 0, n[0].x*t.x+n[1].x*t.y,n[0].y*t.x+n[1].y*t.y)},mat3x3f:(e,t)=>{let n=e.columns;return _chunkVTUUXD6Hcjs.w.call(void 0, n[0].x*t.x+n[1].x*t.y+n[2].x*t.z,n[0].y*t.x+n[1].y*t.y+n[2].y*t.z,n[0].z*t.x+n[1].z*t.y+n[2].z*t.z)},mat4x4f:(e,t)=>{let n=e.columns;return _chunkVTUUXD6Hcjs.B.call(void 0, n[0].x*t.x+n[1].x*t.y+n[2].x*t.z+n[3].x*t.w,n[0].y*t.x+n[1].y*t.y+n[2].y*t.z+n[3].y*t.w,n[0].z*t.x+n[1].z*t.y+n[2].z*t.z+n[3].z*t.w,n[0].w*t.x+n[1].w*t.y+n[2].w*t.z+n[3].w*t.w)}},mulVxM:{mat2x2f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.r.call(void 0, e.x*n[0].x+e.y*n[0].y,e.x*n[1].x+e.y*n[1].y)},mat3x3f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.w.call(void 0, e.x*n[0].x+e.y*n[0].y+e.z*n[0].z,e.x*n[1].x+e.y*n[1].y+e.z*n[1].z,e.x*n[2].x+e.y*n[2].y+e.z*n[2].z)},mat4x4f:(e,t)=>{let n=t.columns;return _chunkVTUUXD6Hcjs.B.call(void 0, e.x*n[0].x+e.y*n[0].y+e.z*n[0].z+e.w*n[0].w,e.x*n[1].x+e.y*n[1].y+e.z*n[1].z+e.w*n[1].w,e.x*n[2].x+e.y*n[2].y+e.z*n[2].z+e.w*n[2].w,e.x*n[3].x+e.y*n[3].y+e.z*n[3].z+e.w*n[3].w)}},dot:{vec2f:D,vec2h:D,vec2i:D,vec2u:D,vec3f:P,vec3h:P,vec3i:P,vec3u:P,vec4f:G,vec4h:G,vec4i:G,vec4u:G},normalize:{vec2f:e=>{let t=R(e);return _chunkVTUUXD6Hcjs.r.call(void 0, e.x/t,e.y/t)},vec2h:e=>{let t=R(e);return _chunkVTUUXD6Hcjs.s.call(void 0, e.x/t,e.y/t)},vec2i:e=>{let t=R(e);return _chunkVTUUXD6Hcjs.t.call(void 0, e.x/t,e.y/t)},vec2u:e=>{let t=R(e);return _chunkVTUUXD6Hcjs.u.call(void 0, e.x/t,e.y/t)},vec3f:e=>{let t=K(e);return _chunkVTUUXD6Hcjs.w.call(void 0, e.x/t,e.y/t,e.z/t)},vec3h:e=>{let t=K(e);return _chunkVTUUXD6Hcjs.x.call(void 0, e.x/t,e.y/t,e.z/t)},vec3i:e=>{let t=K(e);return _chunkVTUUXD6Hcjs.y.call(void 0, e.x/t,e.y/t,e.z/t)},vec3u:e=>{let t=K(e);return _chunkVTUUXD6Hcjs.z.call(void 0, e.x/t,e.y/t,e.z/t)},vec4f:e=>{let t=N(e);return _chunkVTUUXD6Hcjs.B.call(void 0, e.x/t,e.y/t,e.z/t,e.w/t)},vec4h:e=>{let t=N(e);return _chunkVTUUXD6Hcjs.C.call(void 0, e.x/t,e.y/t,e.z/t,e.w/t)},vec4i:e=>{let t=N(e);return _chunkVTUUXD6Hcjs.D.call(void 0, e.x/t,e.y/t,e.z/t,e.w/t)},vec4u:e=>{let t=N(e);return _chunkVTUUXD6Hcjs.E.call(void 0, e.x/t,e.y/t,e.z/t,e.w/t)}},cross:{vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)},floor:{vec2f:b(Math.floor),vec2h:M(Math.floor),vec3f:A(Math.floor),vec3h:V(Math.floor),vec4f:I(Math.floor),vec4h:$(Math.floor)},max:{vec2f:ae(Math.max),vec2h:se(Math.max),vec2i:xe(Math.max),vec2u:ue(Math.max),vec3f:re(Math.max),vec3h:ce(Math.max),vec3i:we(Math.max),vec3u:ie(Math.max),vec4f:ye(Math.max),vec4h:oe(Math.max),vec4i:Te(Math.max),vec4u:me(Math.max)},min:{vec2f:ae(Math.min),vec2h:se(Math.min),vec2i:xe(Math.min),vec2u:ue(Math.min),vec3f:re(Math.min),vec3h:ce(Math.min),vec3i:we(Math.min),vec3u:ie(Math.min),vec4f:ye(Math.min),vec4h:oe(Math.min),vec4i:Te(Math.min),vec4u:me(Math.min)},pow:{vec2f:(e,t)=>_chunkVTUUXD6Hcjs.r.call(void 0, e.x**t.x,e.y**t.y),vec2h:(e,t)=>_chunkVTUUXD6Hcjs.s.call(void 0, e.x**t.x,e.y**t.y),vec3f:(e,t)=>_chunkVTUUXD6Hcjs.w.call(void 0, e.x**t.x,e.y**t.y,e.z**t.z),vec3h:(e,t)=>_chunkVTUUXD6Hcjs.x.call(void 0, e.x**t.x,e.y**t.y,e.z**t.z),vec4f:(e,t)=>_chunkVTUUXD6Hcjs.B.call(void 0, e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w),vec4h:(e,t)=>_chunkVTUUXD6Hcjs.C.call(void 0, e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w)},mix:{vec2f:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.r.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n):_chunkVTUUXD6Hcjs.r.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y),vec2h:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.s.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n):_chunkVTUUXD6Hcjs.s.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y),vec3f:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.w.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n):_chunkVTUUXD6Hcjs.w.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z),vec3h:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.x.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n):_chunkVTUUXD6Hcjs.x.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z),vec4f:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.B.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n,e.w*(1-n)+t.w*n):_chunkVTUUXD6Hcjs.B.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z,e.w*(1-n.w)+t.w*n.w),vec4h:(e,t,n)=>typeof n=="number"?_chunkVTUUXD6Hcjs.C.call(void 0, e.x*(1-n)+t.x*n,e.y*(1-n)+t.y*n,e.z*(1-n)+t.z*n,e.w*(1-n)+t.w*n):_chunkVTUUXD6Hcjs.C.call(void 0, e.x*(1-n.x)+t.x*n.x,e.y*(1-n.y)+t.y*n.y,e.z*(1-n.z)+t.z*n.z,e.w*(1-n.w)+t.w*n.w)},sin:{vec2f:b(Math.sin),vec2h:M(Math.sin),vec3f:A(Math.sin),vec3h:V(Math.sin),vec4f:I(Math.sin),vec4h:$(Math.sin)},cos:{vec2f:b(Math.cos),vec2h:M(Math.cos),vec3f:A(Math.cos),vec3h:V(Math.cos),vec4f:I(Math.cos),vec4h:$(Math.cos)},exp:{vec2f:b(Math.exp),vec2h:M(Math.exp),vec3f:A(Math.exp),vec3h:V(Math.exp),vec4f:I(Math.exp),vec4h:$(Math.exp)},fract:{vec2f:b(e=>e-Math.floor(e)),vec2h:M(e=>e-Math.floor(e)),vec3f:A(e=>e-Math.floor(e)),vec3h:V(e=>e-Math.floor(e)),vec4f:I(e=>e-Math.floor(e)),vec4h:$(e=>e-Math.floor(e))},isCloseToZero:{vec2f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec2h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec3f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec3h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec4f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t,vec4h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t},neg:{vec2f:b(e=>-e),vec2h:M(e=>-e),vec2i:q(e=>-e),vec2u:J(e=>-e),"vec2<bool>":e=>_chunkVTUUXD6Hcjs.v.call(void 0, !e.x,!e.y),vec3f:A(e=>-e),vec3h:V(e=>-e),vec3i:L(e=>-e),vec3u:j(e=>-e),"vec3<bool>":e=>_chunkVTUUXD6Hcjs.A.call(void 0, !e.x,!e.y,!e.z),vec4f:I(e=>-e),vec4h:$(e=>-e),vec4i:X(e=>-e),vec4u:Z(e=>-e),"vec4<bool>":e=>_chunkVTUUXD6Hcjs.F.call(void 0, !e.x,!e.y,!e.z,!e.w)},select:{vec2f:(e,t,n)=>_chunkVTUUXD6Hcjs.r.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y),vec2h:(e,t,n)=>_chunkVTUUXD6Hcjs.s.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y),vec2i:(e,t,n)=>_chunkVTUUXD6Hcjs.t.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y),vec2u:(e,t,n)=>_chunkVTUUXD6Hcjs.u.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y),"vec2<bool>":(e,t,n)=>_chunkVTUUXD6Hcjs.v.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y),vec3f:(e,t,n)=>_chunkVTUUXD6Hcjs.w.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3h:(e,t,n)=>_chunkVTUUXD6Hcjs.x.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3i:(e,t,n)=>_chunkVTUUXD6Hcjs.y.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec3u:(e,t,n)=>_chunkVTUUXD6Hcjs.z.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),"vec3<bool>":(e,t,n)=>_chunkVTUUXD6Hcjs.A.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z),vec4f:(e,t,n)=>_chunkVTUUXD6Hcjs.B.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4h:(e,t,n)=>_chunkVTUUXD6Hcjs.C.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4i:(e,t,n)=>_chunkVTUUXD6Hcjs.D.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),vec4u:(e,t,n)=>_chunkVTUUXD6Hcjs.E.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w),"vec4<bool>":(e,t,n)=>_chunkVTUUXD6Hcjs.F.call(void 0, n.x?t.x:e.x,n.y?t.y:e.y,n.z?t.z:e.z,n.w?t.w:e.w)}};function W(e){let t=e.dataType.type;return t==="abstractInt"||t==="abstractFloat"||t==="f32"||t==="f16"||t==="i32"||t==="u32"}var be=_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.add[e.kind](e,t),(e,t)=>({value:`(${e.value} + ${t.value})`,dataType:e.dataType})),_= exports.sub =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.sub[e.kind](e,t),(e,t)=>({value:`(${e.value} - ${t.value})`,dataType:e.dataType})),fe= exports.mul =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{if(typeof e=="number")return c.mulSxV[t.kind](e,t);if(typeof e=="object"&&typeof t=="object"&&"kind"in e&&"kind"in t){let n=!e.kind.startsWith("mat"),a=!t.kind.startsWith("mat");if(!n&&a)return c.mulMxV[e.kind](e,t);if(n&&!a)return c.mulVxM[t.kind](e,t)}return c.mulVxV[t.kind](e,t)},(e,t)=>{let n=W(e)?t.dataType:e.dataType.type.startsWith("mat")?t.dataType.type.startsWith("mat")?e.dataType:t.dataType:e.dataType;return{value:`(${e.value} * ${t.value})`,dataType:n}}),Me= exports.abs =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.abs(e):c.abs[e.kind](e),e=>({value:`abs(${e.value})`,dataType:e.dataType})),Ae= exports.atan2 =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>typeof e=="number"&&typeof t=="number"?Math.atan2(e,t):c.atan2[e.kind](e,t),(e,t)=>({value:`atan2(${e.value}, ${t.value})`,dataType:e.dataType})),Ve= exports.acos =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.acos(e):c.acos[e.kind](e),e=>({value:`acos(${e.value})`,dataType:e.dataType})),Ie= exports.asin =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.asin(e):c.asin[e.kind](e),e=>({value:`asin(${e.value})`,dataType:e.dataType})),$e= exports.ceil =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.ceil(e):c.ceil[e.kind](e),e=>({value:`ceil(${e.value})`,dataType:e.dataType})),Be= exports.clamp =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t,n)=>typeof e=="number"?Math.min(Math.max(t,e),n):c.clamp[e.kind](e,t,n),(e,t,n)=>({value:`clamp(${e.value}, ${t.value}, ${n.value})`,dataType:e.dataType})),ke= exports.cos =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.cos(e):c.cos[e.kind](e),e=>({value:`cos(${e.value})`,dataType:e.dataType})),Se= exports.cross =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.cross[e.kind](e,t),(e,t)=>({value:`cross(${e.value}, ${t.value})`,dataType:e.dataType})),de= exports.dot =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.dot[e.kind](e,t),(e,t)=>({value:`dot(${e.value}, ${t.value})`,dataType:_chunkVTUUXD6Hcjs.P})),Oe= exports.normalize =_chunkVTUUXD6Hcjs.p.call(void 0, e=>c.normalize[e.kind](e),e=>({value:`normalize(${e.value})`,dataType:e.dataType})),Fe= exports.floor =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.floor(e):c.floor[e.kind](e),e=>({value:`floor(${e.value})`,dataType:e.dataType})),Ue= exports.fract =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?e-Math.floor(e):c.fract[e.kind](e),e=>({value:`fract(${e.value})`,dataType:e.dataType})),ge= exports.length =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.abs(e):c.length[e.kind](e),e=>({value:`length(${e.value})`,dataType:_chunkVTUUXD6Hcjs.P})),Re= exports.max =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>typeof e=="number"?Math.max(e,t):c.max[e.kind](e,t),(e,t)=>({value:`max(${e.value}, ${t.value})`,dataType:e.dataType})),Ke= exports.min =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>typeof e=="number"?Math.min(e,t):c.min[e.kind](e,t),(e,t)=>({value:`min(${e.value}, ${t.value})`,dataType:e.dataType})),Ne= exports.sin =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.sin(e):c.sin[e.kind](e),e=>({value:`sin(${e.value})`,dataType:e.dataType})),We= exports.exp =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?Math.exp(e):c.exp[e.kind](e),e=>({value:`exp(${e.value})`,dataType:e.dataType})),Ee= exports.pow =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{if(typeof e=="number"&&typeof t=="number")return e**t;if(typeof e=="object"&&typeof t=="object"&&"kind"in e&&"kind"in t)return c.pow[e.kind](e,t);throw new Error("Invalid arguments to pow()")},(e,t)=>({value:`pow(${e.value}, ${t.value})`,dataType:e.dataType})),_e= exports.mix =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t,n)=>{if(typeof e=="number"){if(typeof n!="number"||typeof t!="number")throw new Error("When e1 and e2 are numbers, the blend factor must be a number.");return e*(1-n)+t*n}if(typeof e=="number"||typeof t=="number")throw new Error("e1 and e2 need to both be vectors of the same kind.");return c.mix[e.kind](e,t,n)},(e,t,n)=>({value:`mix(${e.value}, ${t.value}, ${n.value})`,dataType:e.dataType})),Ce= exports.reflect =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>_(e,fe(2*de(t,e),t)),(e,t)=>({value:`reflect(${e.value}, ${t.value})`,dataType:e.dataType})),De= exports.distance =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t):ge(_(e,t)),(e,t)=>({value:`distance(${e.value}, ${t.value})`,dataType:_chunkVTUUXD6Hcjs.P})),Pe= exports.neg =_chunkVTUUXD6Hcjs.p.call(void 0, e=>typeof e=="number"?-e:c.neg[e.kind](e),e=>({value:`-(${e.value})`,dataType:e.dataType}));function E(e){return e.dataType.type.includes("2")?_chunkVTUUXD6Hcjs.v:e.dataType.type.includes("3")?_chunkVTUUXD6Hcjs.A:_chunkVTUUXD6Hcjs.F}var Ge=_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>ve(C(e,t)),(e,t)=>({value:`all(${e.value} == ${t.value})`,dataType:_chunkVTUUXD6Hcjs.M})),C= exports.eq =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.eq[e.kind](e,t),(e,t)=>({value:`(${e.value} == ${t.value})`,dataType:E(e)})),qe= exports.ne =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>k(C(e,t)),(e,t)=>({value:`(${e.value} != ${t.value})`,dataType:E(e)})),H= exports.lt =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.lt[e.kind](e,t),(e,t)=>({value:`(${e.value} < ${t.value})`,dataType:E(e)})),Je= exports.le =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>le(H(e,t),C(e,t)),(e,t)=>({value:`(${e.value} <= ${t.value})`,dataType:E(e)})),Le= exports.gt =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>pe(k(H(e,t)),k(C(e,t))),(e,t)=>({value:`(${e.value} > ${t.value})`,dataType:E(e)})),je= exports.ge =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>k(H(e,t)),(e,t)=>({value:`(${e.value} >= ${t.value})`,dataType:E(e)})),k= exports.not =_chunkVTUUXD6Hcjs.p.call(void 0, e=>c.neg[e.kind](e),e=>({value:`!(${e.value})`,dataType:e.dataType})),le= exports.or =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>c.or[e.kind](e,t),(e,t)=>({value:`(${e.value} | ${t.value})`,dataType:e.dataType})),pe= exports.and =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>k(le(k(e),k(t))),(e,t)=>({value:`(${e.value} & ${t.value})`,dataType:e.dataType})),ve= exports.all =_chunkVTUUXD6Hcjs.p.call(void 0, e=>c.all[e.kind](e),e=>({value:`all(${e.value})`,dataType:_chunkVTUUXD6Hcjs.M})),Xe= exports.any =_chunkVTUUXD6Hcjs.p.call(void 0, e=>!ve(k(e)),e=>({value:`any(${e.value})`,dataType:_chunkVTUUXD6Hcjs.M})),Ze= exports.isCloseTo =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t,n=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<n:typeof e!="number"&&typeof t!="number"?c.isCloseToZero[e.kind](_(e,t),n):!1,(e,t,n={value:.01,dataType:_chunkVTUUXD6Hcjs.P})=>W(e)&&W(t)?{value:`(abs(f32(${e.value}) - f32(${t.value})) <= ${n.value})`,dataType:_chunkVTUUXD6Hcjs.M}:!W(e)&&!W(t)?{value:`all(abs(${e.value} - ${t.value}) <= (${e.value} - ${e.value}) + ${n.value})`,dataType:_chunkVTUUXD6Hcjs.M}:{value:"false",dataType:_chunkVTUUXD6Hcjs.M}),He= exports.select =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t,n)=>typeof n=="boolean"?n?t:e:c.select[e.kind](e,t,n),(e,t,n)=>({value:`select(${e.value}, ${t.value}, ${n.value})`,dataType:e.dataType}));var Qe=_chunkVTUUXD6Hcjs.p.call(void 0, ()=>console.warn("workgroupBarrier is a no-op outside of GPU mode."),()=>({value:"workgroupBarrier()",dataType:_chunkVTUUXD6Hcjs.R})),Ye= exports.storageBarrier =_chunkVTUUXD6Hcjs.p.call(void 0, ()=>console.warn("storageBarrier is a no-op outside of GPU mode."),()=>({value:"storageBarrier()",dataType:_chunkVTUUXD6Hcjs.R})),et= exports.textureBarrier =_chunkVTUUXD6Hcjs.p.call(void 0, ()=>console.warn("textureBarrier is a no-op outside of GPU mode."),()=>({value:"textureBarrier()",dataType:_chunkVTUUXD6Hcjs.R})),tt= exports.atomicLoad =_chunkVTUUXD6Hcjs.p.call(void 0, e=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},e=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicLoad(&${e.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),nt= exports.atomicStore =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(!_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)||e.dataType.type!=="atomic")throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`);return{value:`atomicStore(&${e.value}, ${t.value})`,dataType:_chunkVTUUXD6Hcjs.R}}),at= exports.atomicAdd =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicAdd(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),st= exports.atomicSub =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicSub(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),rt= exports.atomicMax =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicMax(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),ct= exports.atomicMin =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicMin(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),yt= exports.atomicAnd =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicAnd(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),ot= exports.atomicOr =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicOr(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),lt= exports.atomicXor =_chunkVTUUXD6Hcjs.p.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkVTUUXD6Hcjs.Y.call(void 0, e.dataType)&&e.dataType.type==="atomic")return{value:`atomicXor(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)});var vt=_chunkVTUUXD6Hcjs.p.call(void 0, e=>e.length,e=>({value:`arrayLength(&${e.value})`,dataType:_chunkVTUUXD6Hcjs.N}));var _typedbinary = require('typed-binary'); var B = _interopRequireWildcard(_typedbinary);var xt=_chunkVTUUXD6Hcjs.p.call(void 0, e=>{let t=new ArrayBuffer(4);new B.BufferWriter(t).writeUint32(e);let a=new B.BufferReader(t);return _chunkVTUUXD6Hcjs.r.call(void 0, a.readFloat16(),a.readFloat16())},e=>({value:`unpack2x16float(${e.value})`,dataType:_chunkVTUUXD6Hcjs.r})),ut= exports.pack2x16float =_chunkVTUUXD6Hcjs.p.call(void 0, e=>{let t=new ArrayBuffer(4),n=new B.BufferWriter(t);n.writeFloat16(e.x),n.writeFloat16(e.y);let a=new B.BufferReader(t);return _chunkVTUUXD6Hcjs.N.call(void 0, a.readUint32())},e=>({value:`pack2x16float(${e.value})`,dataType:_chunkVTUUXD6Hcjs.N})),wt= exports.unpack4x8unorm =_chunkVTUUXD6Hcjs.p.call(void 0, e=>{let t=new ArrayBuffer(4);new B.BufferWriter(t).writeUint32(e);let a=new B.BufferReader(t);return _chunkVTUUXD6Hcjs.B.call(void 0, a.readUint8()/255,a.readUint8()/255,a.readUint8()/255,a.readUint8()/255)},e=>({value:`unpack4x8unorm(${e.value})`,dataType:_chunkVTUUXD6Hcjs.B})),it= exports.pack4x8unorm =_chunkVTUUXD6Hcjs.p.call(void 0, e=>{let t=new ArrayBuffer(4),n=new B.BufferWriter(t);n.writeUint8(e.x*255),n.writeUint8(e.y*255),n.writeUint8(e.z*255),n.writeUint8(e.w*255);let a=new B.BufferReader(t);return _chunkVTUUXD6Hcjs.N.call(void 0, a.readUint32())},e=>({value:`pack4x8unorm(${e.value})`,dataType:_chunkVTUUXD6Hcjs.N}));var Tt=_chunkVTUUXD6Hcjs.p.call(void 0, (e,t,n,a,Q)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,n,a,Q)=>{let Y=[e,t,n];return a!==void 0&&Y.push(a),Q!==void 0&&Y.push(Q),{value:`textureSample(${Y.map(ze=>ze.value).join(", ")})`,dataType:_chunkVTUUXD6Hcjs.B}});exports.abs = Me; exports.acos = Ve; exports.add = be; exports.all = ve; exports.allEq = Ge; exports.and = pe; exports.any = Xe; exports.arrayLength = vt; exports.asin = Ie; exports.atan2 = Ae; exports.atomicAdd = at; exports.atomicAnd = yt; exports.atomicLoad = tt; exports.atomicMax = rt; exports.atomicMin = ct; exports.atomicOr = ot; exports.atomicStore = nt; exports.atomicSub = st; exports.atomicXor = lt; exports.ceil = $e; exports.clamp = Be; exports.cos = ke; exports.cross = Se; exports.discard = he; exports.distance = De; exports.dot = de; exports.eq = C; exports.exp = We; exports.floor = Fe; exports.fract = Ue; exports.ge = je; exports.gt = Le; exports.isCloseTo = Ze; exports.le = Je; exports.length = ge; exports.lt = H; exports.max = Re; exports.min = Ke; exports.mix = _e; exports.mul = fe; exports.ne = qe; exports.neg = Pe; exports.normalize = Oe; exports.not = k; exports.or = le; exports.pack2x16float = ut; exports.pack4x8unorm = it; exports.pow = Ee; exports.reflect = Ce; exports.select = He; exports.sin = Ne; exports.storageBarrier = Ye; exports.sub = _; exports.textureBarrier = et; exports.textureSample = Tt; exports.unpack2x16float = xt; exports.unpack4x8unorm = wt; exports.workgroupBarrier = Qe;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkTF6YPHJScjs = require('../chunk-TF6YPHJS.cjs');var _chunkV4CSEIB2cjs = require('../chunk-V4CSEIB2.cjs');var ce=_chunkV4CSEIB2cjs.ea.call(void 0, ()=>{throw new Error("discard() can only be used on the GPU.")},()=>_chunkV4CSEIB2cjs.ba.call(void 0, "discard;",_chunkV4CSEIB2cjs.y));function v(e){return e.dataType.type.includes("2")?_chunkV4CSEIB2cjs.qa:e.dataType.type.includes("3")?_chunkV4CSEIB2cjs.va:_chunkV4CSEIB2cjs.Aa}var xe=_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>D(g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `all(${e.value} == ${t.value})`,_chunkV4CSEIB2cjs.ha)),g= exports.eq =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.eq[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} == ${t.value})`,v(e))),ye= exports.ne =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m(g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} != ${t.value})`,v(e))),S= exports.lt =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.lt[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} < ${t.value})`,v(e))),ve= exports.le =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>$(S(e,t),g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} <= ${t.value})`,v(e))),fe= exports.gt =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>W(m(S(e,t)),m(g(e,t))),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} > ${t.value})`,v(e))),ge= exports.ge =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m(S(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} >= ${t.value})`,v(e))),m= exports.not =_chunkV4CSEIB2cjs.ea.call(void 0, e=>_chunkTF6YPHJScjs.a.neg[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `!(${e.value})`,e.dataType)),$= exports.or =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.or[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} | ${t.value})`,e.dataType)),W= exports.and =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m($(m(e),m(t))),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} & ${t.value})`,e.dataType)),D= exports.all =_chunkV4CSEIB2cjs.ea.call(void 0, e=>_chunkTF6YPHJScjs.a.all[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `all(${e.value})`,_chunkV4CSEIB2cjs.ha)),Se= exports.any =_chunkV4CSEIB2cjs.ea.call(void 0, e=>!D(m(e)),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `any(${e.value})`,_chunkV4CSEIB2cjs.ha)),be= exports.isCloseTo =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<o:_chunkV4CSEIB2cjs.z.call(void 0, e)&&_chunkV4CSEIB2cjs.z.call(void 0, t)?_chunkTF6YPHJScjs.a.isCloseToZero[e.kind](_chunkTF6YPHJScjs.e.call(void 0, e,t),o):!1,(e,t,o=_chunkV4CSEIB2cjs.ba.call(void 0, .01,_chunkV4CSEIB2cjs.ka))=>_chunkTF6YPHJScjs.b.call(void 0, e)&&_chunkTF6YPHJScjs.b.call(void 0, t)?_chunkV4CSEIB2cjs.ba.call(void 0, `(abs(f32(${e.value}) - f32(${t.value})) <= ${o.value})`,_chunkV4CSEIB2cjs.ha):!_chunkTF6YPHJScjs.b.call(void 0, e)&&!_chunkTF6YPHJScjs.b.call(void 0, t)?_chunkV4CSEIB2cjs.ba.call(void 0, `all(abs(${e.value} - ${t.value}) <= (${e.value} - ${e.value}) + ${o.value})`,_chunkV4CSEIB2cjs.ha):_chunkV4CSEIB2cjs.ba.call(void 0, "false",_chunkV4CSEIB2cjs.ha)),we= exports.select =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o)=>typeof o=="boolean"?o?t:e:_chunkTF6YPHJScjs.a.select[e.kind](e,t,o),(e,t,o)=>_chunkV4CSEIB2cjs.ba.call(void 0, `select(${e.value}, ${t.value}, ${o.value})`,e.dataType));var Ae=_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("workgroupBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "workgroupBarrier()",_chunkV4CSEIB2cjs.y)),Ie= exports.storageBarrier =_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("storageBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "storageBarrier()",_chunkV4CSEIB2cjs.y)),$e= exports.textureBarrier =_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("textureBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "textureBarrier()",_chunkV4CSEIB2cjs.y)),De= exports.atomicLoad =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},e=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicLoad(&${e.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Be= exports.atomicStore =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(!_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)||e.dataType.type!=="atomic")throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`);return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicStore(&${e.value}, ${t.value})`,_chunkV4CSEIB2cjs.y)}),y=(e,t)=>e.dataType.type==="atomic"&&e.dataType.inner.type==="i32"?[e.dataType,_chunkV4CSEIB2cjs.ja]:[e.dataType,_chunkV4CSEIB2cjs.ia],Ve= exports.atomicAdd =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicAdd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Ue= exports.atomicSub =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicSub(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),ke= exports.atomicMax =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicMax(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Ee= exports.atomicMin =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicMin(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Oe= exports.atomicAnd =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicAnd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),_e= exports.atomicOr =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicOr(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Pe= exports.atomicXor =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicXor(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y);var Ge=_chunkV4CSEIB2cjs.ea.call(void 0, e=>e.length,e=>_chunkV4CSEIB2cjs.L.call(void 0, e.dataType)&&_chunkV4CSEIB2cjs.J.call(void 0, e.dataType.inner)&&e.dataType.inner.elementCount>0?_chunkV4CSEIB2cjs.ba.call(void 0, String(e.dataType.inner.elementCount),_chunkV4CSEIB2cjs.fa):_chunkV4CSEIB2cjs.ba.call(void 0, `arrayLength(${e.value})`,_chunkV4CSEIB2cjs.ia),e=>[_chunkV4CSEIB2cjs.Ga.call(void 0, e.dataType)]);var _typedbinary = require('typed-binary'); var d = _interopRequireWildcard(_typedbinary);var Le=_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ma.call(void 0, n.readFloat16(),n.readFloat16())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `unpack2x16float(${e.value})`,_chunkV4CSEIB2cjs.ma)),Ne= exports.pack2x16float =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeFloat16(e.x),o.writeFloat16(e.y);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ia.call(void 0, n.readUint32())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `pack2x16float(${e.value})`,_chunkV4CSEIB2cjs.ia)),he= exports.unpack4x8unorm =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.wa.call(void 0, n.readUint8()/255,n.readUint8()/255,n.readUint8()/255,n.readUint8()/255)},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `unpack4x8unorm(${e.value})`,_chunkV4CSEIB2cjs.wa)),Fe= exports.pack4x8unorm =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeUint8(e.x*255),o.writeUint8(e.y*255),o.writeUint8(e.z*255),o.writeUint8(e.w*255);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ia.call(void 0, n.readUint32())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `pack4x8unorm(${e.value})`,_chunkV4CSEIB2cjs.ia));var We=_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let s=[e,t,o];return n!==void 0&&s.push(n),u!==void 0&&s.push(u),_chunkV4CSEIB2cjs.ba.call(void 0, `textureSample(${s.map(b=>b.value).join(", ")})`,_chunkV4CSEIB2cjs.wa)}),Je= exports.textureSampleLevel =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let s=[e,t,o,n];return u!==void 0&&s.push(u),_chunkV4CSEIB2cjs.ba.call(void 0, `textureSampleLevel(${s.map(b=>b.value).join(", ")})`,_chunkV4CSEIB2cjs.wa)}),Ce={u32:_chunkV4CSEIB2cjs.za,i32:_chunkV4CSEIB2cjs.ya,f32:_chunkV4CSEIB2cjs.wa},Me= exports.textureLoad =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o)=>{throw new Error("Texture loading is not supported outside of GPU mode.")},(e,t,o)=>{let n=[e,t];o!==void 0&&n.push(o);let u=e.dataType;return _chunkV4CSEIB2cjs.ba.call(void 0, `textureLoad(${n.map(s=>s.value).join(", ")})`,"texelDataType"in u?u.texelDataType:Ce[u.channelDataType.type])}),qe= exports.textureStore =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n)=>{throw new Error("Texture storing is not supported outside of GPU mode.")},(e,t,o,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `textureStore(${[e,t,o,n].filter(u=>u!==void 0).map(u=>u.value).join(", ")})`,_chunkV4CSEIB2cjs.y)),je= exports.textureDimensions =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Texture dimensions are not supported outside of GPU mode.")},(e,t)=>{let o=e.dataType.dimension;return _chunkV4CSEIB2cjs.ba.call(void 0, `textureDimensions(${e.value}${t!==void 0?`, ${t.value}`:""})`,o==="1d"?_chunkV4CSEIB2cjs.ia:o==="3d"?_chunkV4CSEIB2cjs.ua:_chunkV4CSEIB2cjs.pa)});exports.abs = _chunkTF6YPHJScjs.h; exports.acos = _chunkTF6YPHJScjs.j; exports.add = _chunkTF6YPHJScjs.d; exports.all = D; exports.allEq = xe; exports.and = W; exports.any = Se; exports.arrayLength = Ge; exports.asin = _chunkTF6YPHJScjs.k; exports.atan2 = _chunkTF6YPHJScjs.i; exports.atomicAdd = Ve; exports.atomicAnd = Oe; exports.atomicLoad = De; exports.atomicMax = ke; exports.atomicMin = Ee; exports.atomicOr = _e; exports.atomicStore = Be; exports.atomicSub = Ue; exports.atomicXor = Pe; exports.ceil = _chunkTF6YPHJScjs.l; exports.clamp = _chunkTF6YPHJScjs.m; exports.cos = _chunkTF6YPHJScjs.n; exports.cross = _chunkTF6YPHJScjs.o; exports.discard = ce; exports.distance = _chunkTF6YPHJScjs.C; exports.div = _chunkTF6YPHJScjs.g; exports.dot = _chunkTF6YPHJScjs.p; exports.eq = g; exports.exp = _chunkTF6YPHJScjs.y; exports.floor = _chunkTF6YPHJScjs.r; exports.fract = _chunkTF6YPHJScjs.s; exports.ge = ge; exports.gt = fe; exports.isCloseTo = be; exports.le = ve; exports.length = _chunkTF6YPHJScjs.t; exports.lt = S; exports.max = _chunkTF6YPHJScjs.u; exports.min = _chunkTF6YPHJScjs.v; exports.mix = _chunkTF6YPHJScjs.A; exports.mul = _chunkTF6YPHJScjs.f; exports.ne = ye; exports.neg = _chunkTF6YPHJScjs.D; exports.normalize = _chunkTF6YPHJScjs.q; exports.not = m; exports.or = $; exports.pack2x16float = Ne; exports.pack4x8unorm = Fe; exports.pow = _chunkTF6YPHJScjs.z; exports.reflect = _chunkTF6YPHJScjs.B; exports.select = we; exports.sign = _chunkTF6YPHJScjs.w; exports.sin = _chunkTF6YPHJScjs.x; exports.sqrt = _chunkTF6YPHJScjs.E; exports.storageBarrier = Ie; exports.sub = _chunkTF6YPHJScjs.e; exports.textureBarrier = $e; exports.textureDimensions = je; exports.textureLoad = Me; exports.textureSample = We; exports.textureSampleLevel = Je; exports.textureStore = qe; exports.unpack2x16float = Le; exports.unpack4x8unorm = he; exports.workgroupBarrier = Ae;
2
2
  //# sourceMappingURL=index.cjs.map
package/std/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/marcinhawryluk/Documents/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/data/vectorOps.ts","../../src/std/numeric.ts","../../src/std/boolean.ts","../../src/std/atomic.ts"],"names":["discard","createDualImpl","Void","lengthVec2","v","lengthVec3","lengthVec4","dotVec2","lhs","rhs","dotVec3","dotVec4","clamp","value","low","high","unary2f","op","a","vec2f","unary2h","vec2h","unary2i","vec2i","unary2u","vec2u","unary3f","vec3f","unary3h","vec3h","unary3i","vec3i","unary3u","vec3u","unary4f","vec4f","unary4h","vec4h","unary4i","vec4i","unary4u","vec4u","binaryComponentWise2f","b","binaryComponentWise2h","binaryComponentWise2i","binaryComponentWise2u","binaryComponentWise3f","binaryComponentWise3h","binaryComponentWise3i","binaryComponentWise3u","binaryComponentWise4f","binaryComponentWise4h","binaryComponentWise4i","binaryComponentWise4u","VectorOps","e1","e2","vec2b","vec3b","vec4b","s","m","m_","mat2x2f","mat3x3f","mat4x4f","a_","b_","len","base","exponent","e3","n","f","c","isNumeric","element","type","add","sub","mul","sIsVector","vIsVector","returnType","abs","atan2","y","x","acos","asin","ceil","cos","cross","dot","f32","normalize","floor","fract","length","max","min","sin","exp","pow","mix","reflect","distance","neg","correspondingBooleanVectorSchema","allEq","all","eq","bool","ne","not","lt","le","or","gt","and","ge","any","isCloseTo","precision","select","cond","workgroupBarrier","storageBarrier","textureBarrier","atomicLoad","isWgslData"],"mappings":"AAAA,oZAAwM,ICG3LA,EAAAA,CAAUC,iCAAAA,CAErB,CAAA,EAAa,CACX,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAC1D,CAAA,CAEA,CAAA,CAAA,EAAA,CAAO,CACL,KAAA,CAAO,UAAA,CACP,QAAA,CAAUC,mBACZ,CAAA,CACF,CAAA,CCeA,IAAMC,CAAAA,CAAcC,CAAAA,EAAU,IAAA,CAAK,IAAA,CAAKA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAC,CAAA,CACrDC,CAAAA,CAAcD,CAAAA,EAAU,IAAA,CAAK,IAAA,CAAKA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAC,CAAA,CAChEE,CAAAA,CAAcF,CAAAA,EAClB,IAAA,CAAK,IAAA,CAAKA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAK,CAAC,CAAA,CAE/CG,CAAAA,CAAU,CAACC,CAAAA,CAASC,CAAAA,CAAAA,EAAYD,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAC5DC,CAAAA,CAAU,CAACF,CAAAA,CAASC,CAAAA,CAAAA,EACxBD,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CACxCE,CAAAA,CAAU,CAACH,CAAAA,CAASC,CAAAA,CAAAA,EACxBD,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAID,CAAAA,CAAI,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAExDG,CAAAA,CAAQ,CAACC,CAAAA,CAAeC,CAAAA,CAAaC,CAAAA,CAAAA,EACzC,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAKD,CAAK,CAAA,CAAGE,CAAI,CAAA,CAK/BC,CAAAA,CAAWC,CAAAA,EAAiBC,CAAAA,EAAgBC,iCAAAA,CAAMF,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAClEE,CAAAA,CAAWH,CAAAA,EAAiBC,CAAAA,EAAgBG,iCAAAA,CAAMJ,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAClEI,CAAAA,CAAWL,CAAAA,EAAiBC,CAAAA,EAAgBK,iCAAAA,CAAMN,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAClEM,CAAAA,CAAWP,CAAAA,EAAiBC,CAAAA,EAAgBO,iCAAAA,CAAMR,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAElEQ,CAAAA,CAAWT,CAAAA,EAAiBC,CAAAA,EAChCS,iCAAAA,CAAMV,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE3BU,CAAAA,CAAWX,CAAAA,EAAiBC,CAAAA,EAChCW,iCAAAA,CAAMZ,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE3BY,CAAAA,CAAWb,CAAAA,EAAiBC,CAAAA,EAChCa,iCAAAA,CAAMd,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE3Bc,CAAAA,CAAWf,CAAAA,EAAiBC,CAAAA,EAChCe,iCAAAA,CAAMhB,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE3BgB,CAAAA,CAAWjB,CAAAA,EAAiBC,CAAAA,EAChCiB,iCAAAA,CAAMlB,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAEpCkB,CAAAA,CAAWnB,CAAAA,EAAiBC,CAAAA,EAChCmB,iCAAAA,CAAMpB,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAEpCoB,CAAAA,CAAWrB,CAAAA,EAAiBC,CAAAA,EAChCqB,iCAAAA,CAAMtB,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAEpCsB,CAAAA,CAAWvB,CAAAA,EAAiBC,CAAAA,EAChCuB,iCAAAA,CAAMxB,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAA,CAAGD,CAAAA,CAAGC,CAAAA,CAAE,CAAC,CAAC,CAAA,CAEpCwB,EAAAA,CAAyBzB,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DxB,iCAAAA,CAAMF,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE5BC,EAAAA,CAAyB3B,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DtB,iCAAAA,CAAMJ,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE5BE,EAAAA,CAAyB5B,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DpB,iCAAAA,CAAMN,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE5BG,EAAAA,CAAyB7B,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DlB,iCAAAA,CAAMR,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE5BI,EAAAA,CAAyB9B,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DhB,iCAAAA,CAAMV,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE1CK,EAAAA,CAAyB/B,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5Dd,iCAAAA,CAAMZ,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE1CM,EAAAA,CAAyBhC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DZ,iCAAAA,CAAMd,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE1CO,EAAAA,CAAyBjC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DV,iCAAAA,CAAMhB,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAE1CQ,EAAAA,CAAyBlC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DR,iCAAAA,CAAMlB,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAExDS,EAAAA,CAAyBnC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DN,iCAAAA,CAAMpB,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAExDU,EAAAA,CAAyBpC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DJ,iCAAAA,CAAMtB,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAExDW,EAAAA,CAAyBrC,CAAAA,EAAiB,CAACC,CAAAA,CAAayB,CAAAA,CAAAA,EAC5DF,iCAAAA,CAAMxB,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAA,CAAG1B,CAAAA,CAAGC,CAAAA,CAAE,CAAA,CAAGyB,CAAAA,CAAE,CAAC,CAAC,CAAA,CAEjDY,CAAAA,CAAY,CACvB,EAAA,CAAI,CACF,KAAA,CAAO,CAACC,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACzE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACzE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACzE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACzE,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BC,iCAAAA,CAAMF,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAEpC,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACnD,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACnD,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACnD,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CACnD,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BE,iCAAAA,CAAMH,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAEnD,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAClE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAClE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAClE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CAAA,CAClE,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BG,iCAAAA,CAAMJ,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,GAAMC,CAAAA,CAAG,CAAC,CACpE,CAAA,CAYA,EAAA,CAAI,CACF,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CACrE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CACrE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CACrE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAAiBC,iCAAAA,CAAMF,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAErE,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC7C,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC7C,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC7C,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBE,iCAAAA,CAAMH,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAE7C,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC1D,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC1D,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAC1D,KAAA,CAAO,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EACpBG,iCAAAA,CAAMJ,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAC5D,CAAA,CAYA,EAAA,CAAI,CACF,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BC,iCAAAA,CAAMF,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAC,CAAA,CAClC,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BE,iCAAAA,CAAMH,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAC,CAAA,CAChD,YAAA,CAAc,CAACD,CAAAA,CAAcC,CAAAA,CAAAA,EAC3BG,iCAAAA,CAAMJ,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAG,CAAA,EAAKC,CAAAA,CAAG,CAAC,CAChE,CAAA,CAKA,GAAA,CAAK,CACH,YAAA,CAAe,CAAA,EAAgB,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CAAA,CACxC,YAAA,CAAe,CAAA,EAAgB,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CAAA,CAC/C,YAAA,CAAe,CAAA,EAAgB,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CAAA,EAAK,CAAA,CAAE,CACxD,CAAA,CAEA,GAAA,CAAK,CACH,KAAA,CAAOzC,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOI,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CAEvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CAEvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACvB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,GAAG,CACzB,CAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAOE,EAAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,CACvC,KAAA,CAAOE,EAAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,CAEvC,KAAA,CAAOG,EAAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,CACvC,KAAA,CAAOC,EAAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,CAEvC,KAAA,CAAOG,EAAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,CACvC,KAAA,CAAOC,EAAAA,CAAsB,IAAA,CAAK,KAAK,CACzC,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOpC,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOI,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAC1B,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOxB,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOI,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAC1B,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOxB,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOI,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOM,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAExB,KAAA,CAAOM,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CACxB,KAAA,CAAOE,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAC1B,CAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAO,CAAChC,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCI,iCAAAA,CAAMP,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CAAGH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAC,CAAA,CAC5D,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCM,iCAAAA,CAAMT,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CAAGH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAC,CAAA,CAC5D,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCQ,iCAAAA,CAAMX,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CAAGH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAC,CAAA,CAC5D,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCU,iCAAAA,CAAMb,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CAAGH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAC,CAAA,CAE5D,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCY,iCAAAA,CACEf,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCc,iCAAAA,CACEjB,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCgB,iCAAAA,CACEnB,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCkB,iCAAAA,CACErB,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CAEF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCoB,iCAAAA,CACEvB,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCsB,iCAAAA,CACEzB,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClCwB,iCAAAA,CACE3B,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CAAA,CACF,KAAA,CAAO,CAACX,CAAAA,CAAaU,CAAAA,CAAeC,CAAAA,CAAAA,EAClC0B,iCAAAA,CACE7B,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAAA,CACxBH,CAAAA,CAAMR,CAAAA,CAAE,CAAA,CAAGU,CAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAK,CAAC,CAC1B,CACJ,CAAA,CAEA,MAAA,CAAQ,CACN,KAAA,CAAOZ,CAAAA,CACP,KAAA,CAAOA,CAAAA,CAEP,KAAA,CAAOE,CAAAA,CACP,KAAA,CAAOA,CAAAA,CAEP,KAAA,CAAOC,CAAAA,CACP,KAAA,CAAOA,CACT,CAAA,CAEA,GAAA,CAAK,CACH,KAAA,CAAO,CAACY,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBxB,iCAAAA,CAAMD,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBtB,iCAAAA,CAAMH,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBpB,iCAAAA,CAAML,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBlB,iCAAAA,CAAMP,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBhB,iCAAAA,CAAMT,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBd,iCAAAA,CAAMX,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBZ,iCAAAA,CAAMb,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBV,iCAAAA,CAAMf,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBR,iCAAAA,CAAMjB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBN,iCAAAA,CAAMnB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBJ,iCAAAA,CAAMrB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBF,iCAAAA,CAAMvB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CACpD,CAAA,CAEA,GAAA,CAAK,CACH,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBxB,iCAAAA,CAAMD,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBtB,iCAAAA,CAAMH,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBpB,iCAAAA,CAAML,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBlB,iCAAAA,CAAMP,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBhB,iCAAAA,CAAMT,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBd,iCAAAA,CAAMX,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBZ,iCAAAA,CAAMb,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBV,iCAAAA,CAAMf,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBR,iCAAAA,CAAMjB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBN,iCAAAA,CAAMnB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBJ,iCAAAA,CAAMrB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBF,iCAAAA,CAAMvB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CACpD,CAAA,CAEA,MAAA,CAAQ,CACN,KAAA,CAAO,CAACkB,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgBe,iCAAAA,CAAM0C,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CACzD,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgBiB,iCAAAA,CAAMwC,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CACzD,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgBmB,iCAAAA,CAAMsC,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CACzD,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgBqB,iCAAAA,CAAMoC,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAEzD,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgBuB,iCAAAA,CAAMkC,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAClE,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgByB,iCAAAA,CAAMgC,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAClE,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgB2B,iCAAAA,CAAM8B,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAClE,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EAAgB6B,iCAAAA,CAAM4B,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAElE,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EACjB+B,iCAAAA,CAAM0B,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAC1C,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EACjBiC,iCAAAA,CAAMwB,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAC1C,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EACjBmC,iCAAAA,CAAMsB,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAC1C,KAAA,CAAO,CAACyD,CAAAA,CAAWzD,CAAAA,CAAAA,EACjBqC,iCAAAA,CAAMoB,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAA,CAAGyD,CAAAA,CAAIzD,CAAAA,CAAE,CAAC,CAAA,CAE1C,OAAA,CAAS,CAACyD,CAAAA,CAAWC,CAAAA,CAAAA,EAAkB,CACrC,IAAMC,CAAAA,CAAKD,CAAAA,CAAE,OAAA,CACb,OAAOE,iCAAAA,CAAQH,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAGF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAGF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAGF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAC,CACnE,CAAA,CAEA,OAAA,CAAS,CAACF,CAAAA,CAAWC,CAAAA,CAAAA,EAAkB,CACrC,IAAMC,CAAAA,CAAKD,CAAAA,CAAE,OAAA,CACb,OAAOG,iCAAAA,CACLJ,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CACZ,CACF,CAAA,CAEA,OAAA,CAAS,CAACF,CAAAA,CAAWC,CAAAA,CAAAA,EAAkB,CACrC,IAAMC,CAAAA,CAAKD,CAAAA,CAAE,OAAA,CACb,OAAOI,iCAAAA,CACLL,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACVF,CAAAA,CAAIE,CAAAA,CAAG,CAAC,CAAA,CAAE,CACZ,CACF,CACF,CAAA,CAKA,MAAA,CAAQ,CACN,KAAA,CAAO,CAAC7C,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBxB,iCAAAA,CAAMD,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBtB,iCAAAA,CAAMH,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBpB,iCAAAA,CAAML,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBlB,iCAAAA,CAAMP,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE/D,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBhB,iCAAAA,CAAMT,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBd,iCAAAA,CAAMX,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBZ,iCAAAA,CAAMb,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAC1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EAAgBV,iCAAAA,CAAMf,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAE1E,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBR,iCAAAA,CAAMjB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBN,iCAAAA,CAAMnB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBJ,iCAAAA,CAAMrB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAClD,KAAA,CAAO,CAACzB,CAAAA,CAAayB,CAAAA,CAAAA,EACnBF,iCAAAA,CAAMvB,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAA,CAAGzB,CAAAA,CAAE,CAAA,CAAIyB,CAAAA,CAAE,CAAC,CAAA,CAElD,OAAA,CAAS,CAACzB,CAAAA,CAAeyB,CAAAA,CAAAA,EAAkB,CACzC,IAAMwB,CAAAA,CAAKjD,CAAAA,CAAE,OAAA,CACPkD,CAAAA,CAAKzB,CAAAA,CAAE,OAAA,CAEb,OAAOqB,iCAAAA,CACLG,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACpCD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAEpCD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACpCD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CACtC,CACF,CAAA,CAEA,OAAA,CAAS,CAAClD,CAAAA,CAAeyB,CAAAA,CAAAA,EAAkB,CACzC,IAAMwB,CAAAA,CAAKjD,CAAAA,CAAE,OAAA,CACPkD,CAAAA,CAAKzB,CAAAA,CAAE,OAAA,CAEb,OAAOsB,iCAAAA,CACLE,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAExDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAExDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CA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","file":"/Users/marcinhawryluk/Documents/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"import { Void } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\n\nexport const discard = createDualImpl(\n // CPU\n (): never => {\n throw new Error('discard() can only be used on the GPU.');\n },\n // GPU\n () => ({\n value: 'discard;',\n dataType: Void,\n }),\n);\n","import { mat2x2f, mat3x3f, mat4x4f } from './matrix.ts';\nimport {\n vec2b,\n vec2f,\n vec2h,\n vec2i,\n vec2u,\n vec3b,\n vec3f,\n vec3h,\n vec3i,\n vec3u,\n vec4b,\n vec4f,\n vec4h,\n vec4i,\n vec4u,\n} from './vector.ts';\nimport type * as wgsl from './wgslTypes.ts';\nimport type { VecKind } from './wgslTypes.ts';\n\ntype vBase = { kind: VecKind };\ntype v2 = wgsl.v2f | wgsl.v2h | wgsl.v2i | wgsl.v2u;\ntype v3 = wgsl.v3f | wgsl.v3h | wgsl.v3i | wgsl.v3u;\ntype v4 = wgsl.v4f | wgsl.v4h | wgsl.v4i | wgsl.v4u;\n\ntype MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';\n\nconst lengthVec2 = (v: v2) => Math.sqrt(v.x ** 2 + v.y ** 2);\nconst lengthVec3 = (v: v3) => Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2);\nconst lengthVec4 = (v: v4) =>\n Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2 + v.w ** 2);\n\nconst dotVec2 = (lhs: v2, rhs: v2) => lhs.x * rhs.x + lhs.y * rhs.y;\nconst dotVec3 = (lhs: v3, rhs: v3) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z;\nconst dotVec4 = (lhs: v4, rhs: v4) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z + lhs.w * rhs.w;\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(low, value), high);\n\ntype UnaryOp = (a: number) => number;\ntype BinaryOp = (a: number, b: number) => number;\n\nconst unary2f = (op: UnaryOp) => (a: wgsl.v2f) => vec2f(op(a.x), op(a.y));\nconst unary2h = (op: UnaryOp) => (a: wgsl.v2h) => vec2h(op(a.x), op(a.y));\nconst unary2i = (op: UnaryOp) => (a: wgsl.v2i) => vec2i(op(a.x), op(a.y));\nconst unary2u = (op: UnaryOp) => (a: wgsl.v2u) => vec2u(op(a.x), op(a.y));\n\nconst unary3f = (op: UnaryOp) => (a: wgsl.v3f) =>\n vec3f(op(a.x), op(a.y), op(a.z));\n\nconst unary3h = (op: UnaryOp) => (a: wgsl.v3h) =>\n vec3h(op(a.x), op(a.y), op(a.z));\n\nconst unary3i = (op: UnaryOp) => (a: wgsl.v3i) =>\n vec3i(op(a.x), op(a.y), op(a.z));\n\nconst unary3u = (op: UnaryOp) => (a: wgsl.v3u) =>\n vec3u(op(a.x), op(a.y), op(a.z));\n\nconst unary4f = (op: UnaryOp) => (a: wgsl.v4f) =>\n vec4f(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4h = (op: UnaryOp) => (a: wgsl.v4h) =>\n vec4h(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4i = (op: UnaryOp) => (a: wgsl.v4i) =>\n vec4i(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4u = (op: UnaryOp) => (a: wgsl.v4u) =>\n vec4u(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst binaryComponentWise2f = (op: BinaryOp) => (a: wgsl.v2f, b: wgsl.v2f) =>\n vec2f(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2h = (op: BinaryOp) => (a: wgsl.v2h, b: wgsl.v2h) =>\n vec2h(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2i = (op: BinaryOp) => (a: wgsl.v2i, b: wgsl.v2i) =>\n vec2i(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2u = (op: BinaryOp) => (a: wgsl.v2u, b: wgsl.v2u) =>\n vec2u(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise3f = (op: BinaryOp) => (a: wgsl.v3f, b: wgsl.v3f) =>\n vec3f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3h = (op: BinaryOp) => (a: wgsl.v3h, b: wgsl.v3h) =>\n vec3h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3i = (op: BinaryOp) => (a: wgsl.v3i, b: wgsl.v3i) =>\n vec3i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3u = (op: BinaryOp) => (a: wgsl.v3u, b: wgsl.v3u) =>\n vec3u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise4f = (op: BinaryOp) => (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4h = (op: BinaryOp) => (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4i = (op: BinaryOp) => (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4u = (op: BinaryOp) => (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nexport const VectorOps = {\n eq: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x === e2.x, e1.y === e2.y),\n 'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n vec2b(e1.x === e2.x, e1.y === e2.y),\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n 'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n 'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyVecInstance>(\n e1: T,\n e2: T,\n ) => T extends wgsl.AnyVec2Instance\n ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance\n ? wgsl.v3b\n : wgsl.v4b\n >,\n\n lt: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x < e2.x, e1.y < e2.y),\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyNumericVecInstance>(\n e1: T,\n e2: T,\n ) => T extends wgsl.AnyVec2Instance\n ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance\n ? wgsl.v3b\n : wgsl.v4b\n >,\n\n or: {\n 'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n vec2b(e1.x || e2.x, e1.y || e2.y),\n 'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n vec3b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z),\n 'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n vec4b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z, e1.w || e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyBooleanVecInstance>(e1: T, e2: T) => T\n >,\n\n all: {\n 'vec2<bool>': (e: wgsl.v2b) => e.x && e.y,\n 'vec3<bool>': (e: wgsl.v3b) => e.x && e.y && e.z,\n 'vec4<bool>': (e: wgsl.v4b) => e.x && e.y && e.z && e.w,\n } as Record<VecKind, (v: wgsl.AnyBooleanVecInstance) => boolean>,\n\n abs: {\n vec2f: unary2f(Math.abs),\n vec2h: unary2h(Math.abs),\n vec2i: unary2i(Math.abs),\n vec2u: unary2u(Math.abs),\n\n vec3f: unary3f(Math.abs),\n vec3h: unary3h(Math.abs),\n vec3i: unary3i(Math.abs),\n vec3u: unary3u(Math.abs),\n\n vec4f: unary4f(Math.abs),\n vec4h: unary4h(Math.abs),\n vec4i: unary4i(Math.abs),\n vec4u: unary4u(Math.abs),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n atan2: {\n vec2f: binaryComponentWise2f(Math.atan2),\n vec2h: binaryComponentWise2h(Math.atan2),\n\n vec3f: binaryComponentWise3f(Math.atan2),\n vec3h: binaryComponentWise3h(Math.atan2),\n\n vec4f: binaryComponentWise4f(Math.atan2),\n vec4h: binaryComponentWise4h(Math.atan2),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n acos: {\n vec2f: unary2f(Math.acos),\n vec2h: unary2h(Math.acos),\n vec2i: unary2i(Math.acos),\n vec2u: unary2u(Math.acos),\n\n vec3f: unary3f(Math.acos),\n vec3h: unary3h(Math.acos),\n vec3i: unary3i(Math.acos),\n vec3u: unary3u(Math.acos),\n\n vec4f: unary4f(Math.acos),\n vec4h: unary4h(Math.acos),\n vec4i: unary4i(Math.acos),\n vec4u: unary4u(Math.acos),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n asin: {\n vec2f: unary2f(Math.asin),\n vec2h: unary2h(Math.asin),\n vec2i: unary2i(Math.asin),\n vec2u: unary2u(Math.asin),\n\n vec3f: unary3f(Math.asin),\n vec3h: unary3h(Math.asin),\n vec3i: unary3i(Math.asin),\n vec3u: unary3u(Math.asin),\n\n vec4f: unary4f(Math.asin),\n vec4h: unary4h(Math.asin),\n vec4i: unary4i(Math.asin),\n vec4u: unary4u(Math.asin),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n ceil: {\n vec2f: unary2f(Math.ceil),\n vec2h: unary2h(Math.ceil),\n\n vec3f: unary3f(Math.ceil),\n vec3h: unary3h(Math.ceil),\n\n vec4f: unary4f(Math.ceil),\n vec4h: unary4h(Math.ceil),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n clamp: {\n vec2f: (v: wgsl.v2f, low: wgsl.v2f, high: wgsl.v2f) =>\n vec2f(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2h: (v: wgsl.v2h, low: wgsl.v2h, high: wgsl.v2h) =>\n vec2h(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2i: (v: wgsl.v2i, low: wgsl.v2i, high: wgsl.v2i) =>\n vec2i(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2u: (v: wgsl.v2u, low: wgsl.v2u, high: wgsl.v2u) =>\n vec2u(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n\n vec3f: (v: wgsl.v3f, low: wgsl.v3f, high: wgsl.v3f) =>\n vec3f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3h: (v: wgsl.v3h, low: wgsl.v3h, high: wgsl.v3h) =>\n vec3h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3i: (v: wgsl.v3i, low: wgsl.v3i, high: wgsl.v3f) =>\n vec3i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3u: (v: wgsl.v3u, low: wgsl.v3u, high: wgsl.v3f) =>\n vec3u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n\n vec4f: (v: wgsl.v4f, low: wgsl.v4f, high: wgsl.v4f) =>\n vec4f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4h: (v: wgsl.v4h, low: wgsl.v4h, high: wgsl.v4h) =>\n vec4h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4i: (v: wgsl.v4i, low: wgsl.v4i, high: wgsl.v4i) =>\n vec4i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4u: (v: wgsl.v4u, low: wgsl.v4u, high: wgsl.v4u) =>\n vec4u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n } as Record<VecKind, <T extends vBase>(v: T, low: T, high: T) => T>,\n\n length: {\n vec2f: lengthVec2,\n vec2h: lengthVec2,\n\n vec3f: lengthVec3,\n vec3h: lengthVec3,\n\n vec4f: lengthVec4,\n vec4h: lengthVec4,\n } as Record<VecKind, (v: vBase) => number>,\n\n add: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x + b.x, a.y + b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x + b.x, a.y + b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x + b.x, a.y + b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x + b.x, a.y + b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x + b.x, a.y + b.y, a.z + b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n sub: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x - b.x, a.y - b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x - b.x, a.y - b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x - b.x, a.y - b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x - b.x, a.y - b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x - b.x, a.y - b.y, a.z - b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n mulSxV: {\n vec2f: (s: number, v: wgsl.v2f) => vec2f(s * v.x, s * v.y),\n vec2h: (s: number, v: wgsl.v2h) => vec2h(s * v.x, s * v.y),\n vec2i: (s: number, v: wgsl.v2i) => vec2i(s * v.x, s * v.y),\n vec2u: (s: number, v: wgsl.v2u) => vec2u(s * v.x, s * v.y),\n\n vec3f: (s: number, v: wgsl.v3f) => vec3f(s * v.x, s * v.y, s * v.z),\n vec3h: (s: number, v: wgsl.v3h) => vec3h(s * v.x, s * v.y, s * v.z),\n vec3i: (s: number, v: wgsl.v3i) => vec3i(s * v.x, s * v.y, s * v.z),\n vec3u: (s: number, v: wgsl.v3u) => vec3u(s * v.x, s * v.y, s * v.z),\n\n vec4f: (s: number, v: wgsl.v4f) =>\n vec4f(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4h: (s: number, v: wgsl.v4h) =>\n vec4h(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4i: (s: number, v: wgsl.v4i) =>\n vec4i(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4u: (s: number, v: wgsl.v4u) =>\n vec4u(s * v.x, s * v.y, s * v.z, s * v.w),\n\n mat2x2f: (s: number, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return mat2x2f(s * m_[0].x, s * m_[0].y, s * m_[1].x, s * m_[1].y);\n },\n\n mat3x3f: (s: number, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return mat3x3f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n );\n },\n\n mat4x4f: (s: number, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return mat4x4f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n s * m_[0].w,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n s * m_[1].w,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n s * m_[2].w,\n\n s * m_[3].x,\n s * m_[3].y,\n s * m_[3].z,\n s * m_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(s: number, v: T) => T\n >,\n\n mulVxV: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x * b.x, a.y * b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x * b.x, a.y * b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x * b.x, a.y * b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x * b.x, a.y * b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x * b.x, a.y * b.y, a.z * b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n\n mat2x2f: (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n const b_ = b.columns as [wgsl.v2f, wgsl.v2f];\n\n return mat2x2f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y,\n );\n },\n\n mat3x3f: (a: wgsl.m3x3f, b: wgsl.m3x3f) => {\n const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n const b_ = b.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n\n return mat3x3f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y + a_[2].x * b_[0].z,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y + a_[2].y * b_[0].z,\n a_[0].z * b_[0].x + a_[1].z * b_[0].y + a_[2].z * b_[0].z,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y + a_[2].x * b_[1].z,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y + a_[2].y * b_[1].z,\n a_[0].z * b_[1].x + a_[1].z * b_[1].y + a_[2].z * b_[1].z,\n\n a_[0].x * b_[2].x + a_[1].x * b_[2].y + a_[2].x * b_[2].z,\n a_[0].y * b_[2].x + a_[1].y * b_[2].y + a_[2].y * b_[2].z,\n a_[0].z * b_[2].x + a_[1].z * b_[2].y + a_[2].z * b_[2].z,\n );\n },\n\n mat4x4f: (a: wgsl.m4x4f, b: wgsl.m4x4f) => {\n const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n const b_ = b.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n\n return mat4x4f(\n a_[0].x * b_[0].x +\n a_[1].x * b_[0].y +\n a_[2].x * b_[0].z +\n a_[3].x * b_[0].w,\n a_[0].y * b_[0].x +\n a_[1].y * b_[0].y +\n a_[2].y * b_[0].z +\n a_[3].y * b_[0].w,\n a_[0].z * b_[0].x +\n a_[1].z * b_[0].y +\n a_[2].z * b_[0].z +\n a_[3].z * b_[0].w,\n a_[0].w * b_[0].x +\n a_[1].w * b_[0].y +\n a_[2].w * b_[0].z +\n a_[3].w * b_[0].w,\n\n a_[0].x * b_[1].x +\n a_[1].x * b_[1].y +\n a_[2].x * b_[1].z +\n a_[3].x * b_[1].w,\n a_[0].y * b_[1].x +\n a_[1].y * b_[1].y +\n a_[2].y * b_[1].z +\n a_[3].y * b_[1].w,\n a_[0].z * b_[1].x +\n a_[1].z * b_[1].y +\n a_[2].z * b_[1].z +\n a_[3].z * b_[1].w,\n a_[0].w * b_[1].x +\n a_[1].w * b_[1].y +\n a_[2].w * b_[1].z +\n a_[3].w * b_[1].w,\n\n a_[0].x * b_[2].x +\n a_[1].x * b_[2].y +\n a_[2].x * b_[2].z +\n a_[3].x * b_[2].w,\n a_[0].y * b_[2].x +\n a_[1].y * b_[2].y +\n a_[2].y * b_[2].z +\n a_[3].y * b_[2].w,\n a_[0].z * b_[2].x +\n a_[1].z * b_[2].y +\n a_[2].z * b_[2].z +\n a_[3].z * b_[2].w,\n a_[0].w * b_[2].x +\n a_[1].w * b_[2].y +\n a_[2].w * b_[2].z +\n a_[3].w * b_[2].w,\n\n a_[0].x * b_[3].x +\n a_[1].x * b_[3].y +\n a_[2].x * b_[3].z +\n a_[3].x * b_[3].w,\n a_[0].y * b_[3].x +\n a_[1].y * b_[3].y +\n a_[2].y * b_[3].z +\n a_[3].y * b_[3].w,\n a_[0].z * b_[3].x +\n a_[1].z * b_[3].y +\n a_[2].z * b_[3].z +\n a_[3].z * b_[3].w,\n a_[0].w * b_[3].x +\n a_[1].w * b_[3].y +\n a_[2].w * b_[3].z +\n a_[3].w * b_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T\n >,\n\n mulMxV: {\n mat2x2f: (m: wgsl.m2x2f, v: wgsl.v2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n m_[0].x * v.x + m_[1].x * v.y,\n m_[0].y * v.x + m_[1].y * v.y,\n );\n },\n\n mat3x3f: (m: wgsl.m3x3f, v: wgsl.v3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z,\n );\n },\n\n mat4x4f: (m: wgsl.m4x4f, v: wgsl.v4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z + m_[3].x * v.w,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z + m_[3].y * v.w,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z + m_[3].z * v.w,\n m_[0].w * v.x + m_[1].w * v.y + m_[2].w * v.z + m_[3].w * v.w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n m: T,\n v: wgsl.vBaseForMat<T>,\n ) => wgsl.vBaseForMat<T>\n >,\n\n mulVxM: {\n mat2x2f: (v: wgsl.v2f, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n v.x * m_[0].x + v.y * m_[0].y,\n v.x * m_[1].x + v.y * m_[1].y,\n );\n },\n\n mat3x3f: (v: wgsl.v3f, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z,\n );\n },\n\n mat4x4f: (v: wgsl.v4f, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z + v.w * m_[0].w,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z + v.w * m_[1].w,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z + v.w * m_[2].w,\n v.x * m_[3].x + v.y * m_[3].y + v.z * m_[3].z + v.w * m_[3].w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n v: wgsl.vBaseForMat<T>,\n m: T,\n ) => wgsl.vBaseForMat<T>\n >,\n\n dot: {\n vec2f: dotVec2,\n vec2h: dotVec2,\n vec2i: dotVec2,\n vec2u: dotVec2,\n vec3f: dotVec3,\n vec3h: dotVec3,\n vec3i: dotVec3,\n vec3u: dotVec3,\n vec4f: dotVec4,\n vec4h: dotVec4,\n vec4i: dotVec4,\n vec4u: dotVec4,\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>,\n\n normalize: {\n vec2f: (v: wgsl.v2f) => {\n const len = lengthVec2(v);\n return vec2f(v.x / len, v.y / len);\n },\n vec2h: (v: wgsl.v2h) => {\n const len = lengthVec2(v);\n return vec2h(v.x / len, v.y / len);\n },\n vec2i: (v: wgsl.v2i) => {\n const len = lengthVec2(v);\n return vec2i(v.x / len, v.y / len);\n },\n vec2u: (v: wgsl.v2u) => {\n const len = lengthVec2(v);\n return vec2u(v.x / len, v.y / len);\n },\n\n vec3f: (v: wgsl.v3f) => {\n const len = lengthVec3(v);\n return vec3f(v.x / len, v.y / len, v.z / len);\n },\n vec3h: (v: wgsl.v3h) => {\n const len = lengthVec3(v);\n return vec3h(v.x / len, v.y / len, v.z / len);\n },\n vec3i: (v: wgsl.v3i) => {\n const len = lengthVec3(v);\n return vec3i(v.x / len, v.y / len, v.z / len);\n },\n vec3u: (v: wgsl.v3u) => {\n const len = lengthVec3(v);\n return vec3u(v.x / len, v.y / len, v.z / len);\n },\n\n vec4f: (v: wgsl.v4f) => {\n const len = lengthVec4(v);\n return vec4f(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4h: (v: wgsl.v4h) => {\n const len = lengthVec4(v);\n return vec4h(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4i: (v: wgsl.v4i) => {\n const len = lengthVec4(v);\n return vec4i(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4u: (v: wgsl.v4u) => {\n const len = lengthVec4(v);\n return vec4u(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cross: {\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => {\n return vec3f(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => {\n return vec3h(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n } as Record<\n 'vec3f' | 'vec3h',\n <T extends wgsl.v3f | wgsl.v3h>(a: T, b: T) => T\n >,\n\n floor: {\n vec2f: unary2f(Math.floor),\n vec2h: unary2h(Math.floor),\n\n vec3f: unary3f(Math.floor),\n vec3h: unary3h(Math.floor),\n\n vec4f: unary4f(Math.floor),\n vec4h: unary4h(Math.floor),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n max: {\n vec2f: binaryComponentWise2f(Math.max),\n vec2h: binaryComponentWise2h(Math.max),\n vec2i: binaryComponentWise2i(Math.max),\n vec2u: binaryComponentWise2u(Math.max),\n\n vec3f: binaryComponentWise3f(Math.max),\n vec3h: binaryComponentWise3h(Math.max),\n vec3i: binaryComponentWise3i(Math.max),\n vec3u: binaryComponentWise3u(Math.max),\n\n vec4f: binaryComponentWise4f(Math.max),\n vec4h: binaryComponentWise4h(Math.max),\n vec4i: binaryComponentWise4i(Math.max),\n vec4u: binaryComponentWise4u(Math.max),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n min: {\n vec2f: binaryComponentWise2f(Math.min),\n vec2h: binaryComponentWise2h(Math.min),\n vec2i: binaryComponentWise2i(Math.min),\n vec2u: binaryComponentWise2u(Math.min),\n\n vec3f: binaryComponentWise3f(Math.min),\n vec3h: binaryComponentWise3h(Math.min),\n vec3i: binaryComponentWise3i(Math.min),\n vec3u: binaryComponentWise3u(Math.min),\n\n vec4f: binaryComponentWise4f(Math.min),\n vec4h: binaryComponentWise4h(Math.min),\n vec4i: binaryComponentWise4i(Math.min),\n vec4u: binaryComponentWise4u(Math.min),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n pow: {\n vec2f: (base: wgsl.v2f, exponent: wgsl.v2f) =>\n vec2f(base.x ** exponent.x, base.y ** exponent.y),\n vec2h: (base: wgsl.v2h, exponent: wgsl.v2h) =>\n vec2h(base.x ** exponent.x, base.y ** exponent.y),\n\n vec3f: (base: wgsl.v3f, exponent: wgsl.v3f) =>\n vec3f(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n vec3h: (base: wgsl.v3h, exponent: wgsl.v3h) =>\n vec3h(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n\n vec4f: (base: wgsl.v4f, exponent: wgsl.v4f) =>\n vec4f(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n vec4h: (base: wgsl.v4h, exponent: wgsl.v4h) =>\n vec4h(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h' | 'number',\n <T extends wgsl.AnyFloatVecInstance | number>(a: T, b: T) => T\n >,\n\n mix: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f, e3: wgsl.v2f | number) => {\n if (typeof e3 === 'number') {\n return vec2f(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h, e3: wgsl.v2h | number) => {\n if (typeof e3 === 'number') {\n return vec2h(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f, e3: wgsl.v3f | number) => {\n if (typeof e3 === 'number') {\n return vec3f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h, e3: wgsl.v3h | number) => {\n if (typeof e3 === 'number') {\n return vec3h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f, e3: wgsl.v4f | number) => {\n if (typeof e3 === 'number') {\n return vec4f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h, e3: wgsl.v4h | number) => {\n if (typeof e3 === 'number') {\n return vec4h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h',\n <T extends wgsl.v2f | wgsl.v3f | wgsl.v4f | wgsl.v2h | wgsl.v3h | wgsl.v4h>(\n a: T,\n b: T,\n c: T | number,\n ) => T\n >,\n\n sin: {\n vec2f: unary2f(Math.sin),\n vec2h: unary2h(Math.sin),\n\n vec3f: unary3f(Math.sin),\n vec3h: unary3h(Math.sin),\n\n vec4f: unary4f(Math.sin),\n vec4h: unary4h(Math.sin),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cos: {\n vec2f: unary2f(Math.cos),\n vec2h: unary2h(Math.cos),\n\n vec3f: unary3f(Math.cos),\n vec3h: unary3h(Math.cos),\n\n vec4f: unary4f(Math.cos),\n vec4h: unary4h(Math.cos),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n exp: {\n vec2f: unary2f(Math.exp),\n vec2h: unary2h(Math.exp),\n\n vec3f: unary3f(Math.exp),\n vec3h: unary3h(Math.exp),\n\n vec4f: unary4f(Math.exp),\n vec4h: unary4h(Math.exp),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n fract: {\n vec2f: unary2f((value) => value - Math.floor(value)),\n vec2h: unary2h((value) => value - Math.floor(value)),\n\n vec3f: unary3f((value) => value - Math.floor(value)),\n vec3h: unary3h((value) => value - Math.floor(value)),\n\n vec4f: unary4f((value) => value - Math.floor(value)),\n vec4h: unary4h((value) => value - Math.floor(value)),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n isCloseToZero: {\n vec2f: (v: wgsl.v2f, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n vec2h: (v: wgsl.v2h, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n\n vec3f: (v: wgsl.v3f, n: number) =>\n Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n vec3h: (v: wgsl.v3h, n: number) =>\n Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n\n vec4f: (v: wgsl.v4f, n: number) =>\n Math.abs(v.x) <= n &&\n Math.abs(v.y) <= n &&\n Math.abs(v.z) <= n &&\n Math.abs(v.w) <= n,\n vec4h: (v: wgsl.v4h, n: number) =>\n Math.abs(v.x) <= n &&\n Math.abs(v.y) <= n &&\n Math.abs(v.z) <= n &&\n Math.abs(v.w) <= n,\n } as Record<VecKind, <T extends vBase>(v: T, n: number) => boolean>,\n\n neg: {\n vec2f: unary2f((value) => -value),\n vec2h: unary2h((value) => -value),\n vec2i: unary2i((value) => -value),\n vec2u: unary2u((value) => -value),\n 'vec2<bool>': (e: wgsl.v2b) => vec2b(!e.x, !e.y),\n\n vec3f: unary3f((value) => -value),\n vec3h: unary3h((value) => -value),\n vec3i: unary3i((value) => -value),\n vec3u: unary3u((value) => -value),\n 'vec3<bool>': (e: wgsl.v3b) => vec3b(!e.x, !e.y, !e.z),\n\n vec4f: unary4f((value) => -value),\n vec4h: unary4h((value) => -value),\n vec4i: unary4i((value) => -value),\n vec4u: unary4u((value) => -value),\n 'vec4<bool>': (e: wgsl.v4b) => vec4b(!e.x, !e.y, !e.z, !e.w),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n select: {\n vec2f: (f: wgsl.v2f, t: wgsl.v2f, c: wgsl.v2b) =>\n vec2f(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2h: (f: wgsl.v2h, t: wgsl.v2h, c: wgsl.v2b) =>\n vec2h(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2i: (f: wgsl.v2i, t: wgsl.v2i, c: wgsl.v2b) =>\n vec2i(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2u: (f: wgsl.v2u, t: wgsl.v2u, c: wgsl.v2b) =>\n vec2u(c.x ? t.x : f.x, c.y ? t.y : f.y),\n 'vec2<bool>': (f: wgsl.v2b, t: wgsl.v2b, c: wgsl.v2b) =>\n vec2b(c.x ? t.x : f.x, c.y ? t.y : f.y),\n\n vec3f: (f: wgsl.v3f, t: wgsl.v3f, c: wgsl.v3b) =>\n vec3f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3h: (f: wgsl.v3h, t: wgsl.v3h, c: wgsl.v3b) =>\n vec3h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3i: (f: wgsl.v3i, t: wgsl.v3i, c: wgsl.v3b) =>\n vec3i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3u: (f: wgsl.v3u, t: wgsl.v3u, c: wgsl.v3b) =>\n vec3u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n 'vec3<bool>': (f: wgsl.v3b, t: wgsl.v3b, c: wgsl.v3b) =>\n vec3b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n\n vec4f: (f: wgsl.v4f, t: wgsl.v4f, c: wgsl.v4b) =>\n vec4f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4h: (f: wgsl.v4h, t: wgsl.v4h, c: wgsl.v4b) =>\n vec4h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4i: (f: wgsl.v4i, t: wgsl.v4i, c: wgsl.v4b) =>\n vec4i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4u: (f: wgsl.v4u, t: wgsl.v4u, c: wgsl.v4b) =>\n vec4u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n 'vec4<bool>': (f: wgsl.v4b, t: wgsl.v4b, c: wgsl.v4b) =>\n vec4b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyVecInstance>(\n f: T,\n t: T,\n c: T extends wgsl.AnyVec2Instance\n ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance\n ? wgsl.v3b\n : wgsl.v4b,\n ) => T\n >,\n};\n","import { f32 } from '../data/numeric.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport type {\n AnyFloatVecInstance,\n AnyMatInstance,\n AnyNumericVecInstance,\n AnyWgslData,\n v3f,\n v3h,\n vBaseForMat,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport type { Snippet } from '../types.ts';\n\nexport function isNumeric(element: Snippet) {\n const type = element.dataType.type;\n return (\n type === 'abstractInt' ||\n type === 'abstractFloat' ||\n type === 'f32' ||\n type === 'f16' ||\n type === 'i32' ||\n type === 'u32'\n );\n}\n\nexport const add = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T): T =>\n VectorOps.add[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} + ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\nexport const sub = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T): T =>\n VectorOps.sub[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} - ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\ntype MulOverload = {\n <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;\n <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;\n <T extends AnyNumericVecInstance | AnyMatInstance>(s: number | T, v: T): T;\n};\n\nexport const mul: MulOverload = createDualImpl(\n // CPU implementation\n (\n s: number | AnyNumericVecInstance | AnyMatInstance,\n v: AnyNumericVecInstance | AnyMatInstance,\n ): AnyNumericVecInstance | AnyMatInstance => {\n if (typeof s === 'number') {\n // Scalar * Vector/Matrix case\n return VectorOps.mulSxV[v.kind](s, v);\n }\n if (\n typeof s === 'object' &&\n typeof v === 'object' &&\n 'kind' in s &&\n 'kind' in v\n ) {\n const sIsVector = !s.kind.startsWith('mat');\n const vIsVector = !v.kind.startsWith('mat');\n if (!sIsVector && vIsVector) {\n // Matrix * Vector case\n return VectorOps.mulMxV[(s as AnyMatInstance).kind](\n s as AnyMatInstance,\n v as vBaseForMat<AnyMatInstance>,\n );\n }\n if (sIsVector && !vIsVector) {\n // Vector * Matrix case\n return VectorOps.mulVxM[(v as AnyMatInstance).kind](\n s as vBaseForMat<AnyMatInstance>,\n v as AnyMatInstance,\n );\n }\n }\n // Vector * Vector or Matrix * Matrix case\n return VectorOps.mulVxV[v.kind](s, v);\n },\n // GPU implementation\n (s, v) => {\n const returnType = isNumeric(s)\n ? // Scalar * Vector/Matrix\n (v.dataType as AnyWgslData)\n : !s.dataType.type.startsWith('mat')\n ? // Vector * Matrix\n (s.dataType as AnyWgslData)\n : !v.dataType.type.startsWith('mat')\n ? // Matrix * Vector\n (v.dataType as AnyWgslData)\n : // Vector * Vector or Matrix * Matrix\n (s.dataType as AnyWgslData);\n return { value: `(${s.value} * ${v.value})`, dataType: returnType };\n },\n);\n\nexport const abs = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.abs(value) as T;\n }\n return VectorOps.abs[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `abs(${value.value})`, dataType: value.dataType }),\n);\n\nexport const atan2 = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(y: T, x: T): T => {\n if (typeof y === 'number' && typeof x === 'number') {\n return Math.atan2(y, x) as T;\n }\n return VectorOps.atan2[(y as AnyFloatVecInstance).kind](\n y as never,\n x as never,\n ) as T;\n },\n // GPU implementation\n (y, x) => ({ value: `atan2(${y.value}, ${x.value})`, dataType: y.dataType }),\n);\n\nexport const acos = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.acos(value) as T;\n }\n return VectorOps.acos[(value as AnyFloatVecInstance).kind](\n value as never,\n ) as T;\n },\n // GPU implementation\n (value) => ({ value: `acos(${value.value})`, dataType: value.dataType }),\n);\n\nexport const asin = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.asin(value) as T;\n }\n return VectorOps.asin[(value as AnyFloatVecInstance).kind](\n value as never,\n ) as T;\n },\n // GPU implementation\n (value) => ({ value: `asin(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#ceil-builtin\n */\nexport const ceil = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.ceil(value) as T;\n }\n return VectorOps.ceil[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `ceil(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#clamp\n */\nexport const clamp = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance | number>(value: T, low: T, high: T): T => {\n if (typeof value === 'number') {\n return Math.min(Math.max(low as number, value), high as number) as T;\n }\n return VectorOps.clamp[value.kind](\n value,\n low as AnyNumericVecInstance,\n high as AnyNumericVecInstance,\n ) as T;\n },\n // GPU implementation\n (value, low, high) => {\n return {\n value: `clamp(${value.value}, ${low.value}, ${high.value})`,\n dataType: value.dataType,\n };\n },\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cos-builtin\n */\nexport const cos = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.cos(value) as T;\n }\n return VectorOps.cos[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `cos(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cross-builtin\n */\nexport const cross = createDualImpl(\n // CPU implementation\n <T extends v3f | v3h>(a: T, b: T): T => VectorOps.cross[a.kind](a, b),\n // GPU implementation\n (a, b) => ({ value: `cross(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#dot-builtin\n */\nexport const dot = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T): number =>\n VectorOps.dot[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({ value: `dot(${lhs.value}, ${rhs.value})`, dataType: f32 }),\n);\n\nexport const normalize = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance>(v: T): T => VectorOps.normalize[v.kind](v),\n // GPU implementation\n (v) => ({ value: `normalize(${v.value})`, dataType: v.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#floor-builtin\n */\nexport const floor = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.floor(value) as T;\n }\n return VectorOps.floor[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `floor(${value.value})`, dataType: value.dataType }),\n);\n\nexport const fract = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(a: T): T => {\n if (typeof a === 'number') {\n return (a - Math.floor(a)) as T;\n }\n return VectorOps.fract[a.kind](a) as T;\n },\n // GPU implementation\n (a) => ({ value: `fract(${a.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#length-builtin\n */\nexport const length = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): number => {\n if (typeof value === 'number') {\n return Math.abs(value);\n }\n return VectorOps.length[value.kind](value);\n },\n // GPU implementation\n (value) => ({ value: `length(${value.value})`, dataType: f32 }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#max-float-builtin\n */\nexport const max = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance | number>(a: T, b: T): T => {\n if (typeof a === 'number') {\n return Math.max(a, b as number) as T;\n }\n return VectorOps.max[a.kind](a, b as AnyNumericVecInstance) as T;\n },\n // GPU implementation\n (a, b) => ({ value: `max(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#min-float-builtin\n */\nexport const min = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance | number>(a: T, b: T): T => {\n if (typeof a === 'number') {\n return Math.min(a, b as number) as T;\n }\n return VectorOps.min[a.kind](a, b as AnyNumericVecInstance) as T;\n },\n // GPU implementation\n (a, b) => ({ value: `min(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#sin-builtin\n */\nexport const sin = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.sin(value) as T;\n }\n return VectorOps.sin[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `sin(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#exp-builtin\n */\nexport const exp = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.exp(value) as T;\n }\n return VectorOps.exp[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `exp(${value.value})`, dataType: value.dataType }),\n);\n\ntype PowOverload = {\n (base: number, exponent: number): number;\n <T extends AnyFloatVecInstance>(base: T, exponent: T): T;\n};\n\nexport const pow: PowOverload = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(base: T, exponent: T): T => {\n if (typeof base === 'number' && typeof exponent === 'number') {\n return (base ** exponent) as T;\n }\n if (\n typeof base === 'object' &&\n typeof exponent === 'object' &&\n 'kind' in base &&\n 'kind' in exponent\n ) {\n return VectorOps.pow[base.kind](base, exponent) as T;\n }\n throw new Error('Invalid arguments to pow()');\n },\n // GPU implementation\n (base, exponent) => {\n return {\n value: `pow(${base.value}, ${exponent.value})`,\n dataType: base.dataType,\n };\n },\n);\n\ntype MixOverload = {\n (e1: number, e2: number, e3: number): number;\n <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number): T;\n <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;\n};\n\nexport const mix: MixOverload = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(e1: T, e2: T, e3: T | number): T => {\n if (typeof e1 === 'number') {\n if (typeof e3 !== 'number' || typeof e2 !== 'number') {\n throw new Error(\n 'When e1 and e2 are numbers, the blend factor must be a number.',\n );\n }\n return (e1 * (1 - e3) + e2 * e3) as T;\n }\n\n if (typeof e1 === 'number' || typeof e2 === 'number') {\n throw new Error('e1 and e2 need to both be vectors of the same kind.');\n }\n\n return VectorOps.mix[e1.kind](e1, e2, e3) as T;\n },\n // GPU implementation\n (e1, e2, e3) => {\n return {\n value: `mix(${e1.value}, ${e2.value}, ${e3.value})`,\n dataType: e1.dataType,\n };\n },\n);\n\nexport const reflect = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance>(e1: T, e2: T): T =>\n sub(e1, mul(2 * dot(e2, e1), e2)),\n // GPU implementation\n (e1, e2) => {\n return {\n value: `reflect(${e1.value}, ${e2.value})`,\n dataType: e1.dataType,\n };\n },\n);\n\nexport const distance = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(a: T, b: T): number => {\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b);\n }\n return length(\n sub(a as AnyFloatVecInstance, b as AnyFloatVecInstance),\n ) as number;\n },\n // GPU implementation\n (a, b) => ({ value: `distance(${a.value}, ${b.value})`, dataType: f32 }),\n);\n\nexport const neg = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return -value as T;\n }\n return VectorOps.neg[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `-(${value.value})`, dataType: value.dataType }),\n);\n","import { bool, f32 } from '../data/numeric.ts';\nimport { vec2b, vec3b, vec4b } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport type {\n AnyBooleanVecInstance,\n AnyFloatVecInstance,\n AnyNumericVecInstance,\n AnyVec2Instance,\n AnyVec3Instance,\n AnyVecInstance,\n ScalarData,\n v2b,\n v3b,\n v4b,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport type { Snippet } from '../types.ts';\nimport { isNumeric, sub } from './numeric.ts';\n\nfunction correspondingBooleanVectorSchema(value: Snippet) {\n if (value.dataType.type.includes('2')) {\n return vec2b;\n }\n if (value.dataType.type.includes('3')) {\n return vec3b;\n }\n return vec4b;\n}\n\n// comparison\n\n/**\n * Checks whether `lhs == rhs` on all components.\n * Equivalent to `all(eq(lhs, rhs))`.\n * @example\n * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false\n * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true\n */\nexport const allEq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => all(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => ({\n value: `all(${lhs.value} == ${rhs.value})`,\n dataType: bool,\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs == rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.\n * @example\n * eq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(true, false)\n * eq(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, false)\n * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true\n * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true\n */\nexport const eq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n VectorOps.eq[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} == ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs != rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `any`.\n * @example\n * ne(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(false, true)\n * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)\n * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true\n */\nexport const ne = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => not(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} != ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs < rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * lt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, true)\n * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)\n * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true\n */\nexport const lt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n VectorOps.lt[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} < ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs <= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * le(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, true)\n * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)\n * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true\n */\nexport const le = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n or(lt(lhs, rhs), eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} <= ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs > rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * gt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, false)\n * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)\n * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const gt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n and(not(lt(lhs, rhs)), not(eq(lhs, rhs))),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} > ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n/**\n * Checks **component-wise** whether `lhs >= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * ge(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, false)\n * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)\n * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const ge = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => not(lt(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} >= ${rhs.value})`,\n dataType: correspondingBooleanVectorSchema(lhs),\n }),\n);\n\n// logical ops\n\n/**\n * Returns **component-wise** `!value`.\n * @example\n * not(vec2b(false, true)) // returns vec2b(true, false)\n * not(vec3b(true, true, false)) // returns vec3b(false, false, true)\n */\nexport const not = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(value: T): T =>\n VectorOps.neg[value.kind](value),\n // GPU implementation\n (value) => ({\n value: `!(${value.value})`,\n dataType: value.dataType,\n }),\n);\n\n/**\n * Returns **component-wise** logical `or` result.\n * @example\n * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)\n * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)\n */\nexport const or = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n VectorOps.or[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} | ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\n/**\n * Returns **component-wise** logical `and` result.\n * @example\n * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)\n * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)\n */\nexport const and = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n not(or(not(lhs), not(rhs))),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} & ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\n// logical aggregation\n\n/**\n * Returns `true` if each component of `value` is true.\n * @example\n * all(vec2b(false, true)) // returns false\n * all(vec3b(true, true, true)) // returns true\n */\nexport const all = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => VectorOps.all[value.kind](value),\n // GPU implementation\n (value) => ({\n value: `all(${value.value})`,\n dataType: bool,\n }),\n);\n\n/**\n * Returns `true` if any component of `value` is true.\n * @example\n * any(vec2b(false, true)) // returns true\n * any(vec3b(false, false, false)) // returns false\n */\nexport const any = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => !all(not(value)),\n // GPU implementation\n (value) => ({\n value: `any(${value.value})`,\n dataType: bool,\n }),\n);\n\n// other\n\n/**\n * Checks whether the given elements differ by at most the `precision` value.\n * Checks all elements of `lhs` and `rhs` if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(\n lhs: T,\n rhs: T,\n precision = 0.01,\n ) => {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return Math.abs(lhs - rhs) < precision;\n }\n if (typeof lhs !== 'number' && typeof rhs !== 'number') {\n return VectorOps.isCloseToZero[lhs.kind](sub(lhs, rhs), precision);\n }\n return false;\n },\n // GPU implementation\n (lhs, rhs, precision = { value: 0.01, dataType: f32 }) => {\n if (isNumeric(lhs) && isNumeric(rhs)) {\n return {\n value: `(abs(f32(${lhs.value}) - f32(${rhs.value})) <= ${precision.value})`,\n dataType: bool,\n };\n }\n if (!isNumeric(lhs) && !isNumeric(rhs)) {\n return {\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n value: `all(abs(${lhs.value} - ${rhs.value}) <= (${lhs.value} - ${lhs.value}) + ${precision.value})`,\n dataType: bool,\n };\n }\n return {\n value: 'false',\n dataType: bool,\n };\n },\n);\n\nexport type SelectOverload = {\n <T extends ScalarData | AnyVecInstance>(f: T, t: T, cond: boolean): T;\n <T extends AnyVecInstance>(\n f: T,\n t: T,\n cond: T extends AnyVec2Instance\n ? v2b\n : T extends AnyVec3Instance\n ? v3b\n : v4b,\n ): T;\n};\n\n/**\n * Returns `t` if `cond` is `true`, and `f` otherwise.\n * Component-wise if `cond` is a vector.\n * @example\n * select(vec2i(1, 2), vec2i(3, 4), true) // returns vec2i(3, 4)\n * select(vec2i(1, 2), vec2i(3, 4), vec2b(false, true)) // returns vec2i(1, 4)\n */\nexport const select: SelectOverload = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance | ScalarData>(\n f: T,\n t: T,\n cond: AnyBooleanVecInstance | boolean,\n ) => {\n if (typeof cond === 'boolean') {\n return cond ? t : f;\n }\n return VectorOps.select[(f as AnyVecInstance).kind](\n f as AnyVecInstance,\n t as AnyVecInstance,\n cond,\n );\n },\n // GPU implementation\n (f, t, cond) => ({\n value: `select(${f.value}, ${t.value}, ${cond.value})`,\n dataType: f.dataType,\n }),\n);\n","import {\n Void,\n type atomicI32,\n type atomicU32,\n isWgslData,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\n\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport const workgroupBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('workgroupBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'workgroupBarrier()', dataType: Void }),\n);\n\nexport const storageBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('storageBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'storageBarrier()', dataType: Void }),\n);\n\nexport const textureBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('textureBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'textureBarrier()', dataType: Void }),\n);\n\nexport const atomicLoad = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return { value: `atomicLoad(&${a.value})`, dataType: a.dataType.inner };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicStore = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): void => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (!isWgslData(a.dataType) || a.dataType.type !== 'atomic') {\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n }\n return {\n value: `atomicStore(&${a.value}, ${value.value})`,\n dataType: Void,\n };\n },\n);\n\nexport const atomicAdd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicAdd(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicSub = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicSub(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicMax = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicMax(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicMin = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicMin(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicAnd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicAnd(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicOr = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicOr(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicXor = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicXor(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n"]}
1
+ {"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/std/boolean.ts","../../src/std/atomic.ts"],"names":["discard","createDualImpl","snip","Void","correspondingBooleanVectorSchema","value","vec2b","vec3b","vec4b","allEq","lhs","rhs","all","eq","bool","VectorOps","ne","not","lt","le","or","gt","and","any","isCloseTo","precision","isVecInstance","sub","f32","isSnippetNumeric","select","f","cond","workgroupBarrier","storageBarrier","textureBarrier","atomicLoad","a","isWgslData"],"mappings":"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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"import { snip } from '../data/dataTypes.ts';\nimport { Void } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\n\nexport const discard = createDualImpl(\n // CPU\n (): never => {\n throw new Error('discard() can only be used on the GPU.');\n },\n // GPU\n () => snip('discard;', Void),\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { bool, f32 } from '../data/numeric.ts';\nimport { vec2b, vec3b, vec4b } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n type AnyBooleanVecInstance,\n type AnyFloatVecInstance,\n type AnyNumericVecInstance,\n type AnyVec2Instance,\n type AnyVec3Instance,\n type AnyVecInstance,\n isVecInstance,\n type v2b,\n type v3b,\n type v4b,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { isSnippetNumeric, sub } from './numeric.ts';\n\nfunction correspondingBooleanVectorSchema(value: Snippet) {\n if (value.dataType.type.includes('2')) {\n return vec2b;\n }\n if (value.dataType.type.includes('3')) {\n return vec3b;\n }\n return vec4b;\n}\n\n// comparison\n\n/**\n * Checks whether `lhs == rhs` on all components.\n * Equivalent to `all(eq(lhs, rhs))`.\n * @example\n * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false\n * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true\n */\nexport const allEq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => all(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => snip(`all(${lhs.value} == ${rhs.value})`, bool),\n);\n\n/**\n * Checks **component-wise** whether `lhs == rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.\n * @example\n * eq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(true, false)\n * eq(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, false)\n * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true\n * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true\n */\nexport const eq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n VectorOps.eq[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} == ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs != rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `any`.\n * @example\n * ne(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(false, true)\n * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)\n * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true\n */\nexport const ne = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => not(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} != ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs < rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * lt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, true)\n * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)\n * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true\n */\nexport const lt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n VectorOps.lt[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} < ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs <= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * le(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, true)\n * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)\n * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true\n */\nexport const le = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n or(lt(lhs, rhs), eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} <= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs > rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * gt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, false)\n * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)\n * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const gt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n and(not(lt(lhs, rhs)), not(eq(lhs, rhs))),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} > ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs >= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * ge(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, false)\n * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)\n * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const ge = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => not(lt(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} >= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n// logical ops\n\n/**\n * Returns **component-wise** `!value`.\n * @example\n * not(vec2b(false, true)) // returns vec2b(true, false)\n * not(vec3b(true, true, false)) // returns vec3b(false, false, true)\n */\nexport const not = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(value: T): T =>\n VectorOps.neg[value.kind](value),\n // GPU implementation\n (value) => snip(`!(${value.value})`, value.dataType),\n);\n\n/**\n * Returns **component-wise** logical `or` result.\n * @example\n * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)\n * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)\n */\nexport const or = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n VectorOps.or[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} | ${rhs.value})`, lhs.dataType),\n);\n\n/**\n * Returns **component-wise** logical `and` result.\n * @example\n * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)\n * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)\n */\nexport const and = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n not(or(not(lhs), not(rhs))),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} & ${rhs.value})`, lhs.dataType),\n);\n\n// logical aggregation\n\n/**\n * Returns `true` if each component of `value` is true.\n * @example\n * all(vec2b(false, true)) // returns false\n * all(vec3b(true, true, true)) // returns true\n */\nexport const all = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => VectorOps.all[value.kind](value),\n // GPU implementation\n (value) => snip(`all(${value.value})`, bool),\n);\n\n/**\n * Returns `true` if any component of `value` is true.\n * @example\n * any(vec2b(false, true)) // returns true\n * any(vec3b(false, false, false)) // returns false\n */\nexport const any = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => !all(not(value)),\n // GPU implementation\n (value) => snip(`any(${value.value})`, bool),\n);\n\n// other\n\n/**\n * Checks whether the given elements differ by at most the `precision` value.\n * Checks all elements of `lhs` and `rhs` if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(\n lhs: T,\n rhs: T,\n precision = 0.01,\n ) => {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return Math.abs(lhs - rhs) < precision;\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.isCloseToZero[lhs.kind](\n sub(lhs, rhs),\n precision,\n );\n }\n return false;\n },\n // GPU implementation\n (lhs, rhs, precision = snip(0.01, f32)) => {\n if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n return snip(\n `(abs(f32(${lhs.value}) - f32(${rhs.value})) <= ${precision.value})`,\n bool,\n );\n }\n if (!isSnippetNumeric(lhs) && !isSnippetNumeric(rhs)) {\n return snip(\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n `all(abs(${lhs.value} - ${rhs.value}) <= (${lhs.value} - ${lhs.value}) + ${precision.value})`,\n bool,\n );\n }\n return snip('false', bool);\n },\n);\n\nexport type SelectOverload = {\n <T extends number | boolean | AnyVecInstance>(f: T, t: T, cond: boolean): T;\n <T extends AnyVecInstance>(\n f: T,\n t: T,\n cond: T extends AnyVec2Instance ? v2b\n : T extends AnyVec3Instance ? v3b\n : v4b,\n ): T;\n};\n\n/**\n * Returns `t` if `cond` is `true`, and `f` otherwise.\n * Component-wise if `cond` is a vector.\n * @example\n * select(1, 2, false) // returns 1\n * select(1, 2, true) // returns 2\n * select(vec2i(1, 2), vec2i(3, 4), true) // returns vec2i(3, 4)\n * select(vec2i(1, 2), vec2i(3, 4), vec2b(false, true)) // returns vec2i(1, 4)\n */\nexport const select: SelectOverload = createDualImpl(\n // CPU implementation\n <T extends number | boolean | AnyVecInstance>(\n f: T,\n t: T,\n cond: AnyBooleanVecInstance | boolean,\n ) => {\n if (typeof cond === 'boolean') {\n return cond ? t : f;\n }\n return VectorOps.select[(f as AnyVecInstance).kind](\n f as AnyVecInstance,\n t as AnyVecInstance,\n cond,\n );\n },\n // GPU implementation\n (f, t, cond) =>\n snip(`select(${f.value}, ${t.value}, ${cond.value})`, f.dataType),\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { i32, u32 } from '../data/numeric.ts';\nimport {\n type AnyWgslData,\n type atomicI32,\n type atomicU32,\n isWgslData,\n Void,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport const workgroupBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('workgroupBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('workgroupBarrier()', Void),\n);\n\nexport const storageBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('storageBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('storageBarrier()', Void),\n);\n\nexport const textureBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('textureBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('textureBarrier()', Void),\n);\n\nexport const atomicLoad = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicLoad(&${a.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicStore = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): void => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (!isWgslData(a.dataType) || a.dataType.type !== 'atomic') {\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n }\n return snip(`atomicStore(&${a.value}, ${value.value})`, Void);\n },\n);\n\nconst atomicTypeFn = (a: Snippet, _value: Snippet): AnyWgslData[] => {\n if (a.dataType.type === 'atomic' && a.dataType.inner.type === 'i32') {\n return [a.dataType, i32];\n }\n return [a.dataType as AnyWgslData, u32];\n};\n\nexport const atomicAdd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAdd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicSub = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicSub(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicMax = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMax(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicMin = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMin(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicAnd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAnd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicOr = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicOr(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicXor = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicXor(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n"]}