@dreadwood-types/types 0.1.365 → 0.1.367

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 (50) hide show
  1. package/dist/areaGates.d.ts.map +1 -1
  2. package/dist/areaGates.js +16 -0
  3. package/dist/areaGates.js.map +1 -1
  4. package/dist/attackableNpcs.d.ts.map +1 -1
  5. package/dist/attackableNpcs.js +2 -0
  6. package/dist/attackableNpcs.js.map +1 -1
  7. package/dist/bossSignatures.d.ts +1 -1
  8. package/dist/bossSignatures.d.ts.map +1 -1
  9. package/dist/bossSignatures.js +6 -0
  10. package/dist/bossSignatures.js.map +1 -1
  11. package/dist/campKitchens.d.ts.map +1 -1
  12. package/dist/campKitchens.js +5 -0
  13. package/dist/campKitchens.js.map +1 -1
  14. package/dist/campTraders.d.ts.map +1 -1
  15. package/dist/campTraders.js +13 -0
  16. package/dist/campTraders.js.map +1 -1
  17. package/dist/constants.d.ts +2 -0
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js.map +1 -1
  20. package/dist/expandedContracts.d.ts.map +1 -1
  21. package/dist/expandedContracts.js +2 -1
  22. package/dist/expandedContracts.js.map +1 -1
  23. package/dist/hopeFair.d.ts +282 -0
  24. package/dist/hopeFair.d.ts.map +1 -0
  25. package/dist/hopeFair.js +451 -0
  26. package/dist/hopeFair.js.map +1 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/legacy.d.ts +2 -0
  32. package/dist/legacy.d.ts.map +1 -1
  33. package/dist/legacy.js +2 -0
  34. package/dist/legacy.js.map +1 -1
  35. package/dist/quests.d.ts.map +1 -1
  36. package/dist/quests.js +19 -0
  37. package/dist/quests.js.map +1 -1
  38. package/dist/serpentStones.d.ts +316 -0
  39. package/dist/serpentStones.d.ts.map +1 -0
  40. package/dist/serpentStones.js +340 -0
  41. package/dist/serpentStones.js.map +1 -0
  42. package/dist/serpentStonesQuestDef.d.ts +22 -0
  43. package/dist/serpentStonesQuestDef.d.ts.map +1 -0
  44. package/dist/serpentStonesQuestDef.js +132 -0
  45. package/dist/serpentStonesQuestDef.js.map +1 -0
  46. package/dist/storyQuests.d.ts +1 -1
  47. package/dist/storyQuests.d.ts.map +1 -1
  48. package/dist/storyQuests.js +18 -0
  49. package/dist/storyQuests.js.map +1 -1
  50. package/package.json +43 -43
@@ -0,0 +1,316 @@
1
+ /**
2
+ * THE SERPENT STONES (2026-10-19; plan `.cursor/task-plans/2026-10-19-serpent-stones-build.md`; design sheets `serpent-stones-1..9`). The narrow strip of
3
+ * green on the Dwarf Road's east floor, between the canyon's east cliff and the rail, north of the Avalanche Chute, for levels 31-40: a stone puzzle with
4
+ * teeth. Seven great slabs lie along the strip in an S-curve like a sleeping serpent, each carved with a serpent head glyph in its own colour; the Sun
5
+ * Plaque at the foot of the Coil shows the order for this run. Touch them in that order and each one warms; touch a wrong one and the Coil wakes (every
6
+ * slab cools and two stone serpents rise at the toucher). All seven warm open THE SERPENT'S MOUTH in the cliff onto a small vault: a cache that pays by
7
+ * your metal tier, and Old Basaltback (level 39) coiled round it. The site is shared: everyone sees the same slabs, and it resets ten minutes after a run.
8
+ *
9
+ * THE WAY IN (decided 2026-10-19): the strip was open to the road (the rail is dressing). It is now closed in: an iron rail fence two tiles east of the
10
+ * rail, a rock wall across the north (south of the Goat Terraces, which stay outside) and the south (north of the Goat Stair, which stays as it was), and
11
+ * the east cut back into the cliff rock. ONE door: the Lean-to Gate, a three-row gap in the fence at the south-west, across the road from the Pass-Road
12
+ * Camp. The valley is open from Riversend's North Path with no gate, so the door adds no way round any gate. The vault behind the Mouth is shut in rock:
13
+ * the Mouth's band (types areaGates.ts `serpent-mouth`, a walk gate) is its only way in, and the backend holds it shut until the Coil is warm.
14
+ *
15
+ * Every number is a WORLD tile (x east, z south) and a PLACEHOLDER for the balance pass. The models are the kit's own as stand-ins (backend upgrades rows
16
+ * `serpent-stones-*`). There is NO bank here (banks are in towns), no shop sells food (the cook buys what players cook) and nothing here heals in a fight.
17
+ */
18
+ import type { LanternWakeBox } from './lanternWake.js';
19
+ import type { DiscoveryZone } from './landmarks.js';
20
+ import type { WorldEventLoot } from './worldEvents.js';
21
+ export declare const SS_ID = "the-serpent-stones";
22
+ export declare const SS_NAME = "The Serpent Stones";
23
+ export declare const SS_LEVELS: {
24
+ readonly min: 31;
25
+ readonly max: 40;
26
+ };
27
+ /** The rows of the enclosure: the north wall, the open strip, the south wall. */
28
+ export declare const SS_NORTH_WALL: {
29
+ readonly minZ: 431;
30
+ readonly maxZ: 433;
31
+ };
32
+ export declare const SS_SOUTH_WALL: {
33
+ readonly minZ: 490;
34
+ readonly maxZ: 491;
35
+ };
36
+ export declare const SS_STRIP_ROWS: {
37
+ readonly minZ: number;
38
+ readonly maxZ: number;
39
+ };
40
+ /** The box the placer works in (everything in it east of the fence that is not open ground is rock). */
41
+ export declare const SS_BOX: LanternWakeBox;
42
+ /** The fence's line at a row: two tiles east of the rail. */
43
+ export declare function ssFenceLine(z: number): number;
44
+ /** The fence's tiles at a row: the line at this row and at the rows either side, so a step in the line leaves no diagonal gap. */
45
+ export declare function ssFenceSpan(z: number): {
46
+ minX: number;
47
+ maxX: number;
48
+ };
49
+ /** The Lean-to Gate: the one gap in the fence (the fence line is x 1877 on these rows and the rows either side). */
50
+ export declare const SS_DOOR: {
51
+ readonly x: 1877;
52
+ readonly minZ: 484;
53
+ readonly maxZ: 486;
54
+ };
55
+ export declare const inSsDoor: (x: number, z: number) => boolean;
56
+ /** The Mouth's face: the cliff stands flat at this column on these rows, the jaws in the middle. */
57
+ export declare const SS_MOUTH_FACE: {
58
+ readonly x: 1905;
59
+ readonly minZ: 437;
60
+ readonly maxZ: 445;
61
+ };
62
+ /** The east edge of the open strip at a row (the cliff cut back to a lazy line; flat at the Mouth's face). */
63
+ export declare function ssEastEdge(z: number): number;
64
+ /** The Serpent's Mouth: the jaws through the cliff, the walk gate's band (solid for everyone until the Coil is warm). */
65
+ export declare const SS_MOUTH_BAND: {
66
+ readonly minX: number;
67
+ readonly maxX: number;
68
+ readonly minZ: 440;
69
+ readonly maxZ: 442;
70
+ };
71
+ /** The vault: a cave in the rock behind the Mouth, shut in all round. */
72
+ export declare const SS_VAULT: LanternWakeBox;
73
+ export declare const SS_MOUTH_GATE_ID = "serpent-mouth";
74
+ export declare const inSsBoxOf: (b: LanternWakeBox, x: number, z: number, pad?: number) => boolean;
75
+ export declare const inSsVault: (x: number, z: number) => boolean;
76
+ export declare const inSsMouthBand: (x: number, z: number) => boolean;
77
+ /** The open strip inside the fence (the door's tiles not included). */
78
+ export declare function inSsStrip(x: number, z: number): boolean;
79
+ /** The whole enclosure: the strip, the door, the Mouth and the vault. */
80
+ export declare function inSsSite(x: number, z: number): boolean;
81
+ /** Is this tile one the placer lays as rock or fence (east of the fence's west edge, in the box, not open)? West of the fence the valley stays. */
82
+ export declare function isSsSolid(x: number, z: number): boolean;
83
+ /** Is this tile the fence (blocked, drawn as iron rail fence) rather than rock? */
84
+ export declare function isSsFence(x: number, z: number): boolean;
85
+ /** Reader's Lean-to's ground at the strip's south end, inside the gate. */
86
+ export declare const SS_CAMP_BOX: LanternWakeBox;
87
+ /** The warm-slab basking ground (the Serpent Stones den, dwarfRoadDens.ts, whose box stays as it was). */
88
+ export declare const SS_BASKING_BOX: LanternWakeBox;
89
+ export type SsGlyph = 'sun' | 'ember' | 'moss' | 'river' | 'bone' | 'slate' | 'ash';
90
+ /** The seven slabs, south (by the camp) to north (by the Mouth), each with its glyph. */
91
+ export declare const SS_SLABS: ReadonlyArray<{
92
+ readonly glyph: SsGlyph;
93
+ readonly name: string;
94
+ readonly colour: string;
95
+ readonly x: number;
96
+ readonly z: number;
97
+ }>;
98
+ export declare const SS_GLYPHS: readonly SsGlyph[];
99
+ export declare const SS_PROP: {
100
+ readonly slab: "ssslab";
101
+ readonly slabWarm: "ssslabwarm";
102
+ readonly plaque: "ssplaque";
103
+ readonly mouth: "ssmouth";
104
+ readonly mouthOpen: "ssmouthopen";
105
+ readonly cache: "sscache";
106
+ readonly board: "ssrubbings";
107
+ };
108
+ export declare const ssSlabId: (g: SsGlyph) => string;
109
+ export declare const ssSlabStyle: (g: SsGlyph, warm: boolean) => string;
110
+ /** The glyph a slab's style names (cool or warm), or null. */
111
+ export declare function ssSlabGlyph(style: string | null | undefined): SsGlyph | null;
112
+ export declare const ssSlabByGlyph: (g: SsGlyph) => {
113
+ readonly glyph: SsGlyph;
114
+ readonly name: string;
115
+ readonly colour: string;
116
+ readonly x: number;
117
+ readonly z: number;
118
+ };
119
+ export type SsQuestProp = {
120
+ readonly id: string;
121
+ readonly x: number;
122
+ readonly z: number;
123
+ readonly style: string;
124
+ };
125
+ export declare const SS_PLAQUE: SsQuestProp;
126
+ /** The Mouth's prop stands on the strip in front of the jaws (clicked to read it); its style swaps shut and open. */
127
+ export declare const SS_MOUTH: SsQuestProp;
128
+ export declare const SS_MOUTH_OPEN_STYLE: string;
129
+ export declare const SS_CACHE: SsQuestProp;
130
+ export declare const SS_RUBBINGS: SsQuestProp;
131
+ export declare const SS_SLAB_PROPS: readonly SsQuestProp[];
132
+ export declare const SS_QUEST_PROPS: readonly SsQuestProp[];
133
+ /** How long the Mouth stays open after the seventh slab warms; then the slabs cool, the Mouth shuts and a new order is drawn. */
134
+ export declare const SS_OPEN_MS: number;
135
+ /** A Coil left half warm this long since its last right touch cools by itself (a player who walked off mid-puzzle never locks it). */
136
+ export declare const SS_IDLE_COOL_MS: number;
137
+ /** One wrong touch per player in this long (a second within it is refused, so the Coil cannot be woken by clicking). */
138
+ export declare const SS_WRONG_COOLDOWN_MS = 10000;
139
+ /** A wrong touch wakes this many stone serpents at the toucher; never more than SS_WOKEN_CAP stand at once. They sink back after SS_WOKEN_LIFE_MS. */
140
+ export declare const SS_WOKEN_PER_WRONG = 2;
141
+ export declare const SS_WOKEN_CAP = 4;
142
+ export declare const SS_WOKEN_LIFE_MS = 120000;
143
+ export declare const SS_WOKEN_ID_PREFIX = "ssw-";
144
+ export declare const SS_WOKEN_LEVELS: readonly [number, number];
145
+ export declare const SS_WOKEN_NAME = "Woken Serpent";
146
+ /** A run's order: the seven glyphs shuffled by `roll` (Math.random in the game, a seeded roll in tests). */
147
+ export declare function ssDrawOrder(roll: () => number): SsGlyph[];
148
+ /** What the Sun Plaque says: this run's order, and how many are warm. */
149
+ export declare function ssPlaqueText(order: readonly SsGlyph[], warm: number): string;
150
+ export declare const SS_TEXT: {
151
+ readonly warm: (name: string) => string;
152
+ readonly wrong: "Wrong slab! The Coil wakes: every slab goes cold, the ground heaves and two stone serpents rise out of it. Read the Sun Plaque and start again.";
153
+ readonly allWarm: "The seventh slab warms. A long grinding runs up the Coil and in the cliff the Serpent's Mouth opens its jaws: the vault is open for ten minutes.";
154
+ readonly held: "All seven slabs are warm and the Serpent's Mouth is open. They will cool when it shuts.";
155
+ readonly already: "That slab is warm already. Read the Sun Plaque for the next one.";
156
+ readonly cool: "The slab is still settling after the Coil woke. Give it a moment.";
157
+ readonly cooled: "The slabs have cooled while nobody touched them. A new order is painted on the Sun Plaque.";
158
+ readonly closing: "The Serpent's Mouth grinds shut and the slabs cool. A new order is painted on the Sun Plaque.";
159
+ readonly mouthShut: "The Serpent's Mouth is shut fast: a carved serpent head in the cliff with its jaws closed. Warm the seven slabs in the Sun Plaque's order and it opens.";
160
+ readonly mouthOpen: "The Serpent's Mouth stands open onto the vault. It shuts ten minutes after it opened.";
161
+ readonly cacheShut: "The cache is behind the Mouth, and the Mouth is shut.";
162
+ readonly cacheGuarded: "Old Basaltback is coiled round the cache. You will not get a hand on it while he stands.";
163
+ readonly cacheTaken: "You have had your share of this run. The cache is empty for you until the Coil is woken again.";
164
+ readonly cacheOpen: "You lever up the lid of the vault cache and take your share.";
165
+ readonly rubbings: "A chalk board of rubbings from the slabs: seven glyphs, a serpent head on each, and under them a note in a careful hand. \"The order changes every run. The plaque never lies. Do not touch a slab you have not read.\"";
166
+ };
167
+ /** The vault cache: coins and bars of your metal tier, coal and arrows, now and then a piece of your tier (the scaled events' table, rollScaledEventLoot). No food. */
168
+ export declare const SS_VAULT_LOOT: readonly WorldEventLoot[];
169
+ /** Explorer XP the first time a player warms the whole Coil in a run, and for the cache. */
170
+ export declare const SS_XP: {
171
+ readonly coil: 260;
172
+ readonly cache: 180;
173
+ };
174
+ export declare const BASALTBACK_KIND = "basaltback";
175
+ export declare const BASALTBACK_NAME = "Old Basaltback";
176
+ export declare const BASALTBACK: {
177
+ readonly id: "ss-basaltback-1";
178
+ readonly x: 1914;
179
+ readonly z: 441;
180
+ readonly leash: 3;
181
+ /** Level 39 (sheet 6): the top of the band, never 41+. */
182
+ readonly level: readonly [number, number];
183
+ readonly maxHit: 31;
184
+ /** A mini-boss's hide: much thicker than the level's ordinary health. */
185
+ readonly healthScale: 2.5;
186
+ /** Drawn bigger than a Stone Serpent (the same model, scaled). */
187
+ readonly scale: 2.6;
188
+ readonly note: "A huge stone serpent with a ridge of black basalt plates down his back, coiled round the cache in the vault behind the Serpent's Mouth. Passive until struck. Every fourth blow he rears and a ring is painted on the vault floor round him, a turn ahead: step clear of it and the Coil Slam goes wide. Back six to eight minutes after he falls.";
189
+ };
190
+ export declare const BASALTBACK_RESPAWN_MS: {
191
+ readonly minMs: 360000;
192
+ readonly maxMs: 480000;
193
+ };
194
+ export declare const BASALTBACK_PACE: {
195
+ readonly speed: 0.6;
196
+ readonly idleChance: 0.8;
197
+ readonly pause: readonly [number, number];
198
+ };
199
+ /** Placeholders for the balance pass: coins, steel, coal, and a chance at a silver or gold bar. No food. */
200
+ export declare const BASALTBACK_DROPS: readonly {
201
+ itemKind: string;
202
+ chance: number;
203
+ minQty: number;
204
+ maxQty: number;
205
+ }[];
206
+ /** The model the client draws him with until he has one (the Stone Serpent's, at BASALTBACK.scale). */
207
+ export declare const BASALTBACK_STAND_IN = "stoneserpent";
208
+ export type SsPiece = {
209
+ readonly id: string;
210
+ readonly kind: 'dreadmodel' | 'campfire' | 'barrel' | 'bountyboard' | 'stove' | 'signpost' | 'rock';
211
+ readonly style: string;
212
+ readonly x: number;
213
+ readonly z: number;
214
+ readonly scale?: number;
215
+ };
216
+ /** Reader's Lean-to: the canvas lean-to, the rubbing table, the tripod, the stone range, the Bounty Board, crates. No bank. */
217
+ export declare const SS_CAMP_PIECES: readonly SsPiece[];
218
+ /** The basking ground's warm boulders (east of the den, dressing) and the vault's lamps and stores. */
219
+ export declare const SS_SITE_PIECES: readonly SsPiece[];
220
+ /** The signs (the placard signpost). */
221
+ export declare const SS_SIGNS: ReadonlyArray<{
222
+ readonly id: string;
223
+ readonly x: number;
224
+ readonly z: number;
225
+ readonly text: string;
226
+ }>;
227
+ export type SsFolk = {
228
+ readonly id: string;
229
+ readonly name: string;
230
+ readonly place: string;
231
+ readonly x: number;
232
+ readonly z: number;
233
+ readonly faceX: number;
234
+ readonly faceZ: number;
235
+ readonly leash: number;
236
+ readonly speak: string;
237
+ readonly extras?: ReadonlyArray<{
238
+ readonly id: string;
239
+ readonly label: string;
240
+ readonly say: string;
241
+ }>;
242
+ };
243
+ /** The five people of sheet 8, by their EXACT names (sheet 6's "Ventmapper Isolde Pryce" is not one of them). */
244
+ export declare const SS_FOLK_NAMES: {
245
+ readonly reader: "Slab-Reader Ysolde Marrow";
246
+ readonly surveyor: "Surveyor Kettil Brandt";
247
+ readonly scout: "Pass Scout Wynne Hale";
248
+ readonly clerk: "Rubbing-Clerk Corin Tave";
249
+ readonly cook: "Cook Hesper Dunmore";
250
+ };
251
+ /** The four residents (named residents on the default look, stationary): the cook is in campTraders.ts. */
252
+ export declare const SS_FOLK: ReadonlyArray<SsFolk>;
253
+ export declare function ssFolkByName(name: string | null | undefined): SsFolk | null;
254
+ /** The camp's cook, who lives in CAMP_TRADERS (campTraders.ts) beside the other camps' cooks. */
255
+ export declare const SS_COOK: {
256
+ readonly id: "camp-serpent-stones";
257
+ readonly name: "Cook Hesper Dunmore";
258
+ readonly x: 1896;
259
+ readonly z: 489;
260
+ readonly faceX: 1897;
261
+ readonly faceZ: 486;
262
+ };
263
+ /** Standable tiles for teleports, smokes and the helper. */
264
+ export declare const SS_STANDS: {
265
+ readonly road: {
266
+ readonly x: 1872;
267
+ readonly z: 485;
268
+ };
269
+ readonly gate: {
270
+ readonly x: 1880;
271
+ readonly z: 485;
272
+ };
273
+ readonly camp: {
274
+ readonly x: 1892;
275
+ readonly z: 482;
276
+ };
277
+ readonly plaque: {
278
+ readonly x: 1888;
279
+ readonly z: 475;
280
+ };
281
+ readonly coil: {
282
+ readonly x: 1893;
283
+ readonly z: 460;
284
+ };
285
+ readonly basking: {
286
+ readonly x: 1889;
287
+ readonly z: 448;
288
+ };
289
+ readonly mouth: {
290
+ readonly x: 1902;
291
+ readonly z: 441;
292
+ };
293
+ readonly vault: {
294
+ readonly x: 1911;
295
+ readonly z: 441;
296
+ };
297
+ readonly north: {
298
+ readonly x: 1895;
299
+ readonly z: 435;
300
+ };
301
+ };
302
+ export declare const SS_PLACE_TEXT = "The Serpent Stones are a fenced strip of grass on the Dwarf Road's east floor, between the rail and the canyon's east cliff, north of the Avalanche Chute. The Lean-to Gate, across the road from the Pass-Road Camp, is the one way in. Inside, Reader's Lean-to is a little survey camp with a rubbing table, a chalk board of rubbings, a stone range whose cook buys what you cook, and a Bounty Board; there is no bank.";
303
+ export declare const SS_COIL_TEXT = "THE COIL: seven great slabs lie along the strip in an S-curve, each carved with a serpent head glyph in its own colour. The Sun Plaque at the Coil's foot shows the order for this run, drawn afresh every run. Touch the slabs in that order and each warms; touch a wrong one and they all cool and two stone serpents rise at you. All seven warm open the Serpent's Mouth in the cliff for ten minutes, onto a vault with a cache that pays by your metal tier, once each per run, and Old Basaltback (level 39) coiled round it. Nothing in it heals and nothing in the cache is food.";
304
+ /** The names the hover and the guide give each quest prop. */
305
+ export declare const SS_QUEST_PROP_NAMES: Readonly<Record<string, string>>;
306
+ /** The verb on the hover for each prop. */
307
+ export declare const SS_PROP_VERBS: Readonly<Record<string, string>>;
308
+ /** The model a Serpent Stones quest prop draws with (the Sunken Wayshrine's symbol stones as stand-ins, upgrades row `serpent-stones-slabs`), or null. */
309
+ export declare function serpentStonesPropModel(prop: string, style?: string): string | null;
310
+ /** Does this prop belong to the Serpent Stones (the backend's click handler owns it)? */
311
+ export declare function isSerpentStonesProp(style: string | null | undefined): boolean;
312
+ /** Reader's Lean-to and the vault (inserted ahead of the Dwarf Road's den zones, expandedContracts.ts). */
313
+ export declare const SS_DISCOVERY_ZONES: readonly DiscoveryZone[];
314
+ /** The Coil: the strip round the den (inserted after the Dwarf Road's den zones, so the den's own "The Serpent Stones" wins inside its box). */
315
+ export declare const SS_COIL_DISCOVERY_ZONE: DiscoveryZone;
316
+ //# sourceMappingURL=serpentStones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serpentStones.d.ts","sourceRoot":"","sources":["../src/serpentStones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C,eAAO,MAAM,OAAO,uBAAuB,CAAC;AAC5C,eAAO,MAAM,SAAS;;;CAAgC,CAAC;AAEvD,iFAAiF;AACjF,eAAO,MAAM,aAAa;;;CAAoC,CAAC;AAC/D,eAAO,MAAM,aAAa;;;CAAoC,CAAC;AAC/D,eAAO,MAAM,aAAa;;;CAA0E,CAAC;AACrG,wGAAwG;AACxG,eAAO,MAAM,MAAM,EAAE,cAA+F,CAAC;AAErH,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AACD,kIAAkI;AAClI,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAGrE;AACD,oHAAoH;AACpH,eAAO,MAAM,OAAO;;;;CAA6C,CAAC;AAClE,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAAyG,CAAC;AAE1J,oGAAoG;AACpG,eAAO,MAAM,aAAa;;;;CAA6C,CAAC;AACxE,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C;AACD,yHAAyH;AACzH,eAAO,MAAM,aAAa;;;;;CAA0F,CAAC;AACrH,yEAAyE;AACzE,eAAO,MAAM,QAAQ,EAAE,cAAmF,CAAC;AAC3G,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,eAAO,MAAM,SAAS,GAAI,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,YAAO,KAAG,OACK,CAAC;AACnF,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAAoC,CAAC;AACtF,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAAyC,CAAC;AAC/F,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAGvD;AACD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AACD,mJAAmJ;AACnJ,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIvD;AACD,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED,2EAA2E;AAC3E,eAAO,MAAM,WAAW,EAAE,cAAiE,CAAC;AAC5F,0GAA0G;AAC1G,eAAO,MAAM,cAAc,EAAE,cAAiE,CAAC;AAI/F,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AACpF,yFAAyF;AACzF,eAAO,MAAM,QAAQ,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAQvJ,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAAiC,CAAC;AAE1E,eAAO,MAAM,OAAO;;;;;;;;CAQV,CAAC;AACX,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,MAAwB,CAAC;AAC/D,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,EAAE,MAAM,OAAO,KAAG,MAA0D,CAAC;AACnH,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAG5E;AACD,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO;oBA3Be,OAAO;mBAAiB,MAAM;qBAAmB,MAAM;gBAAc,MAAM;gBAAc,MAAM;CA2BrE,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAClH,eAAO,MAAM,SAAS,EAAE,WAAoF,CAAC;AAC7G,qHAAqH;AACrH,eAAO,MAAM,QAAQ,EAAE,WAAyF,CAAC;AACjH,eAAO,MAAM,mBAAmB,QAA2B,CAAC;AAC5D,eAAO,MAAM,QAAQ,EAAE,WAAoF,CAAC;AAC5G,eAAO,MAAM,WAAW,EAAE,WAAiF,CAAC;AAC5G,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAyG,CAAC;AAC1J,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAAmE,CAAC;AAErH,iIAAiI;AACjI,eAAO,MAAM,UAAU,QAAc,CAAC;AACtC,sIAAsI;AACtI,eAAO,MAAM,eAAe,QAAa,CAAC;AAC1C,wHAAwH;AACxH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,sJAAsJ;AACtJ,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,gBAAgB,SAAU,CAAC;AACxC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAY,CAAC;AACnE,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,4GAA4G;AAC5G,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,MAAM,GAAG,OAAO,EAAE,CAOzD;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED,eAAO,MAAM,OAAO;0BACL,MAAM;;;;;;;;;;;;;;;CAeX,CAAC;AAEX,uKAAuK;AACvK,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EAQlD,CAAC;AACF,4FAA4F;AAC5F,eAAO,MAAM,KAAK;;;CAAqC,CAAC;AAIxD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,UAAU;;;;;IAKrB,0DAA0D;oBACvC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;;IAE5C,yEAAyE;;IAEzE,kEAAkE;;;CAG1D,CAAC;AACX,eAAO,MAAM,qBAAqB;;;CAA8C,CAAC;AACjF,eAAO,MAAM,eAAe;;;oBAAoD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;CAAW,CAAC;AACrH,4GAA4G;AAC5G,eAAO,MAAM,gBAAgB,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAM3G,CAAC;AACF,uGAAuG;AACvG,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAIlD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACpG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,+HAA+H;AAC/H,eAAO,MAAM,cAAc,EAAE,SAAS,OAAO,EAgB5C,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,SAAS,OAAO,EAS5C,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,QAAQ,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAG1H,CAAC;AAIF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxG,CAAC;AAEF,iHAAiH;AACjH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAIX,2GAA2G;AAC3G,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,MAAM,CAgCzC,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE3E;AAED,iGAAiG;AACjG,eAAO,MAAM,OAAO;;;;;;;CAA6G,CAAC;AAElI,4DAA4D;AAC5D,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUZ,CAAC;AAEX,eAAO,MAAM,aAAa,kaACuY,CAAC;AACla,eAAO,MAAM,YAAY,gkBACsiB,CAAC;AAEhkB,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOhE,CAAC;AACF,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG1D,CAAC;AAMF,0JAA0J;AAC1J,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYlF;AACD,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7E;AAID,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EAGtD,CAAC;AACF,gJAAgJ;AAChJ,eAAO,MAAM,sBAAsB,EAAE,aAA2J,CAAC"}