instar 1.3.889 → 1.3.890

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 (109) hide show
  1. package/dashboard/glance.js +1 -0
  2. package/dashboard/index.html +60 -0
  3. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  4. package/dist/config/ConfigDefaults.js +9 -0
  5. package/dist/config/ConfigDefaults.js.map +1 -1
  6. package/dist/core/BackupManager.d.ts.map +1 -1
  7. package/dist/core/BackupManager.js +22 -15
  8. package/dist/core/BackupManager.js.map +1 -1
  9. package/dist/core/InitiativeTracker.d.ts +7 -0
  10. package/dist/core/InitiativeTracker.d.ts.map +1 -1
  11. package/dist/core/InitiativeTracker.js +17 -0
  12. package/dist/core/InitiativeTracker.js.map +1 -1
  13. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  14. package/dist/core/WriteDomainRegistry.js +12 -0
  15. package/dist/core/WriteDomainRegistry.js.map +1 -1
  16. package/dist/core/canonicalPipelineRegistry.d.ts +73 -0
  17. package/dist/core/canonicalPipelineRegistry.d.ts.map +1 -0
  18. package/dist/core/canonicalPipelineRegistry.js +56 -0
  19. package/dist/core/canonicalPipelineRegistry.js.map +1 -0
  20. package/dist/core/canonicalPipelineRuntimeEvidence.d.ts +13 -0
  21. package/dist/core/canonicalPipelineRuntimeEvidence.d.ts.map +1 -0
  22. package/dist/core/canonicalPipelineRuntimeEvidence.js +15 -0
  23. package/dist/core/canonicalPipelineRuntimeEvidence.js.map +1 -0
  24. package/dist/core/componentCategories.d.ts.map +1 -1
  25. package/dist/core/componentCategories.js +1 -0
  26. package/dist/core/componentCategories.js.map +1 -1
  27. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  28. package/dist/core/devGatedFeatures.js +18 -0
  29. package/dist/core/devGatedFeatures.js.map +1 -1
  30. package/dist/core/types.d.ts +19 -1
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/core/version-skew.d.ts +1 -1
  34. package/dist/core/version-skew.d.ts.map +1 -1
  35. package/dist/data/llmBenchCoverage.d.ts.map +1 -1
  36. package/dist/data/llmBenchCoverage.js +6 -0
  37. package/dist/data/llmBenchCoverage.js.map +1 -1
  38. package/dist/data/provenanceCoverage.d.ts +2 -0
  39. package/dist/data/provenanceCoverage.d.ts.map +1 -1
  40. package/dist/data/provenanceCoverage.js +10 -0
  41. package/dist/data/provenanceCoverage.js.map +1 -1
  42. package/dist/feedback-factory/drain/FeedbackConsumerPromotionStore.d.ts +18 -0
  43. package/dist/feedback-factory/drain/FeedbackConsumerPromotionStore.d.ts.map +1 -0
  44. package/dist/feedback-factory/drain/FeedbackConsumerPromotionStore.js +51 -0
  45. package/dist/feedback-factory/drain/FeedbackConsumerPromotionStore.js.map +1 -0
  46. package/dist/feedback-factory/drain/FeedbackDrainBackupCadence.d.ts +20 -0
  47. package/dist/feedback-factory/drain/FeedbackDrainBackupCadence.d.ts.map +1 -0
  48. package/dist/feedback-factory/drain/FeedbackDrainBackupCadence.js +28 -0
  49. package/dist/feedback-factory/drain/FeedbackDrainBackupCadence.js.map +1 -0
  50. package/dist/feedback-factory/drain/FeedbackDrainPosture.d.ts +14 -0
  51. package/dist/feedback-factory/drain/FeedbackDrainPosture.d.ts.map +1 -0
  52. package/dist/feedback-factory/drain/FeedbackDrainPosture.js +15 -0
  53. package/dist/feedback-factory/drain/FeedbackDrainPosture.js.map +1 -0
  54. package/dist/feedback-factory/drain/FeedbackDrainService.d.ts +121 -0
  55. package/dist/feedback-factory/drain/FeedbackDrainService.d.ts.map +1 -0
  56. package/dist/feedback-factory/drain/FeedbackDrainService.js +370 -0
  57. package/dist/feedback-factory/drain/FeedbackDrainService.js.map +1 -0
  58. package/dist/feedback-factory/drain/FeedbackDrainStore.d.ts +369 -0
  59. package/dist/feedback-factory/drain/FeedbackDrainStore.d.ts.map +1 -0
  60. package/dist/feedback-factory/drain/FeedbackDrainStore.js +1125 -0
  61. package/dist/feedback-factory/drain/FeedbackDrainStore.js.map +1 -0
  62. package/dist/feedback-factory/drain/FeedbackDrainTickProxy.d.ts +67 -0
  63. package/dist/feedback-factory/drain/FeedbackDrainTickProxy.d.ts.map +1 -0
  64. package/dist/feedback-factory/drain/FeedbackDrainTickProxy.js +151 -0
  65. package/dist/feedback-factory/drain/FeedbackDrainTickProxy.js.map +1 -0
  66. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts +32 -0
  67. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts.map +1 -0
  68. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js +47 -0
  69. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js.map +1 -0
  70. package/dist/feedback-factory/drain/FeedbackInitiativeConsumer.d.ts +33 -0
  71. package/dist/feedback-factory/drain/FeedbackInitiativeConsumer.d.ts.map +1 -0
  72. package/dist/feedback-factory/drain/FeedbackInitiativeConsumer.js +71 -0
  73. package/dist/feedback-factory/drain/FeedbackInitiativeConsumer.js.map +1 -0
  74. package/dist/feedback-factory/drain/FeedbackReadinessArbiter.d.ts +36 -0
  75. package/dist/feedback-factory/drain/FeedbackReadinessArbiter.d.ts.map +1 -0
  76. package/dist/feedback-factory/drain/FeedbackReadinessArbiter.js +153 -0
  77. package/dist/feedback-factory/drain/FeedbackReadinessArbiter.js.map +1 -0
  78. package/dist/feedback-factory/drain/index.d.ts +2 -0
  79. package/dist/feedback-factory/drain/index.d.ts.map +1 -0
  80. package/dist/feedback-factory/drain/index.js +2 -0
  81. package/dist/feedback-factory/drain/index.js.map +1 -0
  82. package/dist/feedback-factory/processing/FeedbackProcessingService.d.ts +14 -0
  83. package/dist/feedback-factory/processing/FeedbackProcessingService.d.ts.map +1 -1
  84. package/dist/feedback-factory/processing/FeedbackProcessingService.js +25 -4
  85. package/dist/feedback-factory/processing/FeedbackProcessingService.js.map +1 -1
  86. package/dist/feedback-factory/store/FeedbackSourceGenerations.d.ts +39 -0
  87. package/dist/feedback-factory/store/FeedbackSourceGenerations.d.ts.map +1 -0
  88. package/dist/feedback-factory/store/FeedbackSourceGenerations.js +288 -0
  89. package/dist/feedback-factory/store/FeedbackSourceGenerations.js.map +1 -0
  90. package/dist/feedback-factory/store/JsonlFeedbackStore.d.ts +26 -6
  91. package/dist/feedback-factory/store/JsonlFeedbackStore.d.ts.map +1 -1
  92. package/dist/feedback-factory/store/JsonlFeedbackStore.js +139 -25
  93. package/dist/feedback-factory/store/JsonlFeedbackStore.js.map +1 -1
  94. package/dist/server/AgentServer.d.ts +3 -0
  95. package/dist/server/AgentServer.d.ts.map +1 -1
  96. package/dist/server/AgentServer.js +188 -1
  97. package/dist/server/AgentServer.js.map +1 -1
  98. package/dist/server/routes.d.ts +31 -0
  99. package/dist/server/routes.d.ts.map +1 -1
  100. package/dist/server/routes.js +281 -0
  101. package/dist/server/routes.js.map +1 -1
  102. package/package.json +5 -2
  103. package/scripts/lint-canonical-pipeline-completeness.mjs +265 -0
  104. package/src/data/builtin-manifest.json +48 -48
  105. package/src/data/llmBenchCoverage.ts +6 -0
  106. package/src/data/provenanceCoverage.ts +12 -0
  107. package/src/scaffold/templates/jobs/instar/feedback-factory-process.md +13 -12
  108. package/upgrades/1.3.890.md +19 -0
  109. package/upgrades/side-effects/feedback-factory-operating-drain.md +110 -0
@@ -0,0 +1,369 @@
1
+ import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
2
+ export declare const FEEDBACK_DRAIN_STORE_STAGE: {
3
+ readonly canonicalPipelineId: "feedback-factory";
4
+ readonly stage: "durable-work";
5
+ };
6
+ export type ReadinessState = 'collecting' | 'ready' | 'queued' | 'held';
7
+ export type WorkState = 'queued' | 'claimed' | 'completed' | 'retryable' | 'dead-lettered' | 'held';
8
+ export type LinkState = 'pending' | 'readable' | 'degraded' | 'held';
9
+ export type RunState = 'accepted' | 'running' | 'succeeded' | 'no-op' | 'degraded' | 'failed' | 'abandoned';
10
+ export declare class DrainConflictError extends Error {
11
+ readonly statusCode = 409;
12
+ constructor(message: string);
13
+ }
14
+ export interface ReadinessProjection {
15
+ clusterId: string;
16
+ state: ReadinessState;
17
+ epoch: number;
18
+ enteredAt: number;
19
+ lastEvaluatedAt: number | null;
20
+ nextReviewAt: number | null;
21
+ reasonCode: string;
22
+ }
23
+ export interface FeedbackWork {
24
+ workId: string;
25
+ idempotencyKey: string;
26
+ clusterId: string;
27
+ readinessEpoch: number;
28
+ state: WorkState;
29
+ title: string;
30
+ summary: string;
31
+ priority: string;
32
+ reportCount: number;
33
+ firstSeenAt: number;
34
+ lastSeenAt: number;
35
+ authorityRef: string;
36
+ evidenceRef: string;
37
+ leaseEpoch: number;
38
+ leaseExpiresAt: number | null;
39
+ consumerId: string | null;
40
+ attempts: number;
41
+ nextAttemptAt: number | null;
42
+ createdAt: number;
43
+ updatedAt: number;
44
+ }
45
+ export interface Claim extends FeedbackWork {
46
+ claimToken: string;
47
+ }
48
+ export interface InitiativeLinkObservation {
49
+ artifactId: string;
50
+ artifactKind: string;
51
+ feedbackWorkKey: string;
52
+ readable: boolean;
53
+ }
54
+ export interface InitiativeLinkReconciliationResult {
55
+ checked: number;
56
+ linked: number;
57
+ held: number;
58
+ degraded: number;
59
+ }
60
+ export type FeedbackDrainCrashPoint = 'readiness-after-state' | 'readiness-after-approval' | 'readiness-after-commit' | 'enqueue-after-work' | 'enqueue-after-readiness' | 'enqueue-after-link' | 'enqueue-after-commit' | 'claim-after-update' | 'claim-after-commit' | 'artifact-link-after-update' | 'artifact-link-after-commit' | 'completion-after-update' | 'completion-after-commit' | 'retry-after-update' | 'retry-after-commit' | 'run-after-transition' | 'run-after-commit' | 'restore-after-claims' | 'restore-after-runs' | 'restore-after-epoch' | 'restore-after-commit';
61
+ export interface AuthorityRecord {
62
+ authorityId: string;
63
+ agentId: string;
64
+ ownerMachineId: string;
65
+ ownerEpoch: number;
66
+ provider: string;
67
+ modelFamily: string;
68
+ promptVersion: string;
69
+ schemaVersion: string;
70
+ decisionPointId: string;
71
+ maxBatch: number;
72
+ maxTokens: number;
73
+ maxDailySpendUsd: number;
74
+ generation: number;
75
+ revoked: boolean;
76
+ }
77
+ export interface DrainMetrics {
78
+ readiness: Record<ReadinessState, number>;
79
+ work: Record<WorkState, number>;
80
+ oldestReadyAgeMs: number | null;
81
+ oldestQueuedAgeMs: number | null;
82
+ oldestClaimedAgeMs: number | null;
83
+ oldestFeedbackAgeMs: number | null;
84
+ oldestHeldAgeMs: number | null;
85
+ oldestDeadLetterAgeMs: number | null;
86
+ lastEnqueuedAt: number | null;
87
+ lastClaimedAt: number | null;
88
+ lastCompletedAt: number | null;
89
+ lastSuccessfulClusteringAt: number | null;
90
+ lastSuccessfulEvaluationAt: number | null;
91
+ lastSourceReconciliationAt: number | null;
92
+ overdueCollecting: number;
93
+ oldestOverdueAgeMs: number | null;
94
+ sourceProjectionLagBytes: number;
95
+ sourceChecksumConflicts: number;
96
+ oldestSourceConflictAgeMs: number | null;
97
+ }
98
+ export interface FeedbackDrainStoreOptions {
99
+ dbPath: string;
100
+ tokenHmacKey: string | Buffer;
101
+ clock?: () => number;
102
+ idFactory?: () => string;
103
+ tokenFactory?: () => string;
104
+ db?: BetterSqliteDatabase;
105
+ authorityBackupPath?: string;
106
+ crashInjector?: (point: FeedbackDrainCrashPoint) => void;
107
+ }
108
+ export declare class FeedbackDrainStore {
109
+ private readonly db;
110
+ private readonly hmacKey;
111
+ private readonly now;
112
+ private readonly idFactory;
113
+ private readonly tokenFactory;
114
+ private readonly authorityBackupPath;
115
+ private readonly crashInjector;
116
+ private readonly dbPath;
117
+ private unregisterSqlite?;
118
+ constructor(opts: FeedbackDrainStoreOptions);
119
+ close(): void;
120
+ integrityCheck(): boolean;
121
+ /** Quiescent, checksummed SQLite checkpoint metadata consumed by BackupManager. */
122
+ checkpointForBackup(ownerAuthorityEpoch: number): {
123
+ schemaVersion: 1;
124
+ snapshotId: string;
125
+ checksum: string;
126
+ dbFileIdentity: string;
127
+ ownerAuthorityEpoch: number;
128
+ createdAt: string;
129
+ manifestChecksum: string;
130
+ };
131
+ /** Distinguish a routine restart from a DB file restored out of a snapshot. */
132
+ restorePending(): boolean;
133
+ admitRequestNonce(authorityId: string, nonce: string, input?: {
134
+ now?: number;
135
+ ttlMs?: number;
136
+ }): boolean;
137
+ projectSourceGeneration(input: {
138
+ filePath: string;
139
+ generationId: string;
140
+ limit?: number;
141
+ crashPoint?: 'after-read' | 'after-insert' | 'after-commit';
142
+ }): {
143
+ projected: number;
144
+ replayed: number;
145
+ byteOffset: number;
146
+ lagBytes: number;
147
+ };
148
+ sourceCursor(): {
149
+ generationId: string;
150
+ byteOffset: number;
151
+ lastRecordChecksum: string;
152
+ } | null;
153
+ pendingProjectedFeedback(limit?: number): Array<{
154
+ ingestSequence: number;
155
+ record: Record<string, unknown>;
156
+ }>;
157
+ acknowledgeProcessedProjection(ingestSequence: number): void;
158
+ acceptSourceHandoff(input: {
159
+ fromGenerationId: string;
160
+ finalOffset: number;
161
+ toGenerationId: string;
162
+ }): void;
163
+ reconcileSourceProjection(input: {
164
+ filePath: string;
165
+ generationId: string;
166
+ limit?: number;
167
+ }): {
168
+ checked: number;
169
+ conflicts: number;
170
+ };
171
+ markClusteringSucceeded(at?: number): void;
172
+ sourceCompactionDue(intervalMs: number, now?: number): boolean;
173
+ recordSourceCompaction(at?: number): void;
174
+ ensureReadiness(clusterId: string, nextReviewAt?: number | null): ReadinessProjection;
175
+ getReadiness(clusterId: string): ReadinessProjection | null;
176
+ approveReady(input: {
177
+ clusterId: string;
178
+ approvalKey: string;
179
+ authorityId: string;
180
+ authorityGeneration: number;
181
+ evidenceHash: string;
182
+ decisionNonce: string;
183
+ proposalSetHash: string;
184
+ nextReviewAt?: number | null;
185
+ }): ReadinessProjection;
186
+ holdReadiness(clusterId: string, reason: string): ReadinessProjection;
187
+ releaseHeld(clusterId: string, input: {
188
+ revalidated: boolean;
189
+ reason: string;
190
+ }): ReadinessProjection;
191
+ dueReadiness(limit?: number, now?: number): ReadinessProjection[];
192
+ recordCollectingEvaluation(clusterId: string, input: {
193
+ reason: string;
194
+ nextReviewAt: number;
195
+ }): ReadinessProjection;
196
+ readyReadiness(limit?: number): ReadinessProjection[];
197
+ enqueue(input: {
198
+ clusterId: string;
199
+ title: string;
200
+ summary: string;
201
+ priority: string;
202
+ reportCount: number;
203
+ firstSeenAt: number;
204
+ lastSeenAt: number;
205
+ authorityRef: string;
206
+ evidenceRef: string;
207
+ }): FeedbackWork;
208
+ workById(workId: string): FeedbackWork | null;
209
+ workByKey(key: string): FeedbackWork | null;
210
+ isRetiredWorkKey(key: string): boolean;
211
+ claimNext(input: {
212
+ consumerId: string;
213
+ ownerAuthorityEpoch: number;
214
+ leaseMs: number;
215
+ now?: number;
216
+ }): Claim | null;
217
+ /** Exercise the real claim/link/ack FSM in an isolated ephemeral database. */
218
+ simulateClaims(input: {
219
+ limit: number;
220
+ ownerAuthorityEpoch: number;
221
+ now?: number;
222
+ }): number;
223
+ markArtifactReadable(input: {
224
+ workId: string;
225
+ leaseEpoch: number;
226
+ claimToken: string;
227
+ ownerAuthorityEpoch: number;
228
+ artifactId: string;
229
+ artifactKind: string;
230
+ }): void;
231
+ complete(input: {
232
+ workId: string;
233
+ leaseEpoch: number;
234
+ claimToken: string;
235
+ ownerAuthorityEpoch: number;
236
+ }): FeedbackWork;
237
+ retry(input: {
238
+ workId: string;
239
+ leaseEpoch: number;
240
+ claimToken: string;
241
+ ownerAuthorityEpoch: number;
242
+ retryAt: number;
243
+ maxAttempts: number;
244
+ reason: string;
245
+ }): FeedbackWork;
246
+ holdWork(workId: string, reason: string): FeedbackWork;
247
+ reconcileExpiredLeases(input: {
248
+ now?: number;
249
+ limit?: number;
250
+ retryDelayMs: number;
251
+ maxAttempts: number;
252
+ }): {
253
+ reconciled: number;
254
+ retryable: number;
255
+ deadLettered: number;
256
+ };
257
+ /**
258
+ * Complete the safety-critical part of a restored DB admission. A restore
259
+ * never reuses pre-restore writer or claim fences: integrity is checked,
260
+ * the owner epoch advances exactly once, active runs are abandoned, and
261
+ * every outstanding claim token is invalidated before another claim opens.
262
+ */
263
+ finalizeRestore(input: {
264
+ restoredOwnerAuthorityEpoch: number;
265
+ operatorDecisionRef: string;
266
+ snapshotId?: string;
267
+ manifestChecksum?: string;
268
+ oldOwnerQuiesced?: boolean;
269
+ splitBrainRecoveryPacket?: {
270
+ incidentId: string;
271
+ oldOwnerStatus: 'unreachable-or-fenced';
272
+ operatorDecisionRef: string;
273
+ };
274
+ }): {
275
+ ownerAuthorityEpoch: number;
276
+ invalidatedClaims: number;
277
+ abandonedRuns: number;
278
+ };
279
+ ownerAuthorityEpoch(): number | null;
280
+ /**
281
+ * Reconcile the SQLite saga side with InitiativeTracker's immutable exact
282
+ * key. Ambiguous, missing, unreadable, or conflicting links are held (or
283
+ * marked degraded for immutable completed history); they are never treated
284
+ * as permission to create another Initiative.
285
+ */
286
+ reconcileInitiativeLinks(input: {
287
+ lookupByFeedbackWorkKey: (feedbackWorkKey: string) => readonly InitiativeLinkObservation[];
288
+ limit?: number;
289
+ }): InitiativeLinkReconciliationResult;
290
+ startRun(input: {
291
+ ownerHost: string;
292
+ ownerEpoch: number;
293
+ leaseMs: number;
294
+ }): {
295
+ runId: string;
296
+ state: RunState;
297
+ acquired: boolean;
298
+ };
299
+ heartbeatRun(runId: string, ownerHost: string, ownerEpoch: number, leaseMs: number): void;
300
+ transitionRun(runId: string, from: 'accepted' | 'running', to: Exclude<RunState, 'accepted'>, reason?: string, fence?: {
301
+ ownerHost: string;
302
+ ownerEpoch: number;
303
+ }): void;
304
+ requestRunCancellation(runId: string, fence: {
305
+ ownerHost: string;
306
+ ownerEpoch: number;
307
+ }): boolean;
308
+ isRunCancellationRequested(runId: string, fence: {
309
+ ownerHost: string;
310
+ ownerEpoch: number;
311
+ }): boolean;
312
+ stopCancelledRunAtBoundary(runId: string, fence: {
313
+ ownerHost: string;
314
+ ownerEpoch: number;
315
+ }): boolean;
316
+ pruneOperationalHistory(input: {
317
+ ownerHost: string;
318
+ ownerAuthorityEpoch: number;
319
+ now?: number;
320
+ limit?: number;
321
+ }): {
322
+ retiredWork: number;
323
+ prunedAudit: number;
324
+ prunedRuns: number;
325
+ checkpointed: boolean;
326
+ };
327
+ abandonExpiredRuns(now?: number, limit?: number): number;
328
+ metrics(now?: number): DrainMetrics;
329
+ lastRun(): {
330
+ runId: string;
331
+ state: RunState;
332
+ ownerHost: string;
333
+ ownerEpoch: number;
334
+ reason: string;
335
+ createdAt: number;
336
+ updatedAt: number;
337
+ durationMs: number;
338
+ } | null;
339
+ mutateAuthority(input: Omit<AuthorityRecord, 'generation' | 'revoked'> & {
340
+ action: 'create' | 'replace' | 'revoke' | 'restore';
341
+ operatorDecisionRef: string;
342
+ }): AuthorityRecord;
343
+ authorityGeneration(): number;
344
+ authorityPosture(authorityId: string, generation: number): {
345
+ mode: 'active' | 'proposal-only';
346
+ reason: string;
347
+ updatedAt: number;
348
+ };
349
+ demoteAuthority(authorityId: string, generation: number, reason: string): void;
350
+ getAuthority(authorityId: string, generation?: number): AuthorityRecord | null;
351
+ verifyAuthorityAudit(): boolean;
352
+ /** Fail-closed reservation against the authority's independent UTC-day cap. */
353
+ reserveAuthoritySpend(authority: AuthorityRecord, estimatedUsd: number, decisions: number, now?: number): boolean;
354
+ private latestAuthority;
355
+ private writeAuthorityBackup;
356
+ private restoreAuthorityBackupIfEmpty;
357
+ private holdReadinessInternal;
358
+ private assertCurrentClaim;
359
+ private assertOrInitializeOwnerAuthorityEpoch;
360
+ private hashToken;
361
+ private inject;
362
+ private ensureSchemaUpgrades;
363
+ private setMeta;
364
+ private audit;
365
+ private readinessFromRow;
366
+ private workFromRow;
367
+ private authorityFromRow;
368
+ }
369
+ //# sourceMappingURL=FeedbackDrainStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackDrainStore.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/drain/FeedbackDrainStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAKvE,eAAO,MAAM,0BAA0B;;;CAGY,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;AACpG,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AACrE,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5G,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,OAAO;gBACd,OAAO,EAAE,MAAM;CAC5B;AAUD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAM,SAAQ,YAAY;IAAG,UAAU,EAAE,MAAM,CAAC;CAAE;AAEnE,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kCAAkC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,uBAAuB,GAC/B,uBAAuB,GAAG,0BAA0B,GAAG,wBAAwB,GAC/E,oBAAoB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,sBAAsB,GAChG,oBAAoB,GAAG,oBAAoB,GAC3C,4BAA4B,GAAG,4BAA4B,GAC3D,yBAAyB,GAAG,yBAAyB,GACrD,oBAAoB,GAAG,oBAAoB,GAC3C,sBAAsB,GAAG,kBAAkB,GAC3C,sBAAsB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,oBAAoB,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC1D;AA0FD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAClF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAAa;gBAE1B,IAAI,EAAE,yBAAyB;IA0B3C,KAAK,IAAI,IAAI;IAMb,cAAc,IAAI,OAAO;IAKzB,mFAAmF;IACnF,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAyB9M,+EAA+E;IAC/E,cAAc,IAAI,OAAO;IAqBzB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO;IAY5G,uBAAuB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,cAAc,CAAA;KAAE,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAmEtO,YAAY,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAM/F,wBAAwB,CAAC,KAAK,SAAM,GAAG,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAOzG,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQ5D,mBAAmB,CAAC,KAAK,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc3G,yBAAyB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IA+BpI,uBAAuB,CAAC,EAAE,SAAa,GAAG,IAAI;IAE9C,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO;IAOlE,sBAAsB,CAAC,EAAE,SAAa,GAAG,IAAI;IAE7C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,mBAAmB;IAO3F,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAK3D,YAAY,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,mBAAmB;IAoC1O,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAIrE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAUpG,YAAY,CAAC,KAAK,SAAM,EAAE,GAAG,SAAa,GAAG,mBAAmB,EAAE;IAMlE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAQnH,cAAc,CAAC,KAAK,SAAM,GAAG,mBAAmB,EAAE;IAMlD,OAAO,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IA0B9M,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK7C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,SAAS,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,GAAG,IAAI;IAoBlH,8EAA8E;IAC9E,cAAc,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAgC3F,oBAAoB,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYpK,QAAQ,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IAiBtH,KAAK,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IAgBzK,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY;IAUtD,sBAAsB,CAAC,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAiB3K;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE;QAAE,2BAA2B,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACxI,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,wBAAwB,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,uBAAuB,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG;QACxJ,mBAAmB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;KAC/E;IAuDD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,wBAAwB,CAAC,KAAK,EAAE;QAC9B,uBAAuB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,SAAS,yBAAyB,EAAE,CAAC;QAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,kCAAkC;IAoCtC,QAAQ,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IAUlI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQzF,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,SAAK,EAAE,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAcnK,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAShG,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAOpG,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAOpG,uBAAuB,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAChH,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC;KACrF;IA8BD,kBAAkB,CAAC,GAAG,SAAa,EAAE,KAAK,SAAK,GAAG,MAAM;IAMxD,OAAO,CAAC,GAAG,SAAa,GAAG,YAAY;IA6BvC,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUrK,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,SAAS,CAAC,GAAG;QAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe;IAyC/K,mBAAmB,IAAI,MAAM;IAK7B,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,GAAG,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAMlI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS9E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAO9E,oBAAoB,IAAI,OAAO;IAY/B,+EAA+E;IAC/E,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO;IAmBrH,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,qCAAqC;IAO7C,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,OAAO;IAGf,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;CAGzB"}