@xeonr/platform-ui 1.8.0 → 1.10.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.
@@ -1,41 +1,6 @@
1
- /**
2
- * How an axis end reads for a series covering `span` ms: a few hours read
3
- * 14:05, a few days 16 Oct 14:00, a few months 16 Oct, anything longer
4
- * Oct 2026 (CON-73). Every axis was HH:MM before, so twelve monthly points
5
- * labelled both ends "00:00". Local time, as the charts always were; a series
6
- * bucketed in some other zone passes `formatTime`.
7
- */
8
- export declare function timeTick(span: number): (t: number) => string;
9
- export interface HistogramBucket {
10
- /** bucket start, ms since epoch */
11
- t: number;
12
- /** stacked parts, in stack order */
13
- parts: {
14
- name: string;
15
- value: number;
16
- }[];
17
- }
18
- /** Tones a part may take; unnamed parts use the brand colour. */
19
- export type ChartTone = "brand" | "ok" | "warn" | "crit" | "info" | "mut";
20
- /**
21
- * Histogram: a stacked bar per bucket over time, so the shape of what you are
22
- * looking at is visible before you read a single row. `tones` maps a part
23
- * name to its tone (e.g. error → crit) so a spike reads without a legend.
24
- *
25
- * `formatValue` says what a number is ("2.4 GB"); given one, the tallest bar's
26
- * value is shown above the chart as its scale, and each bar's tooltip breaks
27
- * its total into parts. `formatTime` overrides how the axis and tooltips read
28
- * a bucket's start, which otherwise follows the span in local time.
29
- */
30
- export declare function Histogram({ buckets, tones, height, label, empty, formatValue, formatTime }: {
31
- buckets: HistogramBucket[];
32
- tones?: Record<string, ChartTone> | undefined;
33
- height?: number | undefined;
34
- label?: string | undefined;
35
- empty?: string | undefined;
36
- formatValue?: ((v: number) => string) | undefined;
37
- formatTime?: ((t: number) => string) | undefined;
38
- }): import("react").JSX.Element;
1
+ import { type ReactNode } from "react";
2
+ import { timeTick, type ChartSize, type ChartTone } from "./chartScale.ts";
3
+ export { timeTick, type ChartTone };
39
4
  export interface ChartSeries {
40
5
  name: string;
41
6
  points: {
@@ -51,8 +16,10 @@ export interface LinePoint {
51
16
  export interface LineSeries {
52
17
  name: string;
53
18
  points: LinePoint[];
54
- /** the line's colour as a tone, instead of the next colour in the chart's ramp */
19
+ /** the line's colour as a tone, instead of the next step of the ramp */
55
20
  tone?: ChartTone | undefined;
21
+ /** the line's colour as a token (`v.danger`), instead of the ramp; `tone` wins */
22
+ colour?: string | undefined;
56
23
  /**
57
24
  * a ceiling or target drawn beside the measured series (a budget, a capacity):
58
25
  * dashed, never filled under, muted unless given a `tone`, and left out of the
@@ -60,28 +27,66 @@ export interface LineSeries {
60
27
  * the legend's "everything hidden" reset. It still reads the value axis.
61
28
  */
62
29
  reference?: boolean | undefined;
30
+ /**
31
+ * The name of the series this one is the compare of (the same query a day
32
+ * earlier): drawn in its twin's hue at 45 % and dashed, hidden with it, and
33
+ * read in the tooltip as a delta on the twin's row.
34
+ */
35
+ compareOf?: string | undefined;
36
+ /** a dashed stroke without being a compare (a second percentile, a forecast) */
37
+ dashed?: boolean | undefined;
38
+ /** in a bar chart, a line drawn over the stack instead of a segment of it */
39
+ overlay?: boolean | undefined;
63
40
  }
64
41
  /** What a LineChart's values are, so its axis and tooltip read them without a `formatValue`. `percent` is 0–100, `bytes` and `bps` are bytes and bytes per second (1024 ladder), `count` a plain number. */
65
42
  export type ChartUnit = "percent" | "bytes" | "bps" | "count";
43
+ /** A moment on the time axis: a deploy, an alert transition, a note. */
44
+ export interface ChartMarker {
45
+ /** epoch ms */
46
+ at: number;
47
+ label: string;
48
+ /** deploy: an amber triangle on the axis; alert: a red tick; note: grey */
49
+ kind?: "deploy" | "alert" | "note" | undefined;
50
+ /** overrides the kind's colour */
51
+ tone?: ChartTone | undefined;
52
+ /** a colour token, overriding the kind's and the tone's */
53
+ colour?: string | undefined;
54
+ }
55
+ /** A dashed rule at a value, labelled at its right end in its tone. */
56
+ export interface ChartThreshold {
57
+ value: number;
58
+ /** "alert" — the value is appended; default the tone's word */
59
+ label?: string | undefined;
60
+ /** default crit */
61
+ tone?: ChartTone | undefined;
62
+ }
63
+ /** A shaded window: a firing window, the slice a pivot is about, data not in yet. */
64
+ export interface ChartBand {
65
+ from: number;
66
+ to: number;
67
+ /** shaded in the tone at 7 % */
68
+ tone?: ChartTone | undefined;
69
+ /** a translucent background token used as is (`v.brand12`); wins over `tone` */
70
+ colour?: string | undefined;
71
+ /** hatched rather than shaded: the part of the range not known yet */
72
+ hatch?: boolean | undefined;
73
+ label?: string | undefined;
74
+ }
75
+ /** What a click on the plot is about: one bucket, and the series nearest the pointer. */
76
+ export interface ChartPoint {
77
+ /** the bucket's start, epoch ms */
78
+ t: number;
79
+ /** the bucket's width in ms */
80
+ step: number;
81
+ /** the series nearest the pointer */
82
+ series?: string | undefined;
83
+ value?: number | undefined;
84
+ }
66
85
  /** Reads a number as its unit. `compact` is the axis form (shorter, whole numbers for percent); the default is the tooltip's. */
67
86
  export declare function formatUnit(value: number, unit: ChartUnit, compact?: boolean): string;
68
- /**
69
- * LineChart: n series over a shared time axis. Axes to read a value off, a
70
- * crosshair to compare series at one instant, a legend that mutes lines, and
71
- * a drag that selects a window (`onZoom`) — the natural gesture once a spike
72
- * is visible.
73
- *
74
- * A point whose `v` is `null`/`undefined` is a sample that was not reported
75
- * (an agent too old for the metric, a node that was down): the line breaks
76
- * there rather than dipping to zero, which is a real measurement.
77
- *
78
- * `unit` reads the value axis and the crosshair as percent, bytes, bps or
79
- * count; `formatValue` overrides it ("38 ms"), `area` fills under the lines and
80
- * `max` pins the top of the axis.
81
-
82
- * `formatTime` the time axis, which otherwise follows the span in local time.
83
- */
84
- export declare function LineChart({ series, onZoom, label, empty, formatValue, formatTime, unit, area, max }: {
87
+ /** The change from `was` to `now` as the tooltip writes it: "+72 %", "−9 %", "→" when flat. */
88
+ export declare function formatDelta(now: number, was: number): string;
89
+ export interface LineChartProps {
85
90
  series: LineSeries[];
86
91
  /** Given a dragged selection. Omit to leave the chart read-only. */
87
92
  onZoom?: ((from: Date, to: Date) => void) | undefined;
@@ -92,10 +97,110 @@ export declare function LineChart({ series, onZoom, label, empty, formatValue, f
92
97
  formatTime?: ((t: number) => string) | undefined;
93
98
  /** what the values are; reads the axis and the tooltip (percent, bytes, bps, count) */
94
99
  unit?: ChartUnit | undefined;
95
- /** fill under each line */
100
+ /** fill under the line at 12 % — a single series at S or M; stacked bands always fill */
96
101
  area?: boolean | undefined;
102
+ /** stack the series (parts of a whole over time); the tooltip shows each part and the total */
103
+ stacked?: boolean | undefined;
97
104
  /** pin the top of the value axis (100 for percentages, a capacity for bytes) */
98
105
  max?: number | undefined;
106
+ /** pin the bottom of the value axis */
107
+ min?: number | undefined;
108
+ /** a log value axis */
109
+ log?: boolean | undefined;
110
+ /** s · m · l · xl: height, ticks, legend and marker labels; the frame's when omitted, else m */
111
+ size?: ChartSize | undefined;
112
+ /** a height other than the size's */
113
+ height?: number | undefined;
114
+ /** the time window drawn; the data's extent when omitted */
115
+ domain?: {
116
+ from: number;
117
+ to: number;
118
+ } | undefined;
119
+ markers?: ChartMarker[] | undefined;
120
+ thresholds?: ChartThreshold[] | undefined;
121
+ bands?: ChartBand[] | undefined;
122
+ /** a click (or right-click, or Enter) on a bucket, with the series nearest the pointer */
123
+ onPoint?: ((point: ChartPoint, at: {
124
+ clientX: number;
125
+ clientY: number;
126
+ }) => void) | undefined;
127
+ /** a double-click: back to the window before a zoom */
128
+ onReset?: (() => void) | undefined;
129
+ /** make the threshold rules draggable; called with the rule's index and the value under the pointer */
130
+ onThresholdDrag?: ((index: number, value: number) => void) | undefined;
131
+ /** charts sharing a key share one crosshair */
132
+ syncKey?: string | undefined;
133
+ /** legend chips under the plot; the size decides when omitted */
134
+ legend?: boolean | undefined;
135
+ /** keys after the series (a firing band, a marker kind) */
136
+ legendExtra?: ReactNode;
137
+ /** under the legend; default a drag hint at L/XL when `onZoom` is set */
138
+ hint?: ReactNode;
139
+ testId?: string | undefined;
140
+ }
141
+ /**
142
+ * LineChart: n series over a shared time axis — the default timeseries, up to
143
+ * eight lines before the legend collapses.
144
+ *
145
+ * The axes follow board 32: 3–5 nice value ticks in the unit, the bottom line
146
+ * the only solid rule, hairlines above it, no vertical grid; 5–7 time ticks on
147
+ * a round step with a date only at a midnight crossing. Lines are 1.8 px and
148
+ * round-joined, with no dots at rest; a point whose `v` is `null`/`undefined`
149
+ * was not reported and breaks the line rather than dipping to zero.
150
+ *
151
+ * Hovering (or ← → once focused) draws a crosshair with a dot per series and
152
+ * one tooltip listing every series worst-first with its value and, for a
153
+ * series with a `compareOf` twin, the delta. The legend's chips carry each
154
+ * series' last value: click mutes, shift-click solos. Drag selects a window
155
+ * (`onZoom`); a click is a point (`onPoint`).
156
+ *
157
+ * `markers` (deploys, alert transitions, notes), `thresholds` (dashed, labelled
158
+ * at the right end) and `bands` (a firing window, a hatched "not in yet") are
159
+ * first-class. `size` sets the height and what shows; inside a `ChartFrame` it
160
+ * follows the frame's.
161
+ */
162
+ export declare function LineChart({ label, empty, ...rest }: LineChartProps): import("react").JSX.Element;
163
+ export type BarChartProps = Omit<LineChartProps, "stacked" | "area" | "log">;
164
+ /**
165
+ * BarChart: counts per bucket, stacked by part (status class, error type) over
166
+ * time. Each series is a part, stacked in series order; a series with
167
+ * `overlay` is drawn as a line over the stack (a shifted volume), and a
168
+ * `compareOf` twin is a dashed line too. Everything else — axes, markers,
169
+ * thresholds, the tooltip, the legend — is LineChart's.
170
+ */
171
+ export declare function BarChart({ label, empty, ...rest }: BarChartProps): import("react").JSX.Element;
172
+ export interface HistogramBucket {
173
+ /** bucket start, ms since epoch */
174
+ t: number;
175
+ /** stacked parts, in stack order */
176
+ parts: {
177
+ name: string;
178
+ value: number;
179
+ }[];
180
+ }
181
+ /**
182
+ * Histogram: a stacked bar per bucket over time — BarChart's time-bucketed
183
+ * form, taking buckets of parts rather than series. `tones` maps a part name
184
+ * to its tone (e.g. error → crit) so a spike reads without a legend; untoned
185
+ * parts take the ramp.
186
+ *
187
+ * `formatValue` says what a number is ("2.4 GB") on the axis and in the
188
+ * tooltip, which breaks each bar's total into parts. `formatTime` overrides
189
+ * how the axis and tooltips read a bucket's start, which otherwise follows the
190
+ * span in local time.
191
+ */
192
+ export declare function Histogram({ buckets, tones, height, size, label, empty, formatValue, formatTime, onZoom, markers }: {
193
+ buckets: HistogramBucket[];
194
+ tones?: Record<string, ChartTone> | undefined;
195
+ /** px; the size's when omitted (a strip under a list is ~84) */
196
+ height?: number | undefined;
197
+ size?: ChartSize | undefined;
198
+ label?: string | undefined;
199
+ empty?: string | undefined;
200
+ formatValue?: ((v: number) => string) | undefined;
201
+ formatTime?: ((t: number) => string) | undefined;
202
+ onZoom?: ((from: Date, to: Date) => void) | undefined;
203
+ markers?: ChartMarker[] | undefined;
99
204
  }): import("react").JSX.Element;
100
205
  /** One band's value at each shared instant, and what the bands add up to. */
101
206
  export interface StackedMoment {
@@ -113,24 +218,27 @@ export declare function stackSeries(series: ChartSeries[]): StackedMoment[];
113
218
  /**
114
219
  * StackedAreaChart: n series stacked over a shared time axis, so the whole and
115
220
  * each part's share of it read together (the cells in conformance by domain,
116
- * requests by route). Series are ChartSeries as LineChart takes them, lined up
117
- * on the union of their timestamps (`stackSeries`); bands take the categorical
118
- * hues in order and the legend names them (a series called "Other" is the
119
- * neutral one; fold a long tail into it rather than drawing a ninth hue).
221
+ * requests by version). Series are lined up on the union of their timestamps
222
+ * (`stackSeries`), holding a series' last value; bands take the ramp in order
223
+ * and the legend names them (a series called "Other" is the neutral one; fold
224
+ * a long tail into it rather than drawing a ninth hue).
120
225
  *
121
226
  * Hovering, or the arrow keys once it has focus, reads every band and the total
122
- * at one instant. `max` caps the value axis (100 for percentages); otherwise
123
- * it fits the tallest stack. `formatValue` and `formatTime` read as in
124
- * LineChart. Show the values in a table too: the chart is not the only way in.
227
+ * at one instant. `max` caps the value axis (100 for percentages). Show the
228
+ * values in a table too: the chart is not the only way in.
125
229
  */
126
- export declare function StackedAreaChart({ series, max, height, label, empty, formatValue, formatTime }: {
230
+ export declare function StackedAreaChart({ series, max, height, size, label, empty, formatValue, formatTime, markers, onZoom }: {
127
231
  series: ChartSeries[];
128
232
  /** Highest value the axis may reach. */
129
233
  max?: number | undefined;
234
+ /** px; the size's when omitted */
130
235
  height?: number | undefined;
236
+ size?: ChartSize | undefined;
131
237
  label?: string | undefined;
132
238
  empty?: string | undefined;
133
239
  formatValue?: ((v: number) => string) | undefined;
134
240
  formatTime?: ((t: number) => string) | undefined;
241
+ markers?: ChartMarker[] | undefined;
242
+ onZoom?: ((from: Date, to: Date) => void) | undefined;
135
243
  }): import("react").JSX.Element;
136
244
  //# sourceMappingURL=Charts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Charts.d.ts","sourceRoot":"","sources":["../../src/kit/Charts.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Charts.d.ts","sourceRoot":"","sources":["../../src/kit/Charts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4H,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKjK,OAAO,EAC0E,QAAQ,EACvF,KAAK,SAAS,EAAE,KAAK,SAAS,EAC/B,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,CAAC;AAMpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpC;AAED,sIAAsI;AACtI,MAAM,WAAW,SAAS;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE;AACtE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,4MAA4M;AAC5M,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAE9D,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,kCAAkC;IAClC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mBAAmB;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED,qFAAqF;AACrF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,yFAAyF;AACzF,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAeD,iIAAiI;AACjI,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,UAAQ,GAAG,MAAM,CAOlF;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM5D;AAyuBD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uBAAuB;IACvB,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,uFAAuF;IACvF,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,yFAAyF;IACzF,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,+FAA+F;IAC/F,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,uBAAuB;IACvB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,gGAAgG;IAChG,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,4DAA4D;IAC5D,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAChC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9F,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,uGAAuG;IACvG,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvE,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAgB,EAAE,KAA6B,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,+BAErG;AAMD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAA0B,EAAE,KAA8B,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa,+BAE9G;AAMD,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,KAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAA4B,EAAE,KAA8B,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IACvK,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9C,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CACrC,+BAkBA;AAMD,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAWlE;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAwB,EAAE,KAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACjK,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACvD,+BAYA"}