@xyo-network/xl1-protocol 5.2.0 → 5.2.1

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,147 @@
1
+ import { z } from 'zod';
2
+ /** Schema id for a published admission shadow report. */
3
+ export declare const AdmissionShadowReportSchema: "network.xyo.s3.admission.shadow" & {
4
+ readonly __schema: true;
5
+ };
6
+ /** Type literal for the admission shadow report schema. */
7
+ export type AdmissionShadowReportSchema = typeof AdmissionShadowReportSchema;
8
+ /** What both admission gates concluded about one candidate. */
9
+ export declare const AdmissionShadowAssessmentZod: z.ZodObject<{
10
+ admittedByAllowList: z.ZodBoolean;
11
+ block: z.ZodInt;
12
+ dataHash: z.ZodString;
13
+ eStar: z.ZodOptional<z.ZodInt>;
14
+ eligible: z.ZodOptional<z.ZodBoolean>;
15
+ producer: z.ZodString;
16
+ reason: z.ZodOptional<z.ZodString>;
17
+ resolvable: z.ZodBoolean;
18
+ }, z.core.$strip>;
19
+ /** What both admission gates concluded about one candidate. */
20
+ export type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessmentZod>;
21
+ /**
22
+ * Zod schema for one published round of shadow admission.
23
+ *
24
+ * Published rather than logged because the point of the posture is that anyone can see what
25
+ * enforcement would have done before it does it. An operator convinced by their own logs has
26
+ * convinced nobody.
27
+ *
28
+ * The back-link is what makes the series walkable without listing: a reader takes the head
29
+ * pointer and follows `previous` as far back as it cares to.
30
+ */
31
+ export declare const AdmissionShadowReportZod: z.ZodObject<{
32
+ assessments: z.ZodArray<z.ZodObject<{
33
+ admittedByAllowList: z.ZodBoolean;
34
+ block: z.ZodInt;
35
+ dataHash: z.ZodString;
36
+ eStar: z.ZodOptional<z.ZodInt>;
37
+ eligible: z.ZodOptional<z.ZodBoolean>;
38
+ producer: z.ZodString;
39
+ reason: z.ZodOptional<z.ZodString>;
40
+ resolvable: z.ZodBoolean;
41
+ }, z.core.$strip>>;
42
+ divergent: z.ZodArray<z.ZodObject<{
43
+ admittedByAllowList: z.ZodBoolean;
44
+ block: z.ZodInt;
45
+ dataHash: z.ZodString;
46
+ eStar: z.ZodOptional<z.ZodInt>;
47
+ eligible: z.ZodOptional<z.ZodBoolean>;
48
+ producer: z.ZodString;
49
+ reason: z.ZodOptional<z.ZodString>;
50
+ resolvable: z.ZodBoolean;
51
+ }, z.core.$strip>>;
52
+ head: z.ZodInt;
53
+ previous: z.ZodOptional<z.ZodInt>;
54
+ schema: z.ZodLiteral<"network.xyo.s3.admission.shadow" & {
55
+ readonly __schema: true;
56
+ }>;
57
+ }, z.core.$strip>;
58
+ /** One published round of shadow admission. */
59
+ export type AdmissionShadowReportDocument = z.infer<typeof AdmissionShadowReportZod>;
60
+ /** Type guard that checks if a value is a valid AdmissionShadowReportDocument. */
61
+ export declare const isAdmissionShadowReport: <T>(value: T) => value is T & {
62
+ assessments: {
63
+ admittedByAllowList: boolean;
64
+ block: number;
65
+ dataHash: string;
66
+ producer: string;
67
+ resolvable: boolean;
68
+ eStar?: number | undefined;
69
+ eligible?: boolean | undefined;
70
+ reason?: string | undefined;
71
+ }[];
72
+ divergent: {
73
+ admittedByAllowList: boolean;
74
+ block: number;
75
+ dataHash: string;
76
+ producer: string;
77
+ resolvable: boolean;
78
+ eStar?: number | undefined;
79
+ eligible?: boolean | undefined;
80
+ reason?: string | undefined;
81
+ }[];
82
+ head: number;
83
+ schema: "network.xyo.s3.admission.shadow" & {
84
+ readonly __schema: true;
85
+ };
86
+ previous?: number | undefined;
87
+ };
88
+ /** Converts a value to AdmissionShadowReportDocument, throwing if invalid. */
89
+ export declare const asAdmissionShadowReport: {
90
+ <T>(value: T): (T & {
91
+ assessments: {
92
+ admittedByAllowList: boolean;
93
+ block: number;
94
+ dataHash: string;
95
+ producer: string;
96
+ resolvable: boolean;
97
+ eStar?: number | undefined;
98
+ eligible?: boolean | undefined;
99
+ reason?: string | undefined;
100
+ }[];
101
+ divergent: {
102
+ admittedByAllowList: boolean;
103
+ block: number;
104
+ dataHash: string;
105
+ producer: string;
106
+ resolvable: boolean;
107
+ eStar?: number | undefined;
108
+ eligible?: boolean | undefined;
109
+ reason?: string | undefined;
110
+ }[];
111
+ head: number;
112
+ schema: "network.xyo.s3.admission.shadow" & {
113
+ readonly __schema: true;
114
+ };
115
+ previous?: number | undefined;
116
+ }) | undefined;
117
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
118
+ assessments: {
119
+ admittedByAllowList: boolean;
120
+ block: number;
121
+ dataHash: string;
122
+ producer: string;
123
+ resolvable: boolean;
124
+ eStar?: number | undefined;
125
+ eligible?: boolean | undefined;
126
+ reason?: string | undefined;
127
+ }[];
128
+ divergent: {
129
+ admittedByAllowList: boolean;
130
+ block: number;
131
+ dataHash: string;
132
+ producer: string;
133
+ resolvable: boolean;
134
+ eStar?: number | undefined;
135
+ eligible?: boolean | undefined;
136
+ reason?: string | undefined;
137
+ }[];
138
+ head: number;
139
+ schema: "network.xyo.s3.admission.shadow" & {
140
+ readonly __schema: true;
141
+ };
142
+ previous?: number | undefined;
143
+ };
144
+ };
145
+ /** Builds a validated admission shadow report. */
146
+ export declare function createAdmissionShadowReport(head: number, assessments: AdmissionShadowAssessment[], divergent: AdmissionShadowAssessment[], previous?: number): AdmissionShadowReportDocument;
147
+ //# sourceMappingURL=admissionShadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admissionShadow.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/admissionShadow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;CAAoD,CAAA;AAC5F,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B;;;;;;;;;iBAiBvC,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEpF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUnC,CAAA;AAEF,+CAA+C;AAC/C,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF,kFAAkF;AAClF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyC,CAAA;AAC7E,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoE,CAAA;AAExG,kDAAkD;AAClD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,yBAAyB,EAAE,EACxC,SAAS,EAAE,yBAAyB,EAAE,EACtC,QAAQ,CAAC,EAAE,MAAM,GAChB,6BAA6B,CAI/B"}
@@ -1,3 +1,4 @@
1
+ export * from './admissionShadow.js';
1
2
  export * from './chainContractManifest.js';
2
3
  export * from './chainManifest.js';
3
4
  export * from './chainParams.js';
@@ -5,6 +6,7 @@ export * from './chainParamsRules.js';
5
6
  export * from './evmEventIndex.js';
6
7
  export * from './indexManifest.js';
7
8
  export * from './networkStakeRewardsIndex.js';
9
+ export * from './slashIndex.js';
8
10
  export * from './transactionInclusionIndex.js';
9
11
  export * from './trustedPosture.js';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,160 @@
1
+ import { z } from 'zod';
2
+ /** Schema id for the slash index head pointer. */
3
+ export declare const SlashIndexHeadSchema: "network.xyo.s3.slash.index.head" & {
4
+ readonly __schema: true;
5
+ };
6
+ /** Type literal for the slash index head schema. */
7
+ export type SlashIndexHeadSchema = typeof SlashIndexHeadSchema;
8
+ /** Bumped when the index layout changes, so readers can detect a mismatch. */
9
+ export declare const SLASH_INDEX_VERSION = 1;
10
+ /**
11
+ * Zod schema for the slash index head pointer.
12
+ *
13
+ * Written last in every pass. A reader that sees this pointer can rely on everything it names
14
+ * already being there, which is what makes a crashed pass safe to simply re-run: the pointer only
15
+ * ever advances over work that finished.
16
+ */
17
+ export declare const SlashIndexHeadZod: z.ZodObject<{
18
+ height: z.ZodInt;
19
+ indexVersion: z.ZodInt;
20
+ schema: z.ZodLiteral<"network.xyo.s3.slash.index.head" & {
21
+ readonly __schema: true;
22
+ }>;
23
+ anchor: z.ZodOptional<z.ZodInt>;
24
+ }, z.core.$strip>;
25
+ /** The slash index head pointer. */
26
+ export type SlashIndexHead = z.infer<typeof SlashIndexHeadZod>;
27
+ /** Type guard that checks if a value is a valid SlashIndexHead. */
28
+ export declare const isSlashIndexHead: <T>(value: T) => value is T & {
29
+ height: number;
30
+ indexVersion: number;
31
+ schema: "network.xyo.s3.slash.index.head" & {
32
+ readonly __schema: true;
33
+ };
34
+ anchor?: number | undefined;
35
+ };
36
+ /** Converts a value to SlashIndexHead, throwing if invalid. */
37
+ export declare const asSlashIndexHead: {
38
+ <T>(value: T): (T & {
39
+ height: number;
40
+ indexVersion: number;
41
+ schema: "network.xyo.s3.slash.index.head" & {
42
+ readonly __schema: true;
43
+ };
44
+ anchor?: number | undefined;
45
+ }) | undefined;
46
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
47
+ height: number;
48
+ indexVersion: number;
49
+ schema: "network.xyo.s3.slash.index.head" & {
50
+ readonly __schema: true;
51
+ };
52
+ anchor?: number | undefined;
53
+ };
54
+ };
55
+ /** Non-validating cast to SlashIndexHead. */
56
+ export declare const toSlashIndexHead: {
57
+ (value: unknown): {
58
+ height: number;
59
+ indexVersion: number;
60
+ schema: "network.xyo.s3.slash.index.head" & {
61
+ readonly __schema: true;
62
+ };
63
+ anchor?: number | undefined;
64
+ } | undefined;
65
+ (value: unknown, assert: import("@ariestools/sdk").ZodFactoryConfig): {
66
+ height: number;
67
+ indexVersion: number;
68
+ schema: "network.xyo.s3.slash.index.head" & {
69
+ readonly __schema: true;
70
+ };
71
+ anchor?: number | undefined;
72
+ };
73
+ };
74
+ /** Schema id for the per-offense aggregate. */
75
+ export declare const SlashIndexKeyRecordSchema: "network.xyo.s3.slash.index.key" & {
76
+ readonly __schema: true;
77
+ };
78
+ /** Type literal for the per-offense aggregate schema. */
79
+ export type SlashIndexKeyRecordSchema = typeof SlashIndexKeyRecordSchema;
80
+ /**
81
+ * Zod schema for everything recorded about one offense.
82
+ *
83
+ * The aggregates are the only discovery surface, because the published read path cannot list
84
+ * objects. That is why they are allowed to be rewritten while everything else is immutable — and
85
+ * why every rewrite only appends, so a pass that runs twice converges instead of losing history.
86
+ */
87
+ export declare const SlashIndexKeyRecordZod: z.ZodObject<{
88
+ accused: z.ZodString;
89
+ adjudication: z.ZodOptional<z.ZodString>;
90
+ block: z.ZodInt;
91
+ challenges: z.ZodArray<z.ZodString>;
92
+ chain: z.ZodString;
93
+ outcome: z.ZodOptional<z.ZodEnum<{
94
+ confirmed: "confirmed";
95
+ refuted: "refuted";
96
+ indeterminate: "indeterminate";
97
+ invalid: "invalid";
98
+ }>>;
99
+ offense: z.ZodEnum<{
100
+ equivocation: "equivocation";
101
+ "invalid-block": "invalid-block";
102
+ "reward-overmint": "reward-overmint";
103
+ "false-anchor": "false-anchor";
104
+ "ineligible-production": "ineligible-production";
105
+ "invalid-slash-request": "invalid-slash-request";
106
+ "false-attestation": "false-attestation";
107
+ }>;
108
+ requests: z.ZodArray<z.ZodString>;
109
+ schema: z.ZodLiteral<"network.xyo.s3.slash.index.key" & {
110
+ readonly __schema: true;
111
+ }>;
112
+ }, z.core.$strip>;
113
+ /** Everything recorded about one offense. */
114
+ export type SlashIndexKeyRecord = z.infer<typeof SlashIndexKeyRecordZod>;
115
+ /** Type guard that checks if a value is a valid SlashIndexKeyRecord. */
116
+ export declare const isSlashIndexKeyRecord: <T>(value: T) => value is T & {
117
+ accused: string;
118
+ block: number;
119
+ challenges: string[];
120
+ chain: string;
121
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
122
+ requests: string[];
123
+ schema: "network.xyo.s3.slash.index.key" & {
124
+ readonly __schema: true;
125
+ };
126
+ adjudication?: string | undefined;
127
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
128
+ };
129
+ /** Converts a value to SlashIndexKeyRecord, throwing if invalid. */
130
+ export declare const asSlashIndexKeyRecord: {
131
+ <T>(value: T): (T & {
132
+ accused: string;
133
+ block: number;
134
+ challenges: string[];
135
+ chain: string;
136
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
137
+ requests: string[];
138
+ schema: "network.xyo.s3.slash.index.key" & {
139
+ readonly __schema: true;
140
+ };
141
+ adjudication?: string | undefined;
142
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
143
+ }) | undefined;
144
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
145
+ accused: string;
146
+ block: number;
147
+ challenges: string[];
148
+ chain: string;
149
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
150
+ requests: string[];
151
+ schema: "network.xyo.s3.slash.index.key" & {
152
+ readonly __schema: true;
153
+ };
154
+ adjudication?: string | undefined;
155
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
156
+ };
157
+ };
158
+ /** Builds a validated slash index head. */
159
+ export declare function createSlashIndexHead(height: number, anchor?: number): SlashIndexHead;
160
+ //# sourceMappingURL=slashIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/slashIndex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,kDAAkD;AAClD,eAAO,MAAM,oBAAoB;;CAAoD,CAAA;AACrF,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAIpC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;iBAQ5B,CAAA;AAEF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE9D,mEAAmE;AACnE,eAAO,MAAM,gBAAgB;;;;;;;CAAkC,CAAA;AAC/D,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAAsD,CAAA;AACnF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAAsD,CAAA;AAEnF,+CAA+C;AAC/C,eAAO,MAAM,yBAAyB;;CAAmD,CAAA;AACzF,yDAAyD;AACzD,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBjC,CAAA;AAEF,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAExE,wEAAwE;AACxE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CAAuC,CAAA;AACzE,oEAAoE;AACpE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgE,CAAA;AAElG,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAIpF"}
@@ -3,5 +3,6 @@ export * from './evmEventIndex.js';
3
3
  export * from './finalized.js';
4
4
  export * from './indexPaths.js';
5
5
  export * from './networkStakeRewardsIndex.js';
6
+ export * from './slashIndex.js';
6
7
  export * from './transactionInclusionIndex.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import type { Hash } from '@ariestools/sdk';
2
+ import type { XyoAddress } from '@xyo-network/sdk';
3
+ import type { OffenseCode } from '../../../protocol-model/index.js';
4
+ /** Path of the mutable slash-index head. */
5
+ export declare function slashIndexHeadPath(): string;
6
+ /** Path of the static slash-index manifest. */
7
+ export declare function slashIndexManifestPath(): string;
8
+ /** Path of one immutable recorded slash request. */
9
+ export declare function slashIndexRequestPath(hash: Hash): string;
10
+ /** Path of one immutable recorded slash commitment. */
11
+ export declare function slashIndexCommitPath(hash: Hash): string;
12
+ /** Path of one immutable recorded slash challenge. */
13
+ export declare function slashIndexChallengePath(hash: Hash): string;
14
+ /** Path of one immutable recorded slash adjudication. */
15
+ export declare function slashIndexAdjudicationPath(hash: Hash): string;
16
+ /**
17
+ * Path of the aggregate for one offense.
18
+ *
19
+ * Keyed by the canonical offense identity rather than by any report, so several reports of the
20
+ * same misconduct converge on one object instead of accumulating as separate accusations.
21
+ */
22
+ export declare function slashIndexKeyPath(accused: XyoAddress, offense: OffenseCode, block: number): string;
23
+ /** Path of one producer's offense history. */
24
+ export declare function slashIndexAccusedPath(address: XyoAddress): string;
25
+ /** Path of one reporter's claim history. */
26
+ export declare function slashIndexClaimantPath(address: XyoAddress): string;
27
+ /** Path of one published admission shadow report. */
28
+ export declare function admissionShadowPath(height: number): string;
29
+ /** Path of the mutable pointer to the newest admission shadow report. */
30
+ export declare function admissionShadowHeadPath(): string;
31
+ //# sourceMappingURL=slashIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/slashIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIlD,4CAA4C;AAC5C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,+CAA+C;AAC/C,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAExD;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE1D;AAED,yDAAyD;AACzD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAElG;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEjE;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAElE;AAED,qDAAqD;AACrD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}