shadertown 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.md +2 -2
- package/cli/mcp.mjs +1 -1
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +31 -8
- package/dist/export.js.map +1 -1
- package/dist/generated/sources.d.ts +89 -5
- package/dist/generated/sources.d.ts.map +1 -1
- package/dist/generated/sources.js +88 -5
- package/dist/generated/sources.js.map +1 -1
- package/dist/graph.d.ts +17 -12
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +424 -210
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +2 -0
- package/dist/react.js.map +1 -1
- package/dist/registry.d.ts +212 -70
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +127 -45
- package/dist/registry.js.map +1 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +8 -3
- package/dist/renderer.js.map +1 -1
- package/dist/source.d.ts +29 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +102 -9
- package/dist/source.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,51 @@ deploys, not by this file.
|
|
|
6
6
|
This project follows [semantic versioning](https://semver.org). Before 1.0 the
|
|
7
7
|
minor number carries breaking changes, so pin it if that matters to you.
|
|
8
8
|
|
|
9
|
+
## 0.9.0 — 2026-09-02
|
|
10
|
+
|
|
11
|
+
A shader that draws your logo up as a technical plate, an `{ svg }` source to
|
|
12
|
+
feed it, and a second flavour of render graph to draw it through.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`blueprint`.** The layer measured and drawn up the way a draughtsman would:
|
|
17
|
+
the ink outlined at a set weight, hatched inside at forty-five degrees, and
|
|
18
|
+
dimensioned below and beside with ticks, extension lines and its size in
|
|
19
|
+
pixels, lettered in the browser's monospace face from a glyph atlas the
|
|
20
|
+
runtime draws once. Behind it a grained mat under a grid ruled heavier every
|
|
21
|
+
fourth line, with construction lines meeting at the pointer. The
|
|
22
|
+
measuring happens on the GPU every frame — a bounds reduction boxes the ink,
|
|
23
|
+
a jump flood turns the box into a distance field — so the plate follows
|
|
24
|
+
whatever the layer becomes. Sixty-six shaders in total, and a new `drafting`
|
|
25
|
+
family.
|
|
26
|
+
- **The `{ svg }` source.** `source={{ svg: "/logo.svg" }}` (a URL or the
|
|
27
|
+
markup itself) rasterises the drawing through an `<img>` at the `width` you
|
|
28
|
+
choose, so the layer is as sharp as the canvas rather than as sharp as the
|
|
29
|
+
file declares, and works in browsers that will not decode an SVG into a
|
|
30
|
+
bitmap directly. Every opaque pixel is filled with `color` (white by
|
|
31
|
+
default) over `background` (black), so a coloured logo arrives as the same
|
|
32
|
+
silhouette a text source produces; `color: null` keeps its own colours.
|
|
33
|
+
- **Graph flavours.** A graph shader's folder now names its flavour:
|
|
34
|
+
`graph/particles/` for the five particle fields, `graph/drafting/` for the
|
|
35
|
+
plate. The shared prelude (`vs_fullscreen`, the bloom chain, `fs_main`) is
|
|
36
|
+
one file, each flavour's passes are another, and a flavour prelude that opens
|
|
37
|
+
with `// @reads-source` binds a layer. `shaderReadsSource` and
|
|
38
|
+
`shaderGraphs` join the generated module, and `ShaderGraph.bindSource` is
|
|
39
|
+
how the renderer hands a layer to the passes inside a graph that read it.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **`isSourceShader` answers the question it is named for.** It is true for
|
|
44
|
+
every shader that wants a `source` — the fourteen source-kind shaders and
|
|
45
|
+
now `blueprint` — where before it was a synonym for `shaderKind() ===
|
|
46
|
+
"source"`. Ask it before handing over a layer; ask `shaderKind` how the
|
|
47
|
+
shader is driven.
|
|
48
|
+
- **The shared graph bindings moved to 20 and up.** `blurU`, `bloomU`, the
|
|
49
|
+
scene, blur and bloom textures and `linearSampler` sat at 2 to 14 in every
|
|
50
|
+
particle field's WGSL; they now sit at 20 to 30 so a flavour has room below
|
|
51
|
+
them for a source layer. Nothing changes through `ShaderCanvas` or the
|
|
52
|
+
runtime. A vendored copy of a particle field keeps working as vendored; a
|
|
53
|
+
fresh `shadertown add` writes the new numbers.
|
|
9
54
|
## 0.8.2 — 2026-09-02
|
|
10
55
|
|
|
11
56
|
### Fixed
|
package/README.md
CHANGED
|
@@ -40,8 +40,8 @@ npx add-mcp "npx -y shadertown@latest mcp" -n shadertown
|
|
|
40
40
|
|
|
41
41
|
## Licensing
|
|
42
42
|
|
|
43
|
-
This package is MIT, and it draws all
|
|
44
|
-
readable source: 16 shaders hand theirs to anyone, the other
|
|
43
|
+
This package is MIT, and it draws all 66 shaders. What a licence buys is the
|
|
44
|
+
readable source: 16 shaders hand theirs to anyone, the other 50 need
|
|
45
45
|
[Professional](https://www.shadertown.com/pricing). Source you have already
|
|
46
46
|
vendored keeps working either way.
|
|
47
47
|
|
package/cli/mcp.mjs
CHANGED
|
@@ -277,7 +277,7 @@ async function getShader({ slug }) {
|
|
|
277
277
|
: kind === "compute"
|
|
278
278
|
? "Kind: compute — a GPU simulation that carries state between frames."
|
|
279
279
|
: kind === "graph"
|
|
280
|
-
? "Kind: graph — a multi-pass render graph:
|
|
280
|
+
? "Kind: graph — a multi-pass render graph in one module: a particle field, or a drafting plate drawn over the source layer you give it, with bloom and present."
|
|
281
281
|
: "Kind: generative — it draws its picture from the params alone.";
|
|
282
282
|
|
|
283
283
|
const tierNote =
|
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAevB;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,EAC7C,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAQjC;AAgBD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAW7F;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAoB5F;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAuB9F;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAEtE;AAOD,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAwB9F;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAqMvF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAE,aAAkB,GAAG,MAAM,CA0B3F"}
|
package/dist/export.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { shaderSources } from "./generated/sources.js";
|
|
1
|
+
import { shaderGraphs, shaderSources } from "./generated/sources.js";
|
|
2
2
|
import { defaultParams } from "./params.js";
|
|
3
|
-
import { defaultSourceOf, shaderKind, shaderRegistry, } from "./registry.js";
|
|
3
|
+
import { defaultSourceOf, isSourceShader, shaderKind, shaderRegistry, } from "./registry.js";
|
|
4
4
|
/**
|
|
5
5
|
* The `source` line an exported snippet needs, or nothing.
|
|
6
6
|
*
|
|
@@ -9,7 +9,7 @@ import { defaultSourceOf, shaderKind, shaderRegistry, } from "./registry.js";
|
|
|
9
9
|
* shader was ever meant to read the reader's own picture.
|
|
10
10
|
*/
|
|
11
11
|
function sourceProp(name, indent) {
|
|
12
|
-
if (
|
|
12
|
+
if (!isSourceShader(name))
|
|
13
13
|
return "";
|
|
14
14
|
const fallback = defaultSourceOf(name);
|
|
15
15
|
return `\n${indent}// An image, a URL, a <video>, or { shader: "…" } for another\n${indent}// shadertown shader. Omit it and it falls back to ${JSON.stringify(fallback ?? "a shader")}.\n${indent}source="/your-image.jpg"`;
|
|
@@ -78,7 +78,7 @@ export function toVanillaSource(name, params) {
|
|
|
78
78
|
const diff = diffParams(name, params);
|
|
79
79
|
const entries = Object.entries(diff).map(([key, value]) => ` ${key}: ${literal(value)},`);
|
|
80
80
|
const paramsArg = entries.length > 0 ? `\n params: {\n${entries.join("\n")}\n },` : "";
|
|
81
|
-
const sourceArg =
|
|
81
|
+
const sourceArg = isSourceShader(name)
|
|
82
82
|
? `\n // An image, a URL, a <video>, or { shader: "…" } for another shadertown\n // shader. Omit it and it falls back to ${JSON.stringify(defaultSourceOf(name) ?? "a shader")}.\n source: "/your-image.jpg",`
|
|
83
83
|
: "";
|
|
84
84
|
return `import { createShaderRenderer } from "shadertown";
|
|
@@ -159,7 +159,7 @@ export function toReadme(name, params) {
|
|
|
159
159
|
// A source shader's whole point is the layer it reads, so the README has to
|
|
160
160
|
// say what that is and how to supply one. Skipped entirely for the shaders
|
|
161
161
|
// that invent their own picture.
|
|
162
|
-
const sourceSection =
|
|
162
|
+
const sourceSection = isSourceShader(name)
|
|
163
163
|
? `## What it reads
|
|
164
164
|
|
|
165
165
|
${definition.name} does not invent its picture — it reads one. On top of the
|
|
@@ -210,8 +210,10 @@ dispatch must land on the queue before the frame that draws.
|
|
|
210
210
|
`
|
|
211
211
|
: "";
|
|
212
212
|
// A graph shader also vendors one WGSL file, but the file is a whole render
|
|
213
|
-
// graph: several entry points, driven as separate passes every frame.
|
|
214
|
-
|
|
213
|
+
// graph: several entry points, driven as separate passes every frame. Which
|
|
214
|
+
// passes depends on the flavour, so the README names the right ones.
|
|
215
|
+
const flavour = shaderGraphs[name];
|
|
216
|
+
const graphSection = flavour === "particles"
|
|
215
217
|
? `## What it renders
|
|
216
218
|
|
|
217
219
|
${definition.name} is not one pass but a render graph in a single module: a
|
|
@@ -230,7 +232,28 @@ particles additively — the bindings each stage reads are all declared in the
|
|
|
230
232
|
file.
|
|
231
233
|
|
|
232
234
|
`
|
|
233
|
-
: ""
|
|
235
|
+
: flavour === "drafting"
|
|
236
|
+
? `## What it renders
|
|
237
|
+
|
|
238
|
+
${definition.name} is not one pass but a render graph in a single module, and
|
|
239
|
+
it measures the layer before it draws it. A bounds pass samples the source
|
|
240
|
+
through a 256² grid and three reductions box its ink into a 1×1 texture; a
|
|
241
|
+
seed pass and ten jump-flood steps turn that box into a 512² distance field;
|
|
242
|
+
the plate pass draws the picture from the distances into an HDR scene; a
|
|
243
|
+
five-level bloom chain and the present pass finish it. Every stage is its own
|
|
244
|
+
entry point. Through \`ShaderCanvas\` or \`createShaderRenderer\` none of that
|
|
245
|
+
is your problem: the same one-liner that runs a gradient runs this.
|
|
246
|
+
|
|
247
|
+
Wiring the WGSL into your own renderer instead means reproducing that graph:
|
|
248
|
+
pick each stage by its entry point name (\`fs_bounds\`, \`fs_reduce\` three
|
|
249
|
+
times, \`fs_seed\`, \`fs_jfa\` with a halving step from 256 to 1 and once more
|
|
250
|
+
at 1, \`fs_distance\`, \`fs_plate\`, \`fs_brightPlate\`, \`fs_blur\`,
|
|
251
|
+
\`fs_composite\`, then \`fs_main\` to present), give each pass its target, and
|
|
252
|
+
bind the layer to the passes that read it — the bindings each stage reads are
|
|
253
|
+
all declared in the file.
|
|
254
|
+
|
|
255
|
+
`
|
|
256
|
+
: "";
|
|
234
257
|
const costNote = {
|
|
235
258
|
light: "Light. A few samples per pixel — fine fullscreen at full pixel ratio, including on integrated graphics.",
|
|
236
259
|
medium: "Medium. A few dozen samples per pixel — comfortable fullscreen on a discrete GPU, but cap the pixel ratio for a retina hero.",
|
package/dist/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,GAGf,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAgB,EAAE,MAAc;IAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,MAAM,kEAAkE,MAAM,sDAAsD,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,MAAM,0BAA0B,CAAC;AAC/N,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,IAAO,EACP,MAAuB;IAEvB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAoC,CAAC;IACxE,MAAM,IAAI,GAAoC,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAyC,CAAC,EAAE,CAAC;QACrF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QAC7D,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,KAAsB;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,IAAqC,EAAE,MAAc;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,GAAG,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAoB,CAAC,GAAG,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,MAAM,CAAC;AAClE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAuB,IAAO,EAAE,MAAuB;IACnF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO;;KAEJ,UAAU,CAAC,IAAI,MAAM,UAAU,CAAC,OAAO;eAC7B,YAAY,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;EAC9B,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;CAExB,CAAC;AACF,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAuB,IAAO,EAAE,MAAuB;IAClF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CACvG,CAAC;IACF,MAAM,UAAU,GACd,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,OAAO;;;;;gBAKO,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;;;;;;CAM9D,CAAC;AACF,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,eAAe,CAAuB,IAAO,EAAE,MAAuB;IACpF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzF,MAAM,SAAS,GACb,cAAc,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,2HAA2H,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,iCAAiC;QACjN,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;;;;;YAKG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,SAAS;;;;;;;CAOxD,CAAC;AACF,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAAuB,IAAO;IACxD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAuB,IAAO;IAC5D,OAAO,6BAA6B,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;AACzD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAuB,IAAO,EAAE,MAAuB;IACpF,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7G,OAAO;WACE,UAAU,cAAc,IAAI;;KAElC,UAAU,CAAC,IAAI,MAAM,UAAU,CAAC,OAAO;;;;;kBAK1B,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;0BAClC,GAAG;;;;;;;CAO5B,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAuB,IAAO,EAAE,MAAuB;IAC7E,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,OAAsF,CAAC;QACjG,OAAO,OAAO,GAAG,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC;IAC9F,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAW;SACzD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,OAAO,GAAG,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC;IAC5E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;QACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;aACnG,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,mDAAmD,CAAC;IAExD,4EAA4E;IAC5E,2EAA2E;IAC3E,iCAAiC;IACjC,MAAM,aAAa,GACjB,cAAc,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC;;EAEN,UAAU,CAAC,IAAI;;;;;;;;;;;;wBAYO,IAAI;wBACJ,IAAI;wBACJ,IAAI,wBAAwB,eAAe,CAAC,IAAI,CAAC,IAAI,QAAQ;;;0CAG3C,eAAe,CAAC,IAAI,CAAC,IAAI,QAAQ;;;;;;;;;CAS1E;QACK,CAAC,CAAC,EAAE,CAAC;IAET,2EAA2E;IAC3E,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,cAAc,GAClB,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS;QAC5B,CAAC,CAAC;;EAEN,UAAU,CAAC,IAAI;;;;;;;;;;;CAWhB;QACK,CAAC,CAAC,EAAE,CAAC;IAET,4EAA4E;IAC5E,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,OAAO,GAAI,YAAuC,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,YAAY,GAChB,OAAO,KAAK,WAAW;QACrB,CAAC,CAAC;;EAEN,UAAU,CAAC,IAAI;;;;;;;;;;;;;;;CAehB;QACK,CAAC,CAAC,OAAO,KAAK,UAAU;YACtB,CAAC,CAAC;;EAER,UAAU,CAAC,IAAI;;;;;;;;;;;;;;;;;CAiBhB;YACO,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,yGAAyG;QAChH,MAAM,EACJ,8HAA8H;QAChI,KAAK,EACH,kIAAkI;KACrI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEnB,OAAO,KAAK,UAAU,CAAC,IAAI;;EAE3B,UAAU,CAAC,OAAO;;EAElB,UAAU,CAAC,WAAW;;;;;;MAMlB,IAAI;MACJ,IAAI;;;;;;;;WAQC,UAAU,cAAc,IAAI;;wBAEf,UAAU;;;;;EAKhC,aAAa,GAAG,cAAc,GAAG,YAAY;;EAE7C,KAAK;;;;;;EAML,WAAW;;;;;;EAMX,UAAU;;;;EAIV,QAAQ;;;;;;;;;;;;;EAaR,UAAU,CAAC,IAAI;;CAEhB,CAAC;AACF,CAAC;AAOD,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAuB,IAAO,EAAE,SAAwB,EAAE;IACjF,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjE,OAAO,gBAAgB,UAAU,CAAC,IAAI;;eAEzB,QAAQ,GAAG,SAAS;UACzB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;CAiB9C,CAAC;AACF,CAAC"}
|