@elaraai/east-ui 0.0.1-beta.16 → 0.0.1-beta.17

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 (122) hide show
  1. package/dist/src/charts/area/index.d.ts +91 -2
  2. package/dist/src/charts/area/index.d.ts.map +1 -1
  3. package/dist/src/charts/area/index.js +255 -34
  4. package/dist/src/charts/area/index.js.map +1 -1
  5. package/dist/src/charts/area/types.d.ts +1344 -16
  6. package/dist/src/charts/area/types.d.ts.map +1 -1
  7. package/dist/src/charts/area/types.js +76 -1
  8. package/dist/src/charts/area/types.js.map +1 -1
  9. package/dist/src/charts/bar/index.d.ts +1 -1
  10. package/dist/src/charts/bar/index.d.ts.map +1 -1
  11. package/dist/src/charts/bar/index.js +62 -33
  12. package/dist/src/charts/bar/index.js.map +1 -1
  13. package/dist/src/charts/bar/types.d.ts +391 -16
  14. package/dist/src/charts/bar/types.d.ts.map +1 -1
  15. package/dist/src/charts/bar/types.js +6 -1
  16. package/dist/src/charts/bar/types.js.map +1 -1
  17. package/dist/src/charts/composed/index.d.ts +103 -0
  18. package/dist/src/charts/composed/index.d.ts.map +1 -0
  19. package/dist/src/charts/composed/index.js +300 -0
  20. package/dist/src/charts/composed/index.js.map +1 -0
  21. package/dist/src/charts/composed/types.d.ts +1183 -0
  22. package/dist/src/charts/composed/types.d.ts.map +1 -0
  23. package/dist/src/charts/composed/types.js +87 -0
  24. package/dist/src/charts/composed/types.js.map +1 -0
  25. package/dist/src/charts/index.d.ts +4488 -847
  26. package/dist/src/charts/index.d.ts.map +1 -1
  27. package/dist/src/charts/index.js +308 -55
  28. package/dist/src/charts/index.js.map +1 -1
  29. package/dist/src/charts/line/index.d.ts +1 -1
  30. package/dist/src/charts/line/index.d.ts.map +1 -1
  31. package/dist/src/charts/line/index.js +62 -33
  32. package/dist/src/charts/line/index.js.map +1 -1
  33. package/dist/src/charts/line/types.d.ts +395 -16
  34. package/dist/src/charts/line/types.d.ts.map +1 -1
  35. package/dist/src/charts/line/types.js +7 -1
  36. package/dist/src/charts/line/types.js.map +1 -1
  37. package/dist/src/charts/pie/index.d.ts.map +1 -1
  38. package/dist/src/charts/pie/index.js +8 -3
  39. package/dist/src/charts/pie/index.js.map +1 -1
  40. package/dist/src/charts/pie/types.d.ts +4 -4
  41. package/dist/src/charts/pie/types.d.ts.map +1 -1
  42. package/dist/src/charts/pie/types.js.map +1 -1
  43. package/dist/src/charts/radar/index.d.ts.map +1 -1
  44. package/dist/src/charts/radar/index.js +11 -4
  45. package/dist/src/charts/radar/index.js.map +1 -1
  46. package/dist/src/charts/radar/types.d.ts +4 -0
  47. package/dist/src/charts/radar/types.d.ts.map +1 -1
  48. package/dist/src/charts/scatter/index.d.ts +1 -1
  49. package/dist/src/charts/scatter/index.d.ts.map +1 -1
  50. package/dist/src/charts/scatter/index.js +55 -20
  51. package/dist/src/charts/scatter/index.js.map +1 -1
  52. package/dist/src/charts/scatter/types.d.ts +386 -24
  53. package/dist/src/charts/scatter/types.d.ts.map +1 -1
  54. package/dist/src/charts/scatter/types.js +5 -1
  55. package/dist/src/charts/scatter/types.js.map +1 -1
  56. package/dist/src/charts/types.d.ts +625 -4
  57. package/dist/src/charts/types.d.ts.map +1 -1
  58. package/dist/src/charts/types.js +406 -1
  59. package/dist/src/charts/types.js.map +1 -1
  60. package/dist/src/collections/gantt/index.d.ts +1103 -24773
  61. package/dist/src/collections/gantt/index.d.ts.map +1 -1
  62. package/dist/src/collections/planner/index.d.ts +5 -9473
  63. package/dist/src/collections/planner/index.d.ts.map +1 -1
  64. package/dist/src/collections/table/index.d.ts +626 -19562
  65. package/dist/src/collections/table/index.d.ts.map +1 -1
  66. package/dist/src/collections/table/index.js.map +1 -1
  67. package/dist/src/component.d.ts +3850 -709
  68. package/dist/src/component.d.ts.map +1 -1
  69. package/dist/src/component.js +4 -1
  70. package/dist/src/component.js.map +1 -1
  71. package/dist/src/container/card/index.d.ts +9 -28415
  72. package/dist/src/container/card/index.d.ts.map +1 -1
  73. package/dist/src/container/card/index.js.map +1 -1
  74. package/dist/src/disclosure/accordion/index.d.ts +4 -18908
  75. package/dist/src/disclosure/accordion/index.d.ts.map +1 -1
  76. package/dist/src/disclosure/accordion/index.js.map +1 -1
  77. package/dist/src/disclosure/carousel/index.d.ts +5 -9473
  78. package/dist/src/disclosure/carousel/index.d.ts.map +1 -1
  79. package/dist/src/disclosure/carousel/index.js.map +1 -1
  80. package/dist/src/disclosure/tabs/index.d.ts +25 -18929
  81. package/dist/src/disclosure/tabs/index.d.ts.map +1 -1
  82. package/dist/src/disclosure/tabs/index.js.map +1 -1
  83. package/dist/src/layout/box/index.d.ts +5 -9601
  84. package/dist/src/layout/box/index.d.ts.map +1 -1
  85. package/dist/src/layout/box/index.js.map +1 -1
  86. package/dist/src/layout/flex/index.d.ts +5 -9591
  87. package/dist/src/layout/flex/index.d.ts.map +1 -1
  88. package/dist/src/layout/flex/index.js.map +1 -1
  89. package/dist/src/layout/grid/index.d.ts +7 -19043
  90. package/dist/src/layout/grid/index.d.ts.map +1 -1
  91. package/dist/src/layout/grid/index.js.map +1 -1
  92. package/dist/src/layout/splitter/index.d.ts +7 -18949
  93. package/dist/src/layout/splitter/index.d.ts.map +1 -1
  94. package/dist/src/layout/splitter/index.js.map +1 -1
  95. package/dist/src/layout/stack/index.d.ts +5 -9587
  96. package/dist/src/layout/stack/index.d.ts.map +1 -1
  97. package/dist/src/layout/stack/index.js.map +1 -1
  98. package/dist/src/overlays/action-bar/index.d.ts +5 -25
  99. package/dist/src/overlays/action-bar/index.d.ts.map +1 -1
  100. package/dist/src/overlays/action-bar/index.js.map +1 -1
  101. package/dist/src/overlays/dialog/index.d.ts +97 -38115
  102. package/dist/src/overlays/dialog/index.d.ts.map +1 -1
  103. package/dist/src/overlays/dialog/index.js.map +1 -1
  104. package/dist/src/overlays/drawer/index.d.ts +97 -38013
  105. package/dist/src/overlays/drawer/index.d.ts.map +1 -1
  106. package/dist/src/overlays/drawer/index.js.map +1 -1
  107. package/dist/src/overlays/hover-card/index.d.ts +7 -18961
  108. package/dist/src/overlays/hover-card/index.d.ts.map +1 -1
  109. package/dist/src/overlays/hover-card/index.js.map +1 -1
  110. package/dist/src/overlays/menu/index.d.ts +7 -9499
  111. package/dist/src/overlays/menu/index.d.ts.map +1 -1
  112. package/dist/src/overlays/menu/index.js.map +1 -1
  113. package/dist/src/overlays/popover/index.d.ts +7 -18959
  114. package/dist/src/overlays/popover/index.d.ts.map +1 -1
  115. package/dist/src/overlays/popover/index.js.map +1 -1
  116. package/dist/src/overlays/toggle-tip/index.d.ts +5 -9491
  117. package/dist/src/overlays/toggle-tip/index.d.ts.map +1 -1
  118. package/dist/src/overlays/toggle-tip/index.js.map +1 -1
  119. package/dist/src/overlays/tooltip/index.d.ts +5 -9483
  120. package/dist/src/overlays/tooltip/index.d.ts.map +1 -1
  121. package/dist/src/overlays/tooltip/index.js.map +1 -1
  122. package/package.json +1 -1
@@ -0,0 +1,300 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ import { ArrayType, DictType, East, Expr, LiteralValueType, none, some, StringType, StructType, variant, IntegerType, FloatType, } from "@elaraai/east";
6
+ import { UIComponentType } from "../../component.js";
7
+ import { ChartBrushType, CurveType, BarLayoutType, StackOffsetType, MultiSeriesDataType, ReferenceLineType, ReferenceDotType, ReferenceAreaType, YAxisIdType, axisStyleToType, gridStyleToType, tooltipStyleToType, legendStyleToType, marginStyleToType, referenceLineStyleToType, referenceDotStyleToType, referenceAreaStyleToType, } from "../types.js";
8
+ import { ComposedSeriesType, } from "./types.js";
9
+ // Re-export types
10
+ export { ComposedChartType, ComposedSeriesType, } from "./types.js";
11
+ // ============================================================================
12
+ // Series Conversion Helpers
13
+ // ============================================================================
14
+ /**
15
+ * Converts a TypeScript series config to an East variant value.
16
+ */
17
+ function seriesConfigToVariant(name, config) {
18
+ // Convert yAxisId string literal to variant
19
+ const yAxisIdValue = config.yAxisId !== undefined
20
+ ? (typeof config.yAxisId === "string"
21
+ ? some(East.value(variant(config.yAxisId, null), YAxisIdType))
22
+ : some(config.yAxisId))
23
+ : none;
24
+ switch (config.type) {
25
+ case "line":
26
+ return variant("line", {
27
+ name,
28
+ color: config.color !== undefined ? some(config.color) : none,
29
+ stackId: config.stackId !== undefined ? some(config.stackId) : none,
30
+ label: config.label !== undefined ? some(config.label) : none,
31
+ stroke: config.stroke !== undefined ? some(config.stroke) : none,
32
+ strokeWidth: config.strokeWidth !== undefined ? some(config.strokeWidth) : none,
33
+ strokeDasharray: config.strokeDasharray !== undefined ? some(config.strokeDasharray) : none,
34
+ showDots: config.showDots !== undefined ? some(config.showDots) : none,
35
+ showLine: config.showLine !== undefined ? some(config.showLine) : none,
36
+ yAxisId: yAxisIdValue,
37
+ });
38
+ case "area":
39
+ return variant("area", {
40
+ name,
41
+ color: config.color !== undefined ? some(config.color) : none,
42
+ stackId: config.stackId !== undefined ? some(config.stackId) : none,
43
+ label: config.label !== undefined ? some(config.label) : none,
44
+ stroke: config.stroke !== undefined ? some(config.stroke) : none,
45
+ strokeWidth: config.strokeWidth !== undefined ? some(config.strokeWidth) : none,
46
+ fill: config.fill !== undefined ? some(config.fill) : none,
47
+ fillOpacity: config.fillOpacity !== undefined ? some(config.fillOpacity) : none,
48
+ strokeDasharray: config.strokeDasharray !== undefined ? some(config.strokeDasharray) : none,
49
+ yAxisId: yAxisIdValue,
50
+ });
51
+ case "area-range":
52
+ return variant("areaRange", {
53
+ name,
54
+ lowKey: config.lowKey,
55
+ highKey: config.highKey,
56
+ color: config.color !== undefined ? some(config.color) : none,
57
+ label: config.label !== undefined ? some(config.label) : none,
58
+ fillOpacity: config.fillOpacity !== undefined ? some(config.fillOpacity) : none,
59
+ stroke: config.stroke !== undefined ? some(config.stroke) : none,
60
+ strokeWidth: config.strokeWidth !== undefined ? some(config.strokeWidth) : none,
61
+ yAxisId: yAxisIdValue,
62
+ });
63
+ case "bar":
64
+ return variant("bar", {
65
+ name,
66
+ color: config.color !== undefined ? some(config.color) : none,
67
+ stackId: config.stackId !== undefined ? some(config.stackId) : none,
68
+ label: config.label !== undefined ? some(config.label) : none,
69
+ stroke: config.stroke !== undefined ? some(config.stroke) : none,
70
+ strokeWidth: config.strokeWidth !== undefined ? some(config.strokeWidth) : none,
71
+ fill: config.fill !== undefined ? some(config.fill) : none,
72
+ fillOpacity: config.fillOpacity !== undefined ? some(config.fillOpacity) : none,
73
+ strokeDasharray: config.strokeDasharray !== undefined ? some(config.strokeDasharray) : none,
74
+ yAxisId: yAxisIdValue,
75
+ });
76
+ case "scatter":
77
+ return variant("scatter", {
78
+ name,
79
+ color: config.color !== undefined ? some(config.color) : none,
80
+ stackId: none, // scatter doesn't stack but ChartSeriesType has it
81
+ label: config.label !== undefined ? some(config.label) : none,
82
+ stroke: config.stroke !== undefined ? some(config.stroke) : none,
83
+ strokeWidth: config.strokeWidth !== undefined ? some(config.strokeWidth) : none,
84
+ fill: config.fill !== undefined ? some(config.fill) : none,
85
+ fillOpacity: config.fillOpacity !== undefined ? some(config.fillOpacity) : none,
86
+ strokeDasharray: none, // scatter doesn't use dashes
87
+ yAxisId: yAxisIdValue,
88
+ });
89
+ }
90
+ }
91
+ // ============================================================================
92
+ // Composed Chart (Single Array Form)
93
+ // ============================================================================
94
+ /**
95
+ * Creates a Composed chart component from a single data array.
96
+ *
97
+ * @typeParam T - The array type containing data structs
98
+ * @param data - Array of data points (each point has x-axis value + y-axis values)
99
+ * @param style - Style with series configuration (each series specifies its chart type)
100
+ * @returns An East expression representing the composed chart component
101
+ *
102
+ * @remarks
103
+ * Composed charts combine multiple chart types in a single visualization.
104
+ * Each series in the style object specifies its type (line, area, bar, scatter, area-range).
105
+ *
106
+ * @example Mixed chart types
107
+ * ```ts
108
+ * Chart.Composed(
109
+ * [
110
+ * { month: "Jan", revenue: 186, profit: 80, trend: 150 },
111
+ * { month: "Feb", revenue: 305, profit: 120, trend: 200 },
112
+ * ],
113
+ * {
114
+ * xAxis: { dataKey: "month" },
115
+ * series: {
116
+ * revenue: { type: "bar", color: "teal.solid" },
117
+ * profit: { type: "line", color: "purple.solid", showDots: true },
118
+ * trend: { type: "area", color: "blue.solid", fillOpacity: 0.3 },
119
+ * },
120
+ * }
121
+ * );
122
+ * ```
123
+ *
124
+ * @example With area-range for confidence bands
125
+ * ```ts
126
+ * Chart.Composed(
127
+ * [
128
+ * { day: "Mon", value: 100, low: 80, high: 120 },
129
+ * { day: "Tue", value: 150, low: 130, high: 170 },
130
+ * ],
131
+ * {
132
+ * xAxis: { dataKey: "day" },
133
+ * series: {
134
+ * value: { type: "line", color: "blue.solid" },
135
+ * confidence: { type: "area-range", lowKey: "low", highKey: "high", color: "blue.200", fillOpacity: 0.3 },
136
+ * },
137
+ * }
138
+ * );
139
+ * ```
140
+ */
141
+ export function createComposedChart(data, style) {
142
+ const data_expr = East.value(data);
143
+ const field_types = Expr.type(data_expr).value.fields;
144
+ // Map each data row to a Dict<String, LiteralValueType>
145
+ const data_mapped = data_expr.map(($, datum) => {
146
+ const ret = $.let(new Map(), DictType(StringType, LiteralValueType));
147
+ for (const [field_name, field_type] of Object.entries(field_types)) {
148
+ $(ret.insert(field_name, variant(field_type.type, datum[field_name])));
149
+ }
150
+ return ret;
151
+ });
152
+ // Convert series entries to variant array
153
+ const seriesEntries = Object.entries(style.series);
154
+ return buildComposedChart(data_mapped, undefined, seriesEntries, style);
155
+ }
156
+ // ============================================================================
157
+ // Composed Chart Multi (Multi-Series with Separate Arrays)
158
+ // ============================================================================
159
+ /**
160
+ * Creates a Composed chart component from multiple data arrays (one per series).
161
+ *
162
+ * @typeParam K - Union of series names (record keys)
163
+ * @typeParam T - The array type containing data structs for each series
164
+ * @param data - Record mapping series names to their data arrays
165
+ * @param style - Styling with valueKey and per-series configuration
166
+ * @returns An East expression representing the composed chart component
167
+ *
168
+ * @remarks
169
+ * Each series has its own data array, allowing sparse data where series
170
+ * don't need to have values at every x-axis point. Each series specifies
171
+ * its chart type.
172
+ *
173
+ * @example
174
+ * ```ts
175
+ * Chart.ComposedMulti(
176
+ * {
177
+ * revenue: [
178
+ * { month: "Jan", value: 100 },
179
+ * { month: "Feb", value: 200 },
180
+ * ],
181
+ * profit: [
182
+ * { month: "Jan", value: 50 },
183
+ * { month: "Mar", value: 150 }, // sparse - Feb missing
184
+ * ],
185
+ * },
186
+ * {
187
+ * xAxis: { dataKey: "month" },
188
+ * valueKey: "value",
189
+ * series: {
190
+ * revenue: { type: "bar", color: "teal.solid" },
191
+ * profit: { type: "line", color: "purple.solid" },
192
+ * },
193
+ * }
194
+ * );
195
+ * ```
196
+ */
197
+ export function createComposedChartMulti(data, style) {
198
+ // Create empty data array (renderer will use dataSeries instead)
199
+ const data_mapped = East.value([], ArrayType(DictType(StringType, LiteralValueType)));
200
+ // Map each series array to Dict format
201
+ const seriesDataMap = new Map();
202
+ for (const [seriesName, seriesData] of Object.entries(data)) {
203
+ const series_expr = East.value(seriesData);
204
+ const field_types = Expr.type(series_expr).value.fields;
205
+ const series_mapped = series_expr.map(($, datum) => {
206
+ const ret = $.let(new Map(), DictType(StringType, LiteralValueType));
207
+ for (const [field_name, field_type] of Object.entries(field_types)) {
208
+ $(ret.insert(field_name, variant(field_type.type, datum[field_name])));
209
+ }
210
+ return ret;
211
+ });
212
+ seriesDataMap.set(seriesName, series_mapped);
213
+ }
214
+ const dataSeries_mapped = East.value(seriesDataMap, MultiSeriesDataType);
215
+ // Build series entries from record keys and config
216
+ const seriesEntries = Object.keys(data).map(key => [
217
+ key,
218
+ style.series[key] ?? { type: "line" }
219
+ ]);
220
+ return buildComposedChart(data_mapped, dataSeries_mapped, seriesEntries, style, style.valueKey);
221
+ }
222
+ // ============================================================================
223
+ // Shared Chart Builder
224
+ // ============================================================================
225
+ function buildComposedChart(data_mapped, dataSeries_mapped, seriesEntries, style, valueKey) {
226
+ // Convert series to variant array
227
+ const series_mapped = seriesEntries.map(([name, config]) => seriesConfigToVariant(name, config));
228
+ // Convert style options to East types
229
+ const curveValue = style.curveType
230
+ ? (typeof style.curveType === "string"
231
+ ? East.value(variant(style.curveType, null), CurveType)
232
+ : style.curveType)
233
+ : undefined;
234
+ const layoutValue = style.layout
235
+ ? (typeof style.layout === "string"
236
+ ? East.value(variant(style.layout, null), BarLayoutType)
237
+ : style.layout)
238
+ : undefined;
239
+ const stackOffsetValue = style.stackOffset
240
+ ? (typeof style.stackOffset === "string"
241
+ ? East.value(variant(style.stackOffset, null), StackOffsetType)
242
+ : style.stackOffset)
243
+ : undefined;
244
+ // Convert axis styles to types
245
+ const xAxisExpr = axisStyleToType(style.xAxis);
246
+ const yAxisExpr = axisStyleToType(style.yAxis);
247
+ const yAxis2Expr = axisStyleToType(style.yAxis2);
248
+ // Convert other style properties
249
+ const gridExpr = gridStyleToType(style.grid);
250
+ const tooltipExpr = tooltipStyleToType(style.tooltip);
251
+ const legendExpr = legendStyleToType(style.legend);
252
+ const marginExpr = marginStyleToType(style.margin);
253
+ // Build brush value
254
+ const brushValue = style.brush
255
+ ? variant("some", East.value({
256
+ dataKey: style.brush.dataKey !== undefined ? some(style.brush.dataKey) : none,
257
+ height: style.brush.height !== undefined ? some(style.brush.height) : none,
258
+ travellerWidth: style.brush.travellerWidth !== undefined ? some(style.brush.travellerWidth) : none,
259
+ startIndex: style.brush.startIndex !== undefined ? some(style.brush.startIndex) : none,
260
+ endIndex: style.brush.endIndex !== undefined ? some(style.brush.endIndex) : none,
261
+ stroke: style.brush.stroke !== undefined ? some(style.brush.stroke) : none,
262
+ fill: style.brush.fill !== undefined ? some(style.brush.fill) : none,
263
+ }, ChartBrushType))
264
+ : variant("none", null);
265
+ // Convert reference annotations
266
+ const referenceLinesExpr = style.referenceLines?.length
267
+ ? variant("some", East.value(style.referenceLines.map(referenceLineStyleToType), ArrayType(ReferenceLineType)))
268
+ : variant("none", null);
269
+ const referenceDotsExpr = style.referenceDots?.length
270
+ ? variant("some", East.value(style.referenceDots.map(referenceDotStyleToType), ArrayType(ReferenceDotType)))
271
+ : variant("none", null);
272
+ const referenceAreasExpr = style.referenceAreas?.length
273
+ ? variant("some", East.value(style.referenceAreas.map(referenceAreaStyleToType), ArrayType(ReferenceAreaType)))
274
+ : variant("none", null);
275
+ return East.value(variant("ComposedChart", {
276
+ data: data_mapped,
277
+ dataSeries: dataSeries_mapped ? variant("some", dataSeries_mapped) : variant("none", null),
278
+ valueKey: valueKey !== undefined ? variant("some", valueKey) : variant("none", null),
279
+ series: East.value(series_mapped, ArrayType(ComposedSeriesType)),
280
+ xAxis: xAxisExpr ? variant("some", xAxisExpr) : variant("none", null),
281
+ yAxis: yAxisExpr ? variant("some", yAxisExpr) : variant("none", null),
282
+ yAxis2: yAxis2Expr ? variant("some", yAxis2Expr) : variant("none", null),
283
+ layout: layoutValue ? variant("some", layoutValue) : variant("none", null),
284
+ curveType: curveValue ? variant("some", curveValue) : variant("none", null),
285
+ stackOffset: stackOffsetValue ? variant("some", stackOffsetValue) : variant("none", null),
286
+ grid: gridExpr ? variant("some", gridExpr) : variant("none", null),
287
+ tooltip: tooltipExpr ? variant("some", tooltipExpr) : variant("none", null),
288
+ legend: legendExpr ? variant("some", legendExpr) : variant("none", null),
289
+ margin: marginExpr ? variant("some", marginExpr) : variant("none", null),
290
+ brush: brushValue,
291
+ barSize: style.barSize !== undefined ? variant("some", style.barSize) : variant("none", null),
292
+ barGap: style.barGap !== undefined ? variant("some", style.barGap) : variant("none", null),
293
+ showDots: style.showDots !== undefined ? variant("some", style.showDots) : variant("none", null),
294
+ connectNulls: style.connectNulls !== undefined ? variant("some", style.connectNulls) : variant("none", null),
295
+ referenceLines: referenceLinesExpr,
296
+ referenceDots: referenceDotsExpr,
297
+ referenceAreas: referenceAreasExpr,
298
+ }), UIComponentType);
299
+ }
300
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/charts/composed/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIH,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACH,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,kBAAkB,GAMrB,MAAM,YAAY,CAAC;AAEpB,kBAAkB;AAClB,OAAO,EACH,iBAAiB,EACjB,kBAAkB,GAYrB,MAAM,YAAY,CAAC;AA2BpB,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAA4B;IACrE,4CAA4C;IAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS;QAC7C,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC;IAEX,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACP,OAAO,OAAO,CAAC,MAAM,EAAE;gBACnB,IAAI;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,eAAe,EAAE,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3F,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtE,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtE,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;QAEP,KAAK,MAAM;YACP,OAAO,OAAO,CAAC,MAAM,EAAE;gBACnB,IAAI;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1D,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,eAAe,EAAE,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3F,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;QAEP,KAAK,YAAY;YACb,OAAO,OAAO,CAAC,WAAW,EAAE;gBACxB,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;QAEP,KAAK,KAAK;YACN,OAAO,OAAO,CAAC,KAAK,EAAE;gBAClB,IAAI;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1D,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,eAAe,EAAE,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3F,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;QAEP,KAAK,SAAS;YACV,OAAO,OAAO,CAAC,SAAS,EAAE;gBACtB,IAAI;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,OAAO,EAAE,IAAI,EAAE,mDAAmD;gBAClE,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAChE,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1D,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/E,eAAe,EAAE,IAAI,EAAE,6BAA6B;gBACpD,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;IACX,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,mBAAmB,CAC/B,IAAO,EACP,KAA2D;IAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAEtD,wDAAwD;IACxD,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAG,KAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAqC,CAAC;IAEvF,OAAO,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,wBAAwB,CAIpC,IAAkB,EAClB,KAIC;IAED,iEAAiE;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEtF,uCAAuC;IACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqF,CAAC;IAEnH,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAkB,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAoC,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAExD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACrE,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAG,KAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAEzE,mDAAmD;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,GAAG;QACH,KAAK,CAAC,MAAM,CAAC,GAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAe,EAAE;KAC7C,CAAC,CAAC;IAEZ,OAAO,kBAAkB,CACrB,WAAW,EACX,iBAAiB,EACjB,aAAiD,EACjD,KAAK,EACL,KAAK,CAAC,QAAQ,CACjB,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,SAAS,kBAAkB,CACvB,WAAsF,EACtF,iBAAmE,EACnE,aAAwD,EACxD,KAAmF,EACnF,QAAiB;IAEjB,kCAAkC;IAClC,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CACvD,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CACtC,CAAC;IAEF,sCAAsC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS;QAC9B,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC;YACvD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM;QAC5B,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACnB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW;QACtC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;YACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC;YAC/D,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QACxB,CAAC,CAAC,SAAS,CAAC;IAEhB,+BAA+B;IAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,KAAmC,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,KAAmC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,MAAoC,CAAC,CAAC;IAE/E,iCAAiC;IACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnD,oBAAoB;IACpB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;QAC1B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;YACzB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7E,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1E,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;YAClG,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YACtF,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YAChF,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1E,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACvE,EAAE,cAAc,CAAC,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B,gCAAgC;IAChC,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,EAAE,MAAM;QACnD,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,EAAE,MAAM;QACjD,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5G,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,EAAE,MAAM;QACnD,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;QACvC,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1F,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACpF,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAChE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACrE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACrE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACxE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1E,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3E,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACzF,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAClE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3E,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACxE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACxE,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC7F,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1F,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAChG,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5G,cAAc,EAAE,kBAAkB;QAClC,aAAa,EAAE,iBAAiB;QAChC,cAAc,EAAE,kBAAkB;KACrC,CAAC,EAAE,eAAe,CAAC,CAAC;AACzB,CAAC"}