@principles/core 1.168.0 → 1.169.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.
Files changed (112) hide show
  1. package/dist/runtime-v2/__tests__/activation-types-helpers.test.js +6 -14
  2. package/dist/runtime-v2/__tests__/activation-types-helpers.test.js.map +1 -1
  3. package/dist/runtime-v2/__tests__/architecture-regression.test.js +2 -66
  4. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  5. package/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js +1 -2
  6. package/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js.map +1 -1
  7. package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js +8 -8
  8. package/dist/runtime-v2/__tests__/internalization-orchestrator.test.js.map +1 -1
  9. package/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js +45 -80
  10. package/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js.map +1 -1
  11. package/dist/runtime-v2/__tests__/internalization-state-machine.test.js +31 -130
  12. package/dist/runtime-v2/__tests__/internalization-state-machine.test.js.map +1 -1
  13. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +0 -1
  14. package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  15. package/dist/runtime-v2/__tests__/pitask-metadata.test.js +4 -4
  16. package/dist/runtime-v2/__tests__/pitask-metadata.test.js.map +1 -1
  17. package/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +2 -5
  18. package/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  19. package/dist/runtime-v2/__tests__/story-a-demo.test.js +2 -2
  20. package/dist/runtime-v2/__tests__/story-a-demo.test.js.map +1 -1
  21. package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +7 -10
  22. package/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
  23. package/dist/runtime-v2/activation/__tests__/approval-queue.test.js +1 -3
  24. package/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
  25. package/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +4 -4
  26. package/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +6 -6
  27. package/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
  28. package/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
  29. package/dist/runtime-v2/activation/activation-dispatcher.js +0 -1
  30. package/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
  31. package/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
  32. package/dist/runtime-v2/activation/activation-types.js +0 -1
  33. package/dist/runtime-v2/activation/activation-types.js.map +1 -1
  34. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  35. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +0 -2
  36. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  37. package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +0 -7
  38. package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
  39. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +5 -6
  40. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  41. package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +0 -1
  42. package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
  43. package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +0 -1
  44. package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
  45. package/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  46. package/dist/runtime-v2/config/pd-config-defaults.js +0 -1
  47. package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  48. package/dist/runtime-v2/config/pd-config-types.d.ts +1 -1
  49. package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  50. package/dist/runtime-v2/config/pd-config-types.js +0 -1
  51. package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  52. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  53. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +0 -2
  54. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  55. package/dist/runtime-v2/index.d.ts +1 -7
  56. package/dist/runtime-v2/index.d.ts.map +1 -1
  57. package/dist/runtime-v2/index.js +1 -4
  58. package/dist/runtime-v2/index.js.map +1 -1
  59. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +0 -3
  60. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  61. package/dist/runtime-v2/internalization/__tests__/internalization-job-graph.test.js +4 -36
  62. package/dist/runtime-v2/internalization/__tests__/internalization-job-graph.test.js.map +1 -1
  63. package/dist/runtime-v2/internalization/__tests__/peer-runner-lineage-injection.test.js +0 -1
  64. package/dist/runtime-v2/internalization/__tests__/peer-runner-lineage-injection.test.js.map +1 -1
  65. package/dist/runtime-v2/internalization/__tests__/queue-actionability.test.js +0 -15
  66. package/dist/runtime-v2/internalization/__tests__/queue-actionability.test.js.map +1 -1
  67. package/dist/runtime-v2/internalization/index.d.ts +1 -7
  68. package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  69. package/dist/runtime-v2/internalization/index.js +1 -4
  70. package/dist/runtime-v2/internalization/index.js.map +1 -1
  71. package/dist/runtime-v2/internalization/internalization-job-graph.d.ts +7 -18
  72. package/dist/runtime-v2/internalization/internalization-job-graph.d.ts.map +1 -1
  73. package/dist/runtime-v2/internalization/internalization-job-graph.js +7 -24
  74. package/dist/runtime-v2/internalization/internalization-job-graph.js.map +1 -1
  75. package/dist/runtime-v2/internalization/internalization-state-machine.d.ts +3 -2
  76. package/dist/runtime-v2/internalization/internalization-state-machine.d.ts.map +1 -1
  77. package/dist/runtime-v2/internalization/internalization-state-machine.js +4 -3
  78. package/dist/runtime-v2/internalization/internalization-state-machine.js.map +1 -1
  79. package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +6 -6
  80. package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
  81. package/dist/runtime-v2/internalization/peer-runner-contracts.js +0 -3
  82. package/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
  83. package/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
  84. package/dist/runtime-v2/recovery-sweep-service.js +2 -2
  85. package/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
  86. package/dist/runtime-v2/store/candidate/__tests__/recommendation-kind-resolver.test.js +1 -1
  87. package/dist/runtime-v2/store/candidate/__tests__/recommendation-kind-resolver.test.js.map +1 -1
  88. package/package.json +1 -1
  89. package/dist/runtime-v2/__tests__/trainer-output-validator.test.d.ts +0 -2
  90. package/dist/runtime-v2/__tests__/trainer-output-validator.test.d.ts.map +0 -1
  91. package/dist/runtime-v2/__tests__/trainer-output-validator.test.js +0 -257
  92. package/dist/runtime-v2/__tests__/trainer-output-validator.test.js.map +0 -1
  93. package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.d.ts +0 -2
  94. package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.d.ts.map +0 -1
  95. package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js +0 -514
  96. package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js.map +0 -1
  97. package/dist/runtime-v2/internalization/__tests__/trainer-prompt-builder.test.d.ts +0 -2
  98. package/dist/runtime-v2/internalization/__tests__/trainer-prompt-builder.test.d.ts.map +0 -1
  99. package/dist/runtime-v2/internalization/__tests__/trainer-prompt-builder.test.js +0 -141
  100. package/dist/runtime-v2/internalization/__tests__/trainer-prompt-builder.test.js.map +0 -1
  101. package/dist/runtime-v2/internalization/trainer-output.d.ts +0 -122
  102. package/dist/runtime-v2/internalization/trainer-output.d.ts.map +0 -1
  103. package/dist/runtime-v2/internalization/trainer-output.js +0 -223
  104. package/dist/runtime-v2/internalization/trainer-output.js.map +0 -1
  105. package/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts +0 -24
  106. package/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts.map +0 -1
  107. package/dist/runtime-v2/internalization/trainer-prompt-builder.js +0 -57
  108. package/dist/runtime-v2/internalization/trainer-prompt-builder.js.map +0 -1
  109. package/dist/runtime-v2/internalization/trainer-runner.d.ts +0 -76
  110. package/dist/runtime-v2/internalization/trainer-runner.d.ts.map +0 -1
  111. package/dist/runtime-v2/internalization/trainer-runner.js +0 -540
  112. package/dist/runtime-v2/internalization/trainer-runner.js.map +0 -1
@@ -1,76 +0,0 @@
1
- import type { RuntimeStateManager } from '../store/runtime-state-manager.js';
2
- import type { PDRuntimeAdapter } from '../runtime-protocol.js';
3
- import type { StoreEventEmitter } from '../store/event-emitter.js';
4
- import type { TrainerOutputV1, TrainerValidator } from './trainer-output.js';
5
- import type { PIArtifactStore } from './pi-artifact.js';
6
- import { type PDErrorCategory } from '../error-categories.js';
7
- import { RunnerPhase } from '../runner/runner-phase.js';
8
- export type TrainerRunnerResultStatus = 'succeeded' | 'failed' | 'retried';
9
- export interface TrainerRunnerResult {
10
- readonly status: TrainerRunnerResultStatus;
11
- readonly taskId: string;
12
- readonly runId?: string;
13
- readonly artifactId?: string;
14
- readonly resultRef?: string;
15
- readonly contextHash?: string;
16
- readonly output?: TrainerOutputV1;
17
- readonly errorCategory?: PDErrorCategory;
18
- readonly failureReason?: string;
19
- readonly attemptCount: number;
20
- }
21
- export interface TrainerRunnerOptions {
22
- readonly pollIntervalMs?: number;
23
- readonly timeoutMs?: number;
24
- readonly defaultMaxAttempts?: number;
25
- readonly owner: string;
26
- readonly runtimeKind: string;
27
- readonly agentId?: string;
28
- }
29
- export interface ResolvedTrainerRunnerOptions {
30
- readonly pollIntervalMs: number;
31
- readonly timeoutMs: number;
32
- readonly defaultMaxAttempts: number;
33
- readonly owner: string;
34
- readonly runtimeKind: string;
35
- readonly agentId: string;
36
- }
37
- declare const DEFAULT_TRAINER_RUNNER_OPTIONS: Readonly<Omit<ResolvedTrainerRunnerOptions, 'owner' | 'runtimeKind'>>;
38
- export declare function resolveTrainerRunnerOptions(options: TrainerRunnerOptions): ResolvedTrainerRunnerOptions;
39
- export interface TrainerRunnerDeps {
40
- readonly stateManager: RuntimeStateManager;
41
- readonly runtimeAdapter: PDRuntimeAdapter;
42
- readonly eventEmitter: StoreEventEmitter;
43
- readonly validator: TrainerValidator;
44
- readonly artifactStore: PIArtifactStore;
45
- }
46
- export declare class TrainerRunner {
47
- private phase;
48
- private readonly resolvedOptions;
49
- private readonly stateManager;
50
- private readonly runtimeAdapter;
51
- private readonly eventEmitter;
52
- private readonly validator;
53
- private readonly artifactStore;
54
- constructor(deps: TrainerRunnerDeps, options: TrainerRunnerOptions);
55
- get currentPhase(): RunnerPhase;
56
- private emitTrainerEvent;
57
- run(taskId: string): Promise<TrainerRunnerResult>;
58
- private buildContext;
59
- private static hashContextRefs;
60
- private resolveStoreRunId;
61
- private invokeRuntime;
62
- private pollUntilTerminal;
63
- private fetchAndParseOutput;
64
- private succeedTask;
65
- private handleRuntimeFailure;
66
- private handleValidationError;
67
- private handleLeaseOrPhaseError;
68
- private handlePostLeaseError;
69
- private retryOrFail;
70
- private isPermanentError;
71
- private classifyError;
72
- private mapRunStatusToErrorCategory;
73
- private sleep;
74
- }
75
- export { DEFAULT_TRAINER_RUNNER_OPTIONS };
76
- //# sourceMappingURL=trainer-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trainer-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/trainer-runner.ts"],"names":[],"mappings":"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"}
@@ -1,540 +0,0 @@
1
- import { PDRuntimeError } from '../error-categories.js';
2
- import { hydratePITaskRecord } from './pitask-metadata.js';
3
- import { RunnerPhase } from '../runner/runner-phase.js';
4
- import { TrainerPromptBuilder } from './trainer-prompt-builder.js';
5
- import { injectRunnerLineageIfAbsent } from './peer-runner-contracts.js';
6
- const DEFAULT_TRAINER_RUNNER_OPTIONS = {
7
- pollIntervalMs: 5_000,
8
- timeoutMs: 300_000,
9
- defaultMaxAttempts: 3,
10
- agentId: 'trainer',
11
- };
12
- export function resolveTrainerRunnerOptions(options) {
13
- return {
14
- pollIntervalMs: options.pollIntervalMs ?? DEFAULT_TRAINER_RUNNER_OPTIONS.pollIntervalMs,
15
- timeoutMs: options.timeoutMs ?? DEFAULT_TRAINER_RUNNER_OPTIONS.timeoutMs,
16
- defaultMaxAttempts: options.defaultMaxAttempts ?? DEFAULT_TRAINER_RUNNER_OPTIONS.defaultMaxAttempts,
17
- owner: options.owner,
18
- runtimeKind: options.runtimeKind,
19
- agentId: options.agentId ?? DEFAULT_TRAINER_RUNNER_OPTIONS.agentId,
20
- };
21
- }
22
- const TRAINER_PERMANENT_ERROR_CATEGORIES = new Set([
23
- 'storage_unavailable', 'workspace_invalid', 'capability_missing', 'cancelled', 'input_invalid', 'output_invalid',
24
- ]);
25
- export class TrainerRunner {
26
- phase = RunnerPhase.Idle;
27
- resolvedOptions;
28
- stateManager;
29
- runtimeAdapter;
30
- eventEmitter;
31
- validator;
32
- artifactStore;
33
- constructor(deps, options) {
34
- this.stateManager = deps.stateManager;
35
- this.runtimeAdapter = deps.runtimeAdapter;
36
- this.eventEmitter = deps.eventEmitter;
37
- this.validator = deps.validator;
38
- this.artifactStore = deps.artifactStore;
39
- this.resolvedOptions = resolveTrainerRunnerOptions(options);
40
- }
41
- get currentPhase() {
42
- return this.phase;
43
- }
44
- emitTrainerEvent(eventType, taskId, payload) {
45
- this.eventEmitter.emitTelemetry({
46
- eventType: eventType,
47
- traceId: taskId,
48
- timestamp: new Date().toISOString(),
49
- sessionId: this.resolvedOptions.owner,
50
- agentId: this.resolvedOptions.agentId,
51
- payload,
52
- });
53
- }
54
- async run(taskId) {
55
- this.phase = RunnerPhase.Idle;
56
- let leasedTask;
57
- try {
58
- leasedTask = await this.stateManager.acquireLease({
59
- taskId,
60
- owner: this.resolvedOptions.owner,
61
- runtimeKind: this.resolvedOptions.runtimeKind,
62
- });
63
- }
64
- catch (error) {
65
- return await this.handleLeaseOrPhaseError(taskId, error);
66
- }
67
- if (leasedTask.taskKind !== 'trainer') {
68
- this.emitTrainerEvent('trainer_wrong_task_kind', taskId, {
69
- expectedKind: 'trainer',
70
- actualKind: leasedTask.taskKind,
71
- });
72
- return this.retryOrFail({
73
- taskId,
74
- task: leasedTask,
75
- errorCategory: 'input_invalid',
76
- failureReason: `Task kind must be 'trainer', got '${leasedTask.taskKind}'`,
77
- });
78
- }
79
- this.emitTrainerEvent('trainer_task_leased', taskId, {
80
- taskKind: 'trainer',
81
- attemptCount: leasedTask.attemptCount,
82
- });
83
- try {
84
- const storeRunId = await this.resolveStoreRunId(taskId);
85
- this.phase = RunnerPhase.BuildingContext;
86
- const { contextHash, rolloutReviewerArtifact, sourceRolloutReviewerArtifactId } = await this.buildContext(taskId);
87
- if (!rolloutReviewerArtifact || !sourceRolloutReviewerArtifactId) {
88
- return this.retryOrFail({
89
- taskId,
90
- task: leasedTask,
91
- errorCategory: 'input_invalid',
92
- failureReason: sourceRolloutReviewerArtifactId ? 'RolloutReviewer dependency artifact not found' : 'RolloutReviewer dependency artifact ID not resolved',
93
- });
94
- }
95
- this.emitTrainerEvent('trainer_context_built', taskId, { contextHash });
96
- this.phase = RunnerPhase.Invoking;
97
- const runHandle = await this.invokeRuntime({ taskId, contextHash, rolloutReviewerArtifact, sourceRolloutReviewerArtifactId });
98
- this.emitTrainerEvent('trainer_run_started', taskId, {
99
- runtimeKind: this.resolvedOptions.runtimeKind,
100
- });
101
- this.phase = RunnerPhase.Polling;
102
- const finalStatus = await this.pollUntilTerminal(runHandle);
103
- if (finalStatus.status !== 'succeeded') {
104
- return await this.handleRuntimeFailure(taskId, leasedTask, finalStatus);
105
- }
106
- this.phase = RunnerPhase.FetchingOutput;
107
- const output = await this.fetchAndParseOutput(runHandle.runId);
108
- // Re-inject taskId if stripped by stripLineageFields (PRI-272 / ERR-008).
109
- injectRunnerLineageIfAbsent(output, 'taskId', taskId);
110
- this.phase = RunnerPhase.Validating;
111
- const validationResult = await this.validator.validate(output, taskId, sourceRolloutReviewerArtifactId ?? undefined);
112
- if (!validationResult.valid) {
113
- return await this.handleValidationError({
114
- taskId,
115
- task: leasedTask,
116
- errors: validationResult.errors,
117
- errorCategory: validationResult.errorCategory,
118
- });
119
- }
120
- this.emitTrainerEvent('trainer_output_validated', taskId, {
121
- decision: output.ruleCandidate.proposedDecision,
122
- confidence: output.ruleCandidate.confidence,
123
- });
124
- return await this.succeedTask({
125
- taskId,
126
- runId: storeRunId,
127
- output,
128
- task: leasedTask,
129
- contextHash,
130
- });
131
- }
132
- catch (error) {
133
- return await this.handlePostLeaseError(taskId, leasedTask, error);
134
- }
135
- }
136
- async buildContext(taskId) {
137
- const task = await this.stateManager.getTask(taskId);
138
- if (!task) {
139
- throw new PDRuntimeError('input_invalid', `Task ${taskId} not found`);
140
- }
141
- const piTask = hydratePITaskRecord(task);
142
- const deps = piTask?.dependencyTaskIds ?? [];
143
- if (deps.length === 0) {
144
- this.emitTrainerEvent('trainer_no_dependencies', taskId, {});
145
- return { contextHash: 'empty', rolloutReviewerArtifact: null, sourceRolloutReviewerArtifactId: null };
146
- }
147
- for (const depId of deps) {
148
- const depTask = await this.stateManager.getTask(depId);
149
- if (!depTask)
150
- continue;
151
- if (depTask.taskKind !== 'rollout_reviewer')
152
- continue;
153
- if (depTask.status !== 'succeeded') {
154
- this.emitTrainerEvent('trainer_dependency_not_succeeded', taskId, {
155
- depTaskId: depId,
156
- depStatus: depTask.status,
157
- });
158
- continue;
159
- }
160
- const artifacts = await this.artifactStore.listBySourceTaskId(depId);
161
- if (artifacts.length > 0) {
162
- const [firstArtifact] = artifacts;
163
- if (!firstArtifact)
164
- continue;
165
- const artifactRef = firstArtifact.artifactId;
166
- this.emitTrainerEvent('trainer_rollout_reviewer_dep_selected', taskId, {
167
- depTaskId: depId,
168
- artifactId: firstArtifact.artifactId,
169
- });
170
- return {
171
- contextHash: TrainerRunner.hashContextRefs([artifactRef]),
172
- rolloutReviewerArtifact: firstArtifact.contentJson,
173
- sourceRolloutReviewerArtifactId: firstArtifact.artifactId,
174
- };
175
- }
176
- }
177
- this.emitTrainerEvent('trainer_no_rollout_reviewer_artifact', taskId, {});
178
- return { contextHash: 'empty', rolloutReviewerArtifact: null, sourceRolloutReviewerArtifactId: null };
179
- }
180
- static hashContextRefs(refs) {
181
- if (refs.length === 0)
182
- return 'empty';
183
- const str = refs.join('|');
184
- let hash = 0;
185
- for (let i = 0; i < str.length; i++) {
186
- hash = (Math.imul(31, hash) + str.charCodeAt(i)) | 0;
187
- }
188
- return `ctx-${Math.abs(hash).toString(16)}`;
189
- }
190
- async resolveStoreRunId(taskId) {
191
- const runs = await this.stateManager.getRunsByTask(taskId);
192
- const latestRun = runs[runs.length - 1];
193
- if (!latestRun) {
194
- throw new PDRuntimeError('execution_failed', `No run records found for task ${taskId} after lease acquisition`);
195
- }
196
- return latestRun.runId;
197
- }
198
- async invokeRuntime(params) {
199
- let parsedRolloutReviewerArtifact = null;
200
- if (params.rolloutReviewerArtifact) {
201
- try {
202
- parsedRolloutReviewerArtifact = JSON.parse(params.rolloutReviewerArtifact);
203
- }
204
- catch {
205
- parsedRolloutReviewerArtifact = params.rolloutReviewerArtifact;
206
- }
207
- }
208
- const builder = new TrainerPromptBuilder();
209
- const { message } = builder.buildPrompt({
210
- taskId: params.taskId,
211
- contextHash: params.contextHash,
212
- sourceRolloutReviewerArtifactId: params.sourceRolloutReviewerArtifactId,
213
- rolloutReviewerArtifact: parsedRolloutReviewerArtifact,
214
- });
215
- const startInput = {
216
- agentSpec: { agentId: this.resolvedOptions.agentId, schemaVersion: 'v1' },
217
- taskRef: { taskId: params.taskId },
218
- inputPayload: message,
219
- contextItems: [],
220
- outputSchemaRef: 'trainer-output-v1',
221
- timeoutMs: this.resolvedOptions.timeoutMs,
222
- };
223
- return this.runtimeAdapter.startRun(startInput);
224
- }
225
- async pollUntilTerminal(runHandle) {
226
- const deadline = Date.now() + this.resolvedOptions.timeoutMs;
227
- const terminalStatuses = ['succeeded', 'failed', 'timed_out', 'cancelled'];
228
- while (Date.now() < deadline) {
229
- const status = await this.runtimeAdapter.pollRun(runHandle.runId);
230
- if (terminalStatuses.includes(status.status)) {
231
- return status;
232
- }
233
- await this.sleep(this.resolvedOptions.pollIntervalMs);
234
- }
235
- try {
236
- const finalPoll = await this.runtimeAdapter.pollRun(runHandle.runId);
237
- if (terminalStatuses.includes(finalPoll.status)) {
238
- return finalPoll;
239
- }
240
- }
241
- catch { /* fall through to cancel/timeout */ }
242
- let cancelFailed = false;
243
- try {
244
- await this.runtimeAdapter.cancelRun(runHandle.runId);
245
- }
246
- catch (cancelErr) {
247
- cancelFailed = true;
248
- this.emitTrainerEvent('trainer_cancel_run_failed', runHandle.runId, {
249
- runId: runHandle.runId,
250
- errorMessage: cancelErr instanceof Error ? cancelErr.message : String(cancelErr),
251
- });
252
- }
253
- const cancelNote = cancelFailed ? ' (cancelRun also failed)' : '';
254
- throw new PDRuntimeError('timeout', `Run ${runHandle.runId} timed out after ${this.resolvedOptions.timeoutMs}ms${cancelNote}`);
255
- }
256
- async fetchAndParseOutput(runId) {
257
- const result = await this.runtimeAdapter.fetchOutput(runId);
258
- if (!result || !result.payload) {
259
- throw new PDRuntimeError('output_invalid', `No output available for run ${runId}`);
260
- }
261
- const payload = result.payload;
262
- if (typeof payload !== 'object' || payload === null) {
263
- throw new PDRuntimeError('output_invalid', `Output payload is not an object for run ${runId}`);
264
- }
265
- if (typeof payload.ruleCandidate !== 'object' || payload.ruleCandidate === null) {
266
- throw new PDRuntimeError('output_invalid', `Output payload missing ruleCandidate object for run ${runId}`);
267
- }
268
- return result.payload;
269
- }
270
- async succeedTask(ctx) {
271
- try {
272
- await this.stateManager.updateRunOutput(ctx.runId, JSON.stringify(ctx.output));
273
- }
274
- catch (updateErr) {
275
- this.emitTrainerEvent('trainer_update_output_failed', ctx.taskId, {
276
- runId: ctx.runId,
277
- errorMessage: updateErr instanceof Error ? updateErr.message : String(updateErr),
278
- });
279
- throw updateErr;
280
- }
281
- const artifactId = `pi-art-${ctx.taskId}-${ctx.runId}`;
282
- const now = new Date().toISOString();
283
- let lineageArtifactIds = [];
284
- try {
285
- const piTask = hydratePITaskRecord(ctx.task);
286
- const deps = piTask?.dependencyTaskIds ?? [];
287
- const results = await Promise.allSettled(deps.map((depId) => this.artifactStore.listBySourceTaskId(depId)));
288
- for (const result of results) {
289
- if (result.status === 'fulfilled') {
290
- for (const artifact of result.value) {
291
- lineageArtifactIds.push(artifact.artifactId);
292
- }
293
- }
294
- }
295
- }
296
- catch { /* lineage resolution failure is non-fatal */ }
297
- try {
298
- await this.artifactStore.upsertArtifact({
299
- artifactId,
300
- artifactKind: 'rule',
301
- sourceTaskId: ctx.taskId,
302
- lineageArtifactIds,
303
- validationStatus: 'pending',
304
- contentJson: JSON.stringify(ctx.output),
305
- createdAt: now,
306
- updatedAt: now,
307
- });
308
- }
309
- catch (artifactErr) {
310
- this.emitTrainerEvent('trainer_artifact_write_failed', ctx.taskId, {
311
- runId: ctx.runId,
312
- errorMessage: artifactErr instanceof Error ? artifactErr.message : String(artifactErr),
313
- });
314
- return this.retryOrFail({
315
- taskId: ctx.taskId,
316
- task: ctx.task,
317
- errorCategory: 'artifact_commit_failed',
318
- failureReason: `PIArtifact write failed: ${artifactErr instanceof Error ? artifactErr.message : String(artifactErr)}`,
319
- });
320
- }
321
- const resultRef = `trainer://${ctx.runId}`;
322
- try {
323
- await this.stateManager.markTaskSucceeded(ctx.taskId, resultRef);
324
- }
325
- catch (stateErr) {
326
- this.emitTrainerEvent('trainer_mark_succeeded_failed', ctx.taskId, {
327
- taskId: ctx.taskId,
328
- runId: ctx.runId,
329
- errorMessage: stateErr instanceof Error ? stateErr.message : String(stateErr),
330
- });
331
- throw stateErr;
332
- }
333
- this.emitTrainerEvent('trainer_task_succeeded', ctx.taskId, {
334
- attemptCount: ctx.task.attemptCount,
335
- resultRef,
336
- decision: ctx.output.ruleCandidate.proposedDecision,
337
- confidence: ctx.output.ruleCandidate.confidence,
338
- });
339
- this.phase = RunnerPhase.Completed;
340
- return {
341
- status: 'succeeded',
342
- taskId: ctx.taskId,
343
- runId: ctx.runId,
344
- artifactId,
345
- resultRef,
346
- contextHash: ctx.contextHash,
347
- output: ctx.output,
348
- attemptCount: ctx.task.attemptCount,
349
- };
350
- }
351
- async handleRuntimeFailure(taskId, task, runStatus) {
352
- const errorCategory = this.mapRunStatusToErrorCategory(runStatus.status);
353
- this.emitTrainerEvent('trainer_run_failed', taskId, {
354
- runStatus: runStatus.status,
355
- errorCategory,
356
- });
357
- return this.retryOrFail({
358
- taskId,
359
- task,
360
- errorCategory,
361
- failureReason: `Runtime execution ended with status: ${runStatus.status}`,
362
- });
363
- }
364
- async handleValidationError(ctx) {
365
- const category = (ctx.errorCategory ?? 'output_invalid');
366
- this.emitTrainerEvent('trainer_output_invalid', ctx.taskId, {
367
- errorCount: ctx.errors.length,
368
- errorCategory: category,
369
- });
370
- return this.retryOrFail({
371
- taskId: ctx.taskId,
372
- task: ctx.task,
373
- errorCategory: category,
374
- failureReason: `Validation failed: ${ctx.errors.join('; ')}`,
375
- });
376
- }
377
- async handleLeaseOrPhaseError(taskId, error) {
378
- const classified = this.classifyError(error);
379
- if (classified.category === 'lease_conflict') {
380
- this.emitTrainerEvent('trainer_run_failed', taskId, {
381
- errorCategory: 'lease_conflict',
382
- errorMessage: classified.message,
383
- });
384
- return {
385
- status: 'failed',
386
- taskId,
387
- errorCategory: 'lease_conflict',
388
- failureReason: classified.message,
389
- attemptCount: 1,
390
- };
391
- }
392
- this.emitTrainerEvent('trainer_run_failed', taskId, {
393
- errorCategory: classified.category,
394
- errorMessage: classified.message,
395
- });
396
- const task = {
397
- taskId,
398
- taskKind: 'trainer',
399
- status: 'leased',
400
- createdAt: new Date().toISOString(),
401
- updatedAt: new Date().toISOString(),
402
- attemptCount: 1,
403
- maxAttempts: this.resolvedOptions.defaultMaxAttempts,
404
- };
405
- return this.retryOrFail({ taskId, task, errorCategory: classified.category, failureReason: classified.message });
406
- }
407
- async handlePostLeaseError(taskId, task, error) {
408
- const classified = this.classifyError(error);
409
- this.emitTrainerEvent('trainer_run_failed', taskId, {
410
- errorCategory: classified.category,
411
- errorMessage: classified.message,
412
- });
413
- return this.retryOrFail({ taskId, task, errorCategory: classified.category, failureReason: classified.message });
414
- }
415
- async retryOrFail(ctx) {
416
- if (this.isPermanentError(ctx.errorCategory)) {
417
- try {
418
- await this.stateManager.markTaskFailed(ctx.taskId, ctx.errorCategory);
419
- }
420
- catch (stateErr) {
421
- this.emitTrainerEvent('trainer_mark_failed_error', ctx.taskId, {
422
- errorCategory: 'storage_unavailable',
423
- attemptCount: ctx.task.attemptCount,
424
- errorMessage: stateErr instanceof Error ? stateErr.message : String(stateErr),
425
- });
426
- return {
427
- status: 'failed',
428
- taskId: ctx.taskId,
429
- errorCategory: 'storage_unavailable',
430
- failureReason: `State manager error: ${ctx.failureReason}`,
431
- attemptCount: ctx.task.attemptCount,
432
- };
433
- }
434
- this.emitTrainerEvent('trainer_task_failed', ctx.taskId, {
435
- errorCategory: ctx.errorCategory,
436
- attemptCount: ctx.task.attemptCount,
437
- failureReason: ctx.failureReason,
438
- });
439
- this.phase = RunnerPhase.Failed;
440
- return {
441
- status: 'failed',
442
- taskId: ctx.taskId,
443
- errorCategory: ctx.errorCategory,
444
- failureReason: ctx.failureReason,
445
- attemptCount: ctx.task.attemptCount,
446
- };
447
- }
448
- const shouldRetry = this.stateManager.getRetryPolicy().shouldRetry(ctx.task);
449
- if (shouldRetry) {
450
- try {
451
- await this.stateManager.markTaskRetryWait(ctx.taskId, ctx.errorCategory);
452
- }
453
- catch (stateErr) {
454
- this.emitTrainerEvent('trainer_mark_retry_error', ctx.taskId, {
455
- errorCategory: 'storage_unavailable',
456
- attemptCount: ctx.task.attemptCount,
457
- errorMessage: stateErr instanceof Error ? stateErr.message : String(stateErr),
458
- });
459
- return {
460
- status: 'failed',
461
- taskId: ctx.taskId,
462
- errorCategory: 'storage_unavailable',
463
- failureReason: `State manager error: ${ctx.failureReason}`,
464
- attemptCount: ctx.task.attemptCount,
465
- };
466
- }
467
- this.emitTrainerEvent('trainer_task_retried', ctx.taskId, {
468
- errorCategory: ctx.errorCategory,
469
- attemptCount: ctx.task.attemptCount,
470
- });
471
- this.phase = RunnerPhase.RetryWaiting;
472
- return {
473
- status: 'retried',
474
- taskId: ctx.taskId,
475
- errorCategory: ctx.errorCategory,
476
- failureReason: ctx.failureReason,
477
- attemptCount: ctx.task.attemptCount,
478
- };
479
- }
480
- try {
481
- await this.stateManager.markTaskFailed(ctx.taskId, 'max_attempts_exceeded');
482
- }
483
- catch (stateErr) {
484
- this.emitTrainerEvent('trainer_mark_failed_error', ctx.taskId, {
485
- errorCategory: 'storage_unavailable',
486
- attemptCount: ctx.task.attemptCount,
487
- errorMessage: stateErr instanceof Error ? stateErr.message : String(stateErr),
488
- });
489
- return {
490
- status: 'failed',
491
- taskId: ctx.taskId,
492
- errorCategory: 'storage_unavailable',
493
- failureReason: `State manager error: ${ctx.failureReason}`,
494
- attemptCount: ctx.task.attemptCount,
495
- };
496
- }
497
- this.emitTrainerEvent('trainer_task_failed', ctx.taskId, {
498
- errorCategory: 'max_attempts_exceeded',
499
- attemptCount: ctx.task.attemptCount,
500
- failureReason: `Max attempts exceeded: ${ctx.failureReason}`,
501
- });
502
- this.phase = RunnerPhase.Failed;
503
- return {
504
- status: 'failed',
505
- taskId: ctx.taskId,
506
- errorCategory: 'max_attempts_exceeded',
507
- failureReason: `Max attempts exceeded: ${ctx.failureReason}`,
508
- attemptCount: ctx.task.attemptCount,
509
- };
510
- }
511
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
512
- isPermanentError(category) {
513
- return TRAINER_PERMANENT_ERROR_CATEGORIES.has(category);
514
- }
515
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
516
- classifyError(error) {
517
- if (error instanceof PDRuntimeError) {
518
- return { category: error.category, message: error.message };
519
- }
520
- if (error instanceof Error) {
521
- return { category: 'execution_failed', message: error.message };
522
- }
523
- return { category: 'execution_failed', message: String(error) };
524
- }
525
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
526
- mapRunStatusToErrorCategory(status) {
527
- switch (status) {
528
- case 'failed': return 'execution_failed';
529
- case 'timed_out': return 'timeout';
530
- case 'cancelled': return 'cancelled';
531
- default: return 'execution_failed';
532
- }
533
- }
534
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
535
- sleep(ms) {
536
- return new Promise((resolve) => setTimeout(resolve, ms));
537
- }
538
- }
539
- export { DEFAULT_TRAINER_RUNNER_OPTIONS };
540
- //# sourceMappingURL=trainer-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trainer-runner.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/trainer-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAmCzE,MAAM,8BAA8B,GAA0E;IAC5G,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,OAAO;IAClB,kBAAkB,EAAE,CAAC;IACrB,OAAO,EAAE,SAAS;CACV,CAAC;AAEX,MAAM,UAAU,2BAA2B,CAAC,OAA6B;IACvE,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,8BAA8B,CAAC,cAAc;QACvF,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,8BAA8B,CAAC,SAAS;QACxE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,8BAA8B,CAAC,kBAAkB;QACnG,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,8BAA8B,CAAC,OAAO;KACnE,CAAC;AACJ,CAAC;AAgCD,MAAM,kCAAkC,GAAiC,IAAI,GAAG,CAAkB;IAChG,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB;CACjH,CAAC,CAAC;AAEH,MAAM,OAAO,aAAa;IAChB,KAAK,GAAgB,WAAW,CAAC,IAAI,CAAC;IAC7B,eAAe,CAA+B;IAC9C,YAAY,CAAsB;IAClC,cAAc,CAAmB;IACjC,YAAY,CAAoB;IAChC,SAAS,CAAmB;IAC5B,aAAa,CAAkB;IAEhD,YAAY,IAAuB,EAAE,OAA6B;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,gBAAgB,CACtB,SAAiB,EACjB,MAAc,EACd,OAAgC;QAEhC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC9B,SAAS,EAAE,SAAwC;YACnD,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACrC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;YACrC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;QAE9B,IAAI,UAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAChD,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;gBACjC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;aAC9C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,MAAM,EAAE;gBACvD,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,UAAU,CAAC,QAAQ;aAChC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,aAAa,EAAE,eAAe;gBAC9B,aAAa,EAAE,qCAAqC,UAAU,CAAC,QAAQ,GAAG;aAC3E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,EAAE;YACnD,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,UAAU,CAAC,YAAY;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,eAAe,CAAC;YACzC,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAElH,IAAI,CAAC,uBAAuB,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBACjE,OAAO,IAAI,CAAC,WAAW,CAAC;oBACtB,MAAM;oBACN,IAAI,EAAE,UAAU;oBAChB,aAAa,EAAE,eAAe;oBAC9B,aAAa,EAAE,+BAA+B,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,qDAAqD;iBACzJ,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAExE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAE9H,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,EAAE;gBACnD,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;aAC9C,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE5D,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAE/D,0EAA0E;YAC1E,2BAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEtD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC;YACpC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,+BAA+B,IAAI,SAAS,CAAC,CAAC;YACrH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC5B,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC;oBACtC,MAAM;oBACN,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,gBAAgB,CAAC,MAAM;oBAC/B,aAAa,EAAE,gBAAgB,CAAC,aAAa;iBAC9C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,MAAM,EAAE;gBACxD,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB;gBAC/C,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU;aAC5C,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC;gBAC5B,MAAM;gBACN,KAAK,EAAE,UAAU;gBACjB,MAAM;gBACN,IAAI,EAAE,UAAU;gBAChB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAc;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,cAAc,CAAC,eAAe,EAAE,QAAQ,MAAM,YAAY,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC;QACxG,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,kBAAkB;gBAAE,SAAS;YACtD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,gBAAgB,CAAC,kCAAkC,EAAE,MAAM,EAAE;oBAChE,SAAS,EAAE,KAAK;oBAChB,SAAS,EAAE,OAAO,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;gBAClC,IAAI,CAAC,aAAa;oBAAE,SAAS;gBAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,uCAAuC,EAAE,MAAM,EAAE;oBACrE,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,aAAa,CAAC,UAAU;iBACrC,CAAC,CAAC;gBACH,OAAO;oBACL,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC;oBACzD,uBAAuB,EAAE,aAAa,CAAC,WAAW;oBAClD,+BAA+B,EAAE,aAAa,CAAC,UAAU;iBAC1D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,sCAAsC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC;IACxG,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,IAAuB;QACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,iCAAiC,MAAM,0BAA0B,CAAC,CAAC;QAClH,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAK3B;QACC,IAAI,6BAA6B,GAAY,IAAI,CAAC;QAClD,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC7E,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B,GAAG,MAAM,CAAC,uBAAuB,CAAC;YACjE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,+BAA+B,EAAE,MAAM,CAAC,+BAA+B;YACvE,uBAAuB,EAAE,6BAA6B;SACvD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAkB;YAChC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;YACzE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAClC,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,mBAAmB;YACpC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS;SAC1C,CAAC;QAEF,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,SAAoB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QAC7D,MAAM,gBAAgB,GAAsB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAE9F,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAEhD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,SAAS,CAAC,KAAK,EAAE;gBAClE,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,YAAY,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;aACjF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,oBAAoB,IAAI,CAAC,eAAe,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC,CAAC;IACjI,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAa;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkC,CAAC;QAC1D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,2CAA2C,KAAK,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChF,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,uDAAuD,KAAK,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,MAAM,CAAC,OAA0B,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAmB;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,EAAE,GAAG,CAAC,MAAM,EAAE;gBAChE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,YAAY,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;aACjF,CAAC,CAAC;YACH,MAAM,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAClE,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAClC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACpC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBACtC,UAAU;gBACV,YAAY,EAAE,MAAM;gBACpB,YAAY,EAAE,GAAG,CAAC,MAAM;gBACxB,kBAAkB;gBAClB,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;gBACvC,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,GAAG,CAAC,MAAM,EAAE;gBACjE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,YAAY,EAAE,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;aACvF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,aAAa,EAAE,wBAAwB;gBACvC,aAAa,EAAE,4BAA4B,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;aACtH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,GAAG,CAAC,MAAM,EAAE;gBACjE,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,YAAY,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC9E,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE;YAC1D,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;YACnC,SAAS;YACT,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB;YACnD,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;QACnC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU;YACV,SAAS;YACT,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,MAAc,EACd,IAAgB,EAChB,SAAoB;QAEpB,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE;YAClD,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,aAAa;SACd,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,MAAM;YACN,IAAI;YACJ,aAAa;YACb,aAAa,EAAE,wCAAwC,SAAS,CAAC,MAAM,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,GAA2B;QAC7D,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAoB,CAAC;QAE5E,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE;YAC1D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;YAC7B,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,sBAAsB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,MAAc,EACd,KAAc;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,UAAU,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE;gBAClD,aAAa,EAAE,gBAAgB;gBAC/B,YAAY,EAAE,UAAU,CAAC,OAAO;aACjC,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM;gBACN,aAAa,EAAE,gBAAgB;gBAC/B,aAAa,EAAE,UAAU,CAAC,OAAO;gBACjC,YAAY,EAAE,CAAC;aAChB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE;YAClD,aAAa,EAAE,UAAU,CAAC,QAAQ;YAClC,YAAY,EAAE,UAAU,CAAC,OAAO;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAe;YACvB,MAAM;YACN,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;SACrD,CAAC;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IACnH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,MAAc,EACd,IAAgB,EAChB,KAAc;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE;YAClD,aAAa,EAAE,UAAU,CAAC,QAAQ;YAClC,YAAY,EAAE,UAAU,CAAC,OAAO;SACjC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IACnH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAmB;QAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE;oBAC7D,aAAa,EAAE,qBAAqB;oBACpC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;oBACnC,YAAY,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAC9E,CAAC,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,aAAa,EAAE,qBAAqB;oBACpC,aAAa,EAAE,wBAAwB,GAAG,CAAC,aAAa,EAAE;oBAC1D,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;iBACpC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE;gBACvD,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;gBACnC,aAAa,EAAE,GAAG,CAAC,aAAa;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE;oBAC5D,aAAa,EAAE,qBAAqB;oBACpC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;oBACnC,YAAY,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAC9E,CAAC,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,aAAa,EAAE,qBAAqB;oBACpC,aAAa,EAAE,wBAAwB,GAAG,CAAC,aAAa,EAAE;oBAC1D,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;iBACpC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE;gBACxD,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC;YACtC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE;gBAC7D,aAAa,EAAE,qBAAqB;gBACpC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;gBACnC,YAAY,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC9E,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,aAAa,EAAE,qBAAqB;gBACpC,aAAa,EAAE,wBAAwB,GAAG,CAAC,aAAa,EAAE;gBAC1D,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE;YACvD,aAAa,EAAE,uBAAuB;YACtC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;YACnC,aAAa,EAAE,0BAA0B,GAAG,CAAC,aAAa,EAAE;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,aAAa,EAAE,uBAAuB;YACtC,aAAa,EAAE,0BAA0B,GAAG,CAAC,aAAa,EAAE;YAC5D,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED,qEAAqE;IAC7D,gBAAgB,CAAC,QAAyB;QAChD,OAAO,kCAAkC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,qEAAqE;IAC7D,aAAa,CAAC,KAAc;QAClC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,qEAAqE;IAC7D,2BAA2B,CAAC,MAAc;QAChD,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,OAAO,kBAAkB,CAAC;YACzC,KAAK,WAAW,CAAC,CAAC,OAAO,SAAS,CAAC;YACnC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;YACrC,OAAO,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACrC,CAAC;IACH,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC"}