@syntrologie/adapt-faq 0.0.0-semantically-released

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.
@@ -0,0 +1,653 @@
1
+ /**
2
+ * Adaptive FAQ - Config Schema
3
+ *
4
+ * Zod schema for validating FAQ accordion configuration.
5
+ * Demonstrates compositional action pattern with per-item showWhen.
6
+ */
7
+ import { z } from 'zod';
8
+ /**
9
+ * Schema for a single FAQ question (compositional action).
10
+ */
11
+ export declare const FAQQuestionSchema: z.ZodObject<{
12
+ kind: z.ZodLiteral<"faq:question">;
13
+ config: z.ZodObject<{
14
+ /** Unique identifier for this question */
15
+ id: z.ZodString;
16
+ /** The question text */
17
+ question: z.ZodString;
18
+ /** The answer text (supports basic markdown) */
19
+ answer: z.ZodString;
20
+ /** Optional category for grouping */
21
+ category: z.ZodOptional<z.ZodString>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ question: string;
24
+ answer: string;
25
+ id: string;
26
+ category?: string | undefined;
27
+ }, {
28
+ question: string;
29
+ answer: string;
30
+ id: string;
31
+ category?: string | undefined;
32
+ }>;
33
+ /** Per-item activation strategy (null = always show) */
34
+ showWhen: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
35
+ type: z.ZodLiteral<"rules">;
36
+ rules: z.ZodArray<z.ZodObject<{
37
+ conditions: z.ZodArray<z.ZodObject<{
38
+ type: z.ZodString;
39
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
40
+ type: z.ZodString;
41
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
42
+ type: z.ZodString;
43
+ }, z.ZodTypeAny, "passthrough">>, "many">;
44
+ value: z.ZodUnknown;
45
+ }, "strip", z.ZodTypeAny, {
46
+ conditions: z.objectOutputType<{
47
+ type: z.ZodString;
48
+ }, z.ZodTypeAny, "passthrough">[];
49
+ value?: unknown;
50
+ }, {
51
+ conditions: z.objectInputType<{
52
+ type: z.ZodString;
53
+ }, z.ZodTypeAny, "passthrough">[];
54
+ value?: unknown;
55
+ }>, "many">;
56
+ default: z.ZodUnknown;
57
+ }, "strip", z.ZodTypeAny, {
58
+ rules: {
59
+ conditions: z.objectOutputType<{
60
+ type: z.ZodString;
61
+ }, z.ZodTypeAny, "passthrough">[];
62
+ value?: unknown;
63
+ }[];
64
+ type: "rules";
65
+ default?: unknown;
66
+ }, {
67
+ rules: {
68
+ conditions: z.objectInputType<{
69
+ type: z.ZodString;
70
+ }, z.ZodTypeAny, "passthrough">[];
71
+ value?: unknown;
72
+ }[];
73
+ type: "rules";
74
+ default?: unknown;
75
+ }>, z.ZodObject<{
76
+ type: z.ZodLiteral<"score">;
77
+ field: z.ZodString;
78
+ threshold: z.ZodNumber;
79
+ above: z.ZodUnknown;
80
+ below: z.ZodUnknown;
81
+ }, "strip", z.ZodTypeAny, {
82
+ type: "score";
83
+ field: string;
84
+ threshold: number;
85
+ above?: unknown;
86
+ below?: unknown;
87
+ }, {
88
+ type: "score";
89
+ field: string;
90
+ threshold: number;
91
+ above?: unknown;
92
+ below?: unknown;
93
+ }>, z.ZodObject<{
94
+ type: z.ZodLiteral<"model">;
95
+ modelId: z.ZodString;
96
+ inputs: z.ZodArray<z.ZodString, "many">;
97
+ outputMapping: z.ZodRecord<z.ZodString, z.ZodUnknown>;
98
+ default: z.ZodUnknown;
99
+ }, "strip", z.ZodTypeAny, {
100
+ type: "model";
101
+ modelId: string;
102
+ inputs: string[];
103
+ outputMapping: Record<string, unknown>;
104
+ default?: unknown;
105
+ }, {
106
+ type: "model";
107
+ modelId: string;
108
+ inputs: string[];
109
+ outputMapping: Record<string, unknown>;
110
+ default?: unknown;
111
+ }>, z.ZodObject<{
112
+ type: z.ZodLiteral<"external">;
113
+ endpoint: z.ZodString;
114
+ method: z.ZodOptional<z.ZodEnum<["GET", "POST"]>>;
115
+ default: z.ZodUnknown;
116
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ type: "external";
119
+ endpoint: string;
120
+ default?: unknown;
121
+ method?: "GET" | "POST" | undefined;
122
+ timeoutMs?: number | undefined;
123
+ }, {
124
+ type: "external";
125
+ endpoint: string;
126
+ default?: unknown;
127
+ method?: "GET" | "POST" | undefined;
128
+ timeoutMs?: number | undefined;
129
+ }>]>>>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ config: {
132
+ question: string;
133
+ answer: string;
134
+ id: string;
135
+ category?: string | undefined;
136
+ };
137
+ kind: "faq:question";
138
+ showWhen?: {
139
+ rules: {
140
+ conditions: z.objectOutputType<{
141
+ type: z.ZodString;
142
+ }, z.ZodTypeAny, "passthrough">[];
143
+ value?: unknown;
144
+ }[];
145
+ type: "rules";
146
+ default?: unknown;
147
+ } | {
148
+ type: "score";
149
+ field: string;
150
+ threshold: number;
151
+ above?: unknown;
152
+ below?: unknown;
153
+ } | {
154
+ type: "model";
155
+ modelId: string;
156
+ inputs: string[];
157
+ outputMapping: Record<string, unknown>;
158
+ default?: unknown;
159
+ } | {
160
+ type: "external";
161
+ endpoint: string;
162
+ default?: unknown;
163
+ method?: "GET" | "POST" | undefined;
164
+ timeoutMs?: number | undefined;
165
+ } | null | undefined;
166
+ }, {
167
+ config: {
168
+ question: string;
169
+ answer: string;
170
+ id: string;
171
+ category?: string | undefined;
172
+ };
173
+ kind: "faq:question";
174
+ showWhen?: {
175
+ rules: {
176
+ conditions: z.objectInputType<{
177
+ type: z.ZodString;
178
+ }, z.ZodTypeAny, "passthrough">[];
179
+ value?: unknown;
180
+ }[];
181
+ type: "rules";
182
+ default?: unknown;
183
+ } | {
184
+ type: "score";
185
+ field: string;
186
+ threshold: number;
187
+ above?: unknown;
188
+ below?: unknown;
189
+ } | {
190
+ type: "model";
191
+ modelId: string;
192
+ inputs: string[];
193
+ outputMapping: Record<string, unknown>;
194
+ default?: unknown;
195
+ } | {
196
+ type: "external";
197
+ endpoint: string;
198
+ default?: unknown;
199
+ method?: "GET" | "POST" | undefined;
200
+ timeoutMs?: number | undefined;
201
+ } | null | undefined;
202
+ }>;
203
+ export type FAQQuestionSchemaType = z.infer<typeof FAQQuestionSchema>;
204
+ /**
205
+ * Full configuration schema for adaptive-faq.
206
+ */
207
+ export declare const configSchema: z.ZodObject<{
208
+ /** Whether only one or multiple questions can be expanded at once */
209
+ expandBehavior: z.ZodDefault<z.ZodEnum<["single", "multiple"]>>;
210
+ /** Whether to show a search/filter input */
211
+ searchable: z.ZodDefault<z.ZodBoolean>;
212
+ /** Color theme */
213
+ theme: z.ZodDefault<z.ZodEnum<["light", "dark", "auto"]>>;
214
+ /** FAQ questions (compositional actions) */
215
+ actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
216
+ kind: z.ZodLiteral<"faq:question">;
217
+ config: z.ZodObject<{
218
+ /** Unique identifier for this question */
219
+ id: z.ZodString;
220
+ /** The question text */
221
+ question: z.ZodString;
222
+ /** The answer text (supports basic markdown) */
223
+ answer: z.ZodString;
224
+ /** Optional category for grouping */
225
+ category: z.ZodOptional<z.ZodString>;
226
+ }, "strip", z.ZodTypeAny, {
227
+ question: string;
228
+ answer: string;
229
+ id: string;
230
+ category?: string | undefined;
231
+ }, {
232
+ question: string;
233
+ answer: string;
234
+ id: string;
235
+ category?: string | undefined;
236
+ }>;
237
+ /** Per-item activation strategy (null = always show) */
238
+ showWhen: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
239
+ type: z.ZodLiteral<"rules">;
240
+ rules: z.ZodArray<z.ZodObject<{
241
+ conditions: z.ZodArray<z.ZodObject<{
242
+ type: z.ZodString;
243
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
244
+ type: z.ZodString;
245
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
246
+ type: z.ZodString;
247
+ }, z.ZodTypeAny, "passthrough">>, "many">;
248
+ value: z.ZodUnknown;
249
+ }, "strip", z.ZodTypeAny, {
250
+ conditions: z.objectOutputType<{
251
+ type: z.ZodString;
252
+ }, z.ZodTypeAny, "passthrough">[];
253
+ value?: unknown;
254
+ }, {
255
+ conditions: z.objectInputType<{
256
+ type: z.ZodString;
257
+ }, z.ZodTypeAny, "passthrough">[];
258
+ value?: unknown;
259
+ }>, "many">;
260
+ default: z.ZodUnknown;
261
+ }, "strip", z.ZodTypeAny, {
262
+ rules: {
263
+ conditions: z.objectOutputType<{
264
+ type: z.ZodString;
265
+ }, z.ZodTypeAny, "passthrough">[];
266
+ value?: unknown;
267
+ }[];
268
+ type: "rules";
269
+ default?: unknown;
270
+ }, {
271
+ rules: {
272
+ conditions: z.objectInputType<{
273
+ type: z.ZodString;
274
+ }, z.ZodTypeAny, "passthrough">[];
275
+ value?: unknown;
276
+ }[];
277
+ type: "rules";
278
+ default?: unknown;
279
+ }>, z.ZodObject<{
280
+ type: z.ZodLiteral<"score">;
281
+ field: z.ZodString;
282
+ threshold: z.ZodNumber;
283
+ above: z.ZodUnknown;
284
+ below: z.ZodUnknown;
285
+ }, "strip", z.ZodTypeAny, {
286
+ type: "score";
287
+ field: string;
288
+ threshold: number;
289
+ above?: unknown;
290
+ below?: unknown;
291
+ }, {
292
+ type: "score";
293
+ field: string;
294
+ threshold: number;
295
+ above?: unknown;
296
+ below?: unknown;
297
+ }>, z.ZodObject<{
298
+ type: z.ZodLiteral<"model">;
299
+ modelId: z.ZodString;
300
+ inputs: z.ZodArray<z.ZodString, "many">;
301
+ outputMapping: z.ZodRecord<z.ZodString, z.ZodUnknown>;
302
+ default: z.ZodUnknown;
303
+ }, "strip", z.ZodTypeAny, {
304
+ type: "model";
305
+ modelId: string;
306
+ inputs: string[];
307
+ outputMapping: Record<string, unknown>;
308
+ default?: unknown;
309
+ }, {
310
+ type: "model";
311
+ modelId: string;
312
+ inputs: string[];
313
+ outputMapping: Record<string, unknown>;
314
+ default?: unknown;
315
+ }>, z.ZodObject<{
316
+ type: z.ZodLiteral<"external">;
317
+ endpoint: z.ZodString;
318
+ method: z.ZodOptional<z.ZodEnum<["GET", "POST"]>>;
319
+ default: z.ZodUnknown;
320
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
321
+ }, "strip", z.ZodTypeAny, {
322
+ type: "external";
323
+ endpoint: string;
324
+ default?: unknown;
325
+ method?: "GET" | "POST" | undefined;
326
+ timeoutMs?: number | undefined;
327
+ }, {
328
+ type: "external";
329
+ endpoint: string;
330
+ default?: unknown;
331
+ method?: "GET" | "POST" | undefined;
332
+ timeoutMs?: number | undefined;
333
+ }>]>>>;
334
+ }, "strip", z.ZodTypeAny, {
335
+ config: {
336
+ question: string;
337
+ answer: string;
338
+ id: string;
339
+ category?: string | undefined;
340
+ };
341
+ kind: "faq:question";
342
+ showWhen?: {
343
+ rules: {
344
+ conditions: z.objectOutputType<{
345
+ type: z.ZodString;
346
+ }, z.ZodTypeAny, "passthrough">[];
347
+ value?: unknown;
348
+ }[];
349
+ type: "rules";
350
+ default?: unknown;
351
+ } | {
352
+ type: "score";
353
+ field: string;
354
+ threshold: number;
355
+ above?: unknown;
356
+ below?: unknown;
357
+ } | {
358
+ type: "model";
359
+ modelId: string;
360
+ inputs: string[];
361
+ outputMapping: Record<string, unknown>;
362
+ default?: unknown;
363
+ } | {
364
+ type: "external";
365
+ endpoint: string;
366
+ default?: unknown;
367
+ method?: "GET" | "POST" | undefined;
368
+ timeoutMs?: number | undefined;
369
+ } | null | undefined;
370
+ }, {
371
+ config: {
372
+ question: string;
373
+ answer: string;
374
+ id: string;
375
+ category?: string | undefined;
376
+ };
377
+ kind: "faq:question";
378
+ showWhen?: {
379
+ rules: {
380
+ conditions: z.objectInputType<{
381
+ type: z.ZodString;
382
+ }, z.ZodTypeAny, "passthrough">[];
383
+ value?: unknown;
384
+ }[];
385
+ type: "rules";
386
+ default?: unknown;
387
+ } | {
388
+ type: "score";
389
+ field: string;
390
+ threshold: number;
391
+ above?: unknown;
392
+ below?: unknown;
393
+ } | {
394
+ type: "model";
395
+ modelId: string;
396
+ inputs: string[];
397
+ outputMapping: Record<string, unknown>;
398
+ default?: unknown;
399
+ } | {
400
+ type: "external";
401
+ endpoint: string;
402
+ default?: unknown;
403
+ method?: "GET" | "POST" | undefined;
404
+ timeoutMs?: number | undefined;
405
+ } | null | undefined;
406
+ }>, "many">>;
407
+ }, "strip", z.ZodTypeAny, {
408
+ theme: "light" | "dark" | "auto";
409
+ searchable: boolean;
410
+ expandBehavior: "single" | "multiple";
411
+ actions: {
412
+ config: {
413
+ question: string;
414
+ answer: string;
415
+ id: string;
416
+ category?: string | undefined;
417
+ };
418
+ kind: "faq:question";
419
+ showWhen?: {
420
+ rules: {
421
+ conditions: z.objectOutputType<{
422
+ type: z.ZodString;
423
+ }, z.ZodTypeAny, "passthrough">[];
424
+ value?: unknown;
425
+ }[];
426
+ type: "rules";
427
+ default?: unknown;
428
+ } | {
429
+ type: "score";
430
+ field: string;
431
+ threshold: number;
432
+ above?: unknown;
433
+ below?: unknown;
434
+ } | {
435
+ type: "model";
436
+ modelId: string;
437
+ inputs: string[];
438
+ outputMapping: Record<string, unknown>;
439
+ default?: unknown;
440
+ } | {
441
+ type: "external";
442
+ endpoint: string;
443
+ default?: unknown;
444
+ method?: "GET" | "POST" | undefined;
445
+ timeoutMs?: number | undefined;
446
+ } | null | undefined;
447
+ }[];
448
+ }, {
449
+ theme?: "light" | "dark" | "auto" | undefined;
450
+ searchable?: boolean | undefined;
451
+ expandBehavior?: "single" | "multiple" | undefined;
452
+ actions?: {
453
+ config: {
454
+ question: string;
455
+ answer: string;
456
+ id: string;
457
+ category?: string | undefined;
458
+ };
459
+ kind: "faq:question";
460
+ showWhen?: {
461
+ rules: {
462
+ conditions: z.objectInputType<{
463
+ type: z.ZodString;
464
+ }, z.ZodTypeAny, "passthrough">[];
465
+ value?: unknown;
466
+ }[];
467
+ type: "rules";
468
+ default?: unknown;
469
+ } | {
470
+ type: "score";
471
+ field: string;
472
+ threshold: number;
473
+ above?: unknown;
474
+ below?: unknown;
475
+ } | {
476
+ type: "model";
477
+ modelId: string;
478
+ inputs: string[];
479
+ outputMapping: Record<string, unknown>;
480
+ default?: unknown;
481
+ } | {
482
+ type: "external";
483
+ endpoint: string;
484
+ default?: unknown;
485
+ method?: "GET" | "POST" | undefined;
486
+ timeoutMs?: number | undefined;
487
+ } | null | undefined;
488
+ }[] | undefined;
489
+ }>;
490
+ export type FAQConfig = z.infer<typeof configSchema>;
491
+ /**
492
+ * Validate a FAQ question action.
493
+ */
494
+ export declare function validateFAQQuestion(data: unknown): z.SafeParseReturnType<{
495
+ config: {
496
+ question: string;
497
+ answer: string;
498
+ id: string;
499
+ category?: string | undefined;
500
+ };
501
+ kind: "faq:question";
502
+ showWhen?: {
503
+ rules: {
504
+ conditions: z.objectInputType<{
505
+ type: z.ZodString;
506
+ }, z.ZodTypeAny, "passthrough">[];
507
+ value?: unknown;
508
+ }[];
509
+ type: "rules";
510
+ default?: unknown;
511
+ } | {
512
+ type: "score";
513
+ field: string;
514
+ threshold: number;
515
+ above?: unknown;
516
+ below?: unknown;
517
+ } | {
518
+ type: "model";
519
+ modelId: string;
520
+ inputs: string[];
521
+ outputMapping: Record<string, unknown>;
522
+ default?: unknown;
523
+ } | {
524
+ type: "external";
525
+ endpoint: string;
526
+ default?: unknown;
527
+ method?: "GET" | "POST" | undefined;
528
+ timeoutMs?: number | undefined;
529
+ } | null | undefined;
530
+ }, {
531
+ config: {
532
+ question: string;
533
+ answer: string;
534
+ id: string;
535
+ category?: string | undefined;
536
+ };
537
+ kind: "faq:question";
538
+ showWhen?: {
539
+ rules: {
540
+ conditions: z.objectOutputType<{
541
+ type: z.ZodString;
542
+ }, z.ZodTypeAny, "passthrough">[];
543
+ value?: unknown;
544
+ }[];
545
+ type: "rules";
546
+ default?: unknown;
547
+ } | {
548
+ type: "score";
549
+ field: string;
550
+ threshold: number;
551
+ above?: unknown;
552
+ below?: unknown;
553
+ } | {
554
+ type: "model";
555
+ modelId: string;
556
+ inputs: string[];
557
+ outputMapping: Record<string, unknown>;
558
+ default?: unknown;
559
+ } | {
560
+ type: "external";
561
+ endpoint: string;
562
+ default?: unknown;
563
+ method?: "GET" | "POST" | undefined;
564
+ timeoutMs?: number | undefined;
565
+ } | null | undefined;
566
+ }>;
567
+ /**
568
+ * Validate the full FAQ config.
569
+ */
570
+ export declare function validateFAQConfig(data: unknown): z.SafeParseReturnType<{
571
+ theme?: "light" | "dark" | "auto" | undefined;
572
+ searchable?: boolean | undefined;
573
+ expandBehavior?: "single" | "multiple" | undefined;
574
+ actions?: {
575
+ config: {
576
+ question: string;
577
+ answer: string;
578
+ id: string;
579
+ category?: string | undefined;
580
+ };
581
+ kind: "faq:question";
582
+ showWhen?: {
583
+ rules: {
584
+ conditions: z.objectInputType<{
585
+ type: z.ZodString;
586
+ }, z.ZodTypeAny, "passthrough">[];
587
+ value?: unknown;
588
+ }[];
589
+ type: "rules";
590
+ default?: unknown;
591
+ } | {
592
+ type: "score";
593
+ field: string;
594
+ threshold: number;
595
+ above?: unknown;
596
+ below?: unknown;
597
+ } | {
598
+ type: "model";
599
+ modelId: string;
600
+ inputs: string[];
601
+ outputMapping: Record<string, unknown>;
602
+ default?: unknown;
603
+ } | {
604
+ type: "external";
605
+ endpoint: string;
606
+ default?: unknown;
607
+ method?: "GET" | "POST" | undefined;
608
+ timeoutMs?: number | undefined;
609
+ } | null | undefined;
610
+ }[] | undefined;
611
+ }, {
612
+ theme: "light" | "dark" | "auto";
613
+ searchable: boolean;
614
+ expandBehavior: "single" | "multiple";
615
+ actions: {
616
+ config: {
617
+ question: string;
618
+ answer: string;
619
+ id: string;
620
+ category?: string | undefined;
621
+ };
622
+ kind: "faq:question";
623
+ showWhen?: {
624
+ rules: {
625
+ conditions: z.objectOutputType<{
626
+ type: z.ZodString;
627
+ }, z.ZodTypeAny, "passthrough">[];
628
+ value?: unknown;
629
+ }[];
630
+ type: "rules";
631
+ default?: unknown;
632
+ } | {
633
+ type: "score";
634
+ field: string;
635
+ threshold: number;
636
+ above?: unknown;
637
+ below?: unknown;
638
+ } | {
639
+ type: "model";
640
+ modelId: string;
641
+ inputs: string[];
642
+ outputMapping: Record<string, unknown>;
643
+ default?: unknown;
644
+ } | {
645
+ type: "external";
646
+ endpoint: string;
647
+ default?: unknown;
648
+ method?: "GET" | "POST" | undefined;
649
+ timeoutMs?: number | undefined;
650
+ } | null | undefined;
651
+ }[];
652
+ }>;
653
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;QAG1B,0CAA0C;;QAE1C,wBAAwB;;QAExB,gDAAgD;;QAEhD,qCAAqC;;;;;;;;;;;;;IAGvC,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAExD,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMtE;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,qEAAqE;;IAErE,4CAA4C;;IAE5C,kBAAkB;;IAElB,4CAA4C;;;;YA7B1C,0CAA0C;;YAE1C,wBAAwB;;YAExB,gDAAgD;;YAEhD,qCAAqC;;;;;;;;;;;;;QAGvC,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBxD,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAMrD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE9C"}