@qaick/runner 0.2.0-alpha.10
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.
- package/README.md +72 -0
- package/package-dist/fixtures/action-catalog-v1.qaick.json +8 -0
- package/package-dist/fixtures/checkout-nested.qaick.json +24 -0
- package/package-dist/fixtures/checkout-project.qaick.json +30 -0
- package/package-dist/fixtures/checkout-regression.qaick.json +16 -0
- package/package-dist/fixtures/invalid-binding.qaick.json +13 -0
- package/package-dist/fixtures/parallel-project.qaick.json +41 -0
- package/package-dist/fixtures/studio-flow-v7.qaick.json +23 -0
- package/package-dist/fixtures/studio-project-v7.qaick.json +47 -0
- package/package-dist/package.json +80 -0
- package/package-dist/src/build-info.d.ts +4 -0
- package/package-dist/src/build-info.d.ts.map +1 -0
- package/package-dist/src/build-info.js +5 -0
- package/package-dist/src/build-info.js.map +1 -0
- package/package-dist/src/demo/RunnerWalkthrough.d.ts +3 -0
- package/package-dist/src/demo/RunnerWalkthrough.d.ts.map +1 -0
- package/package-dist/src/demo/RunnerWalkthrough.js +23 -0
- package/package-dist/src/demo/RunnerWalkthrough.js.map +1 -0
- package/package-dist/src/demo/runner-walkthrough.css +31 -0
- package/package-dist/src/runner/RunnerModule.d.ts +8 -0
- package/package-dist/src/runner/RunnerModule.d.ts.map +1 -0
- package/package-dist/src/runner/RunnerModule.js +267 -0
- package/package-dist/src/runner/RunnerModule.js.map +1 -0
- package/package-dist/src/runner/catalog.d.ts +15 -0
- package/package-dist/src/runner/catalog.d.ts.map +1 -0
- package/package-dist/src/runner/catalog.js +16 -0
- package/package-dist/src/runner/catalog.js.map +1 -0
- package/package-dist/src/runner/fixture.d.ts +5 -0
- package/package-dist/src/runner/fixture.d.ts.map +1 -0
- package/package-dist/src/runner/fixture.js +28 -0
- package/package-dist/src/runner/fixture.js.map +1 -0
- package/package-dist/src/runner/history.d.ts +15 -0
- package/package-dist/src/runner/history.d.ts.map +1 -0
- package/package-dist/src/runner/history.js +7 -0
- package/package-dist/src/runner/history.js.map +1 -0
- package/package-dist/src/runner/package-load-error.d.ts +11 -0
- package/package-dist/src/runner/package-load-error.d.ts.map +1 -0
- package/package-dist/src/runner/package-load-error.js +10 -0
- package/package-dist/src/runner/package-load-error.js.map +1 -0
- package/package-dist/src/runner/package-loader.d.ts +4 -0
- package/package-dist/src/runner/package-loader.d.ts.map +1 -0
- package/package-dist/src/runner/package-loader.js +114 -0
- package/package-dist/src/runner/package-loader.js.map +1 -0
- package/package-dist/src/runner/redaction.d.ts +7 -0
- package/package-dist/src/runner/redaction.d.ts.map +1 -0
- package/package-dist/src/runner/redaction.js +38 -0
- package/package-dist/src/runner/redaction.js.map +1 -0
- package/package-dist/src/runner/result-export.d.ts +12 -0
- package/package-dist/src/runner/result-export.d.ts.map +1 -0
- package/package-dist/src/runner/result-export.js +9 -0
- package/package-dist/src/runner/result-export.js.map +1 -0
- package/package-dist/src/runner/runtime-client-adapter.d.ts +21 -0
- package/package-dist/src/runner/runtime-client-adapter.d.ts.map +1 -0
- package/package-dist/src/runner/runtime-client-adapter.js +40 -0
- package/package-dist/src/runner/runtime-client-adapter.js.map +1 -0
- package/package-dist/src/runner/runtime-client.d.ts +24 -0
- package/package-dist/src/runner/runtime-client.d.ts.map +1 -0
- package/package-dist/src/runner/runtime-client.js +5 -0
- package/package-dist/src/runner/runtime-client.js.map +1 -0
- package/package-dist/src/runner/studio-artifact-loader.d.ts +6 -0
- package/package-dist/src/runner/studio-artifact-loader.d.ts.map +1 -0
- package/package-dist/src/runner/studio-artifact-loader.js +331 -0
- package/package-dist/src/runner/studio-artifact-loader.js.map +1 -0
- package/package-dist/src/runner/types.d.ts +81 -0
- package/package-dist/src/runner/types.d.ts.map +1 -0
- package/package-dist/src/runner/types.js +5 -0
- package/package-dist/src/runner/types.js.map +1 -0
- package/package-dist/styles.css +262 -0
- package/package.json +80 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { checkoutNestedPackage, checkoutPackage, checkoutProjectPackage } from './fixture';
|
|
4
|
+
import { loadExecutionPackage, PackageLoadError } from './package-loader';
|
|
5
|
+
import { PackageCatalog } from './catalog';
|
|
6
|
+
import { RUNNER_CONTRACT_VERSION } from './types';
|
|
7
|
+
import { RunnerWalkthrough } from '../demo/RunnerWalkthrough';
|
|
8
|
+
import { RUNNER_BUILD_LABEL } from '../build-info';
|
|
9
|
+
import { collectSecretValues, redactExecutionEvent, redactExecutionResult, redactKeyValuePairs } from './redaction';
|
|
10
|
+
import { createResultExport } from './result-export';
|
|
11
|
+
import { persistRunHistory } from './history';
|
|
12
|
+
const HISTORY_KEY = 'qaick-runner.history.v1';
|
|
13
|
+
const HISTORY_RETENTION_KEY = 'qaick-runner.history-retention.v1';
|
|
14
|
+
const IMPORTED_PACKAGE_KEY = 'qaick-runner.imported-package.v1';
|
|
15
|
+
function readRunHistory() { try {
|
|
16
|
+
const stored = localStorage.getItem(HISTORY_KEY);
|
|
17
|
+
if (!stored)
|
|
18
|
+
return [];
|
|
19
|
+
return JSON.parse(stored).map(entry => ({ ...entry, artifactSchemaVersion: entry.artifactSchemaVersion === 6 && entry.packageId?.startsWith('studio-') ? 7 : entry.artifactSchemaVersion }));
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return [];
|
|
23
|
+
} }
|
|
24
|
+
function readHistoryRetention() { try {
|
|
25
|
+
const value = Number(localStorage.getItem(HISTORY_RETENTION_KEY));
|
|
26
|
+
return [10, 20, 50, 100].includes(value) ? value : 20;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return 20;
|
|
30
|
+
} }
|
|
31
|
+
function readImportedPackage() { try {
|
|
32
|
+
const stored = localStorage.getItem(IMPORTED_PACKAGE_KEY);
|
|
33
|
+
if (!stored)
|
|
34
|
+
return undefined;
|
|
35
|
+
const pack = loadExecutionPackage(stored);
|
|
36
|
+
return pack.artifactSchemaVersion ? pack : pack.packageId.startsWith('studio-') ? { ...pack, artifactSchemaVersion: 7 } : pack;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
} }
|
|
41
|
+
const packageCatalog = new PackageCatalog();
|
|
42
|
+
packageCatalog.addPackage(checkoutPackage);
|
|
43
|
+
packageCatalog.addPackage(checkoutProjectPackage);
|
|
44
|
+
packageCatalog.addPackage(checkoutNestedPackage);
|
|
45
|
+
const restoredImportedPackage = readImportedPackage();
|
|
46
|
+
if (restoredImportedPackage)
|
|
47
|
+
packageCatalog.addPackage(restoredImportedPackage);
|
|
48
|
+
export function RunnerModule({ client, showDemo = standaloneDemoRequested(), onExit }) {
|
|
49
|
+
return showDemo ? _jsx(RunnerWalkthrough, {}) : _jsx(RunnerApp, { client: client, onExit: onExit });
|
|
50
|
+
}
|
|
51
|
+
function standaloneDemoRequested() { return typeof window !== 'undefined' && new URLSearchParams(window.location.search).has('demo'); }
|
|
52
|
+
function RunnerApp({ client, onExit }) {
|
|
53
|
+
const [theme, setTheme] = useState('light');
|
|
54
|
+
const [showAbout, setShowAbout] = useState(false);
|
|
55
|
+
const [environment, setEnvironment] = useState('test');
|
|
56
|
+
const [executionPackage, setExecutionPackage] = useState(restoredImportedPackage ?? checkoutPackage);
|
|
57
|
+
const [inputs, setInputs] = useState({ customerId: 'CUST-001234', orderId: 'ORD-789456', amount: '125.50' });
|
|
58
|
+
const [runtimeValues, setRuntimeValues] = useState({});
|
|
59
|
+
const [timeoutMs, setTimeoutMs] = useState('none');
|
|
60
|
+
const [editingInputs, setEditingInputs] = useState(false);
|
|
61
|
+
const [runState, setRunState] = useState('ready');
|
|
62
|
+
const [controlState, setControlState] = useState('idle');
|
|
63
|
+
const [breakpoints, setBreakpoints] = useState(new Set());
|
|
64
|
+
const [contextMenu, setContextMenu] = useState();
|
|
65
|
+
const breakpointsRef = useRef(new Set());
|
|
66
|
+
const [stopAfterStepId, setStopAfterStepId] = useState();
|
|
67
|
+
const [stepStates, setStepStates] = useState(() => packageStepsFor(executionPackage).map(() => 'pending'));
|
|
68
|
+
const stepStateCache = useRef(Object.fromEntries(packageStepsFor(executionPackage).map(step => [step.id, 'pending'])));
|
|
69
|
+
const [loopProgress, setLoopProgress] = useState(() => loopProgressFor(packageStepsFor(executionPackage)));
|
|
70
|
+
const [loopStartedAt, setLoopStartedAt] = useState({});
|
|
71
|
+
const [clock, setClock] = useState(() => Date.now());
|
|
72
|
+
const [events, setEvents] = useState([]);
|
|
73
|
+
const [eventFilter, setEventFilter] = useState('all');
|
|
74
|
+
const [eventSearch, setEventSearch] = useState('');
|
|
75
|
+
const [runHistory, setRunHistory] = useState(readRunHistory);
|
|
76
|
+
const [historyRetention, setHistoryRetention] = useState(readHistoryRetention);
|
|
77
|
+
const [result, setResult] = useState();
|
|
78
|
+
const [viewingHistoryEntry, setViewingHistoryEntry] = useState();
|
|
79
|
+
const [selectedStep, setSelectedStep] = useState(0);
|
|
80
|
+
const [collapsedSteps, setCollapsedSteps] = useState(new Set());
|
|
81
|
+
const [requestId, setRequestId] = useState();
|
|
82
|
+
const [loadError, setLoadError] = useState();
|
|
83
|
+
const [loadIssues, setLoadIssues] = useState([]);
|
|
84
|
+
const [, setCatalogVersion] = useState(0);
|
|
85
|
+
const packageSteps = executionPackage.target.kind === 'project' ? executionPackage.flows?.flatMap(flow => flow.steps) ?? [] : executionPackage.steps;
|
|
86
|
+
const displaySteps = flattenDisplaySteps(packageSteps, 0, undefined, undefined, collapsedSteps);
|
|
87
|
+
const hasNestedSteps = flattenDisplaySteps(packageSteps).some(step => step.depth > 0);
|
|
88
|
+
const allResults = result?.children?.flatMap(child => flattenResultSteps(child.steps)) ?? flattenResultSteps(result?.steps ?? []);
|
|
89
|
+
const displayResults = displaySteps.map(step => [...allResults].reverse().find(resultStep => resultStep.id === step.id || step.branchRow && resultStep.invocationPath?.at(-1) === step.id.split('.').at(-1)));
|
|
90
|
+
const visibleEvents = events.filter(event => { const categoryMatches = eventFilter === 'all' || eventFilter === 'parallel' && event.parallel || eventFilter === 'steps' && event.stepId || eventFilter === 'lifecycle' && !event.stepId && !event.parallel || eventFilter === 'failures' && (event.state === 'failed' || event.type.includes('error')); const searchMatches = !eventSearch.trim() || `${event.type} ${event.state} ${event.message} ${event.stepName ?? ''}`.toLowerCase().includes(eventSearch.trim().toLowerCase()); return categoryMatches && searchMatches; });
|
|
91
|
+
async function run(dryRun = false) {
|
|
92
|
+
const id = crypto.randomUUID();
|
|
93
|
+
setViewingHistoryEntry(undefined);
|
|
94
|
+
setRequestId(id);
|
|
95
|
+
setResult(undefined);
|
|
96
|
+
setEvents([]);
|
|
97
|
+
stepStateCache.current = Object.fromEntries(flattenDisplaySteps(packageSteps).map(step => [step.id, 'pending']));
|
|
98
|
+
setStepStates(displaySteps.map(() => 'pending'));
|
|
99
|
+
setLoopProgress(loopProgressFor(executionPackage.target.kind === 'project' ? executionPackage.flows?.flatMap(flow => flow.steps) ?? [] : executionPackage.steps));
|
|
100
|
+
setLoopStartedAt({});
|
|
101
|
+
setClock(Date.now());
|
|
102
|
+
setRunState('preflighting');
|
|
103
|
+
setControlState('running');
|
|
104
|
+
await client.submit({ requestId: id, executionPackage, inputs, environment, runtimeValues, debugSession: { breakpoints: [...breakpointsRef.current], ...(stopAfterStepId ? { stopAfterStepId } : {}) }, options: { ...(timeoutMs === 'none' ? {} : { timeoutMs: Number(timeoutMs) }), dryRun } });
|
|
105
|
+
void (async () => {
|
|
106
|
+
for await (const event of client.events(id)) {
|
|
107
|
+
setEvents(previous => [...previous, redactExecutionEvent(event, collectSecretValues(inputs, runtimeValues))]);
|
|
108
|
+
if (event.state === 'running') {
|
|
109
|
+
setRunState('running');
|
|
110
|
+
setControlState('running');
|
|
111
|
+
}
|
|
112
|
+
if (event.control)
|
|
113
|
+
setControlState(await Promise.resolve(client.controlState(id)) ?? 'running');
|
|
114
|
+
if (event.iteration) {
|
|
115
|
+
setLoopProgress(previous => ({ ...previous, [event.iteration.loopId]: event.iteration }));
|
|
116
|
+
setLoopStartedAt(previous => ({ ...previous, [event.iteration.loopId]: previous[event.iteration.loopId] ?? Date.now() }));
|
|
117
|
+
setClock(Date.now());
|
|
118
|
+
}
|
|
119
|
+
if (event.stepId) {
|
|
120
|
+
const nextState = event.type === 'step_finished' ? 'finished' : event.state;
|
|
121
|
+
stepStateCache.current[event.stepId] = nextState;
|
|
122
|
+
setStepStates(previous => previous.map((state, index) => displaySteps[index]?.id === event.stepId ? nextState : state));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
})();
|
|
126
|
+
const secretValues = collectSecretValues(inputs, runtimeValues);
|
|
127
|
+
const executionResult = redactExecutionResult(await client.result(id), secretValues);
|
|
128
|
+
const finalSteps = flattenResultSteps(executionResult.children?.flatMap(child => child.steps) ?? executionResult.steps);
|
|
129
|
+
const finalControlState = await Promise.resolve(client.controlState(id));
|
|
130
|
+
const finalStateById = Object.fromEntries(finalSteps.map(step => [step.id, step.state]));
|
|
131
|
+
stepStateCache.current = { ...stepStateCache.current, ...finalStateById };
|
|
132
|
+
setResult(executionResult);
|
|
133
|
+
setStepStates(displaySteps.map(step => stepStateCache.current[step.id] ?? 'pending'));
|
|
134
|
+
setRunState(executionResult.state);
|
|
135
|
+
setControlState(finalControlState ?? (executionResult.state === 'cancelled' ? 'stopped' : executionResult.state));
|
|
136
|
+
const finishedAt = executionResult.finishedAt ?? new Date().toISOString();
|
|
137
|
+
const entry = { requestId: id, startedAt: executionResult.startedAt, finishedAt, target: executionPackage.target.name, packageId: executionPackage.packageId, artifactSchemaVersion: executionPackage.artifactSchemaVersion ?? executionPackage.schemaVersion, environment: executionResult.environment, state: executionResult.state, durationMs: Math.max(0, new Date(finishedAt).getTime() - new Date(executionResult.startedAt).getTime()), result: executionResult };
|
|
138
|
+
setRunHistory(previous => persistRunHistory(localStorage, HISTORY_KEY, [entry, ...previous.filter(item => item.requestId !== id)], historyRetention, secretValues));
|
|
139
|
+
}
|
|
140
|
+
async function stop() { if (requestId)
|
|
141
|
+
await client.cancel(requestId); }
|
|
142
|
+
async function pause() { if (requestId)
|
|
143
|
+
await client.pauseExecution(requestId); }
|
|
144
|
+
async function resume() { if (requestId)
|
|
145
|
+
await client.resumeExecution(requestId); }
|
|
146
|
+
async function stepExecution() { if (requestId)
|
|
147
|
+
await client.stepExecution(requestId); }
|
|
148
|
+
async function retrySelected() { if (requestId && displaySteps[selectedStep])
|
|
149
|
+
await client.retryAction(requestId, displaySteps[selectedStep].id); }
|
|
150
|
+
async function runFromSelected() { if (requestId && displaySteps[selectedStep]) {
|
|
151
|
+
const accepted = await client.runFromHere(requestId, displaySteps[selectedStep].id);
|
|
152
|
+
if (accepted)
|
|
153
|
+
setRequestId(accepted.requestId);
|
|
154
|
+
} }
|
|
155
|
+
function toggleBreakpoint(stepId) { setBreakpoints(previous => { const next = new Set(previous); if (next.has(stepId))
|
|
156
|
+
next.delete(stepId);
|
|
157
|
+
else
|
|
158
|
+
next.add(stepId); breakpointsRef.current = next; return next; }); }
|
|
159
|
+
function toggleStopAfter(stepId) { setStopAfterStepId(previous => previous === stepId ? undefined : stepId); }
|
|
160
|
+
function exportResult(value = result, packageId = executionPackage.packageId, schemaVersion = executionPackage.artifactSchemaVersion ?? executionPackage.schemaVersion) { if (!value)
|
|
161
|
+
return; const exportPayload = createResultExport(value, packageId, schemaVersion, collectSecretValues(inputs, runtimeValues)); const blob = new Blob([JSON.stringify(exportPayload, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = `${value.target.name.replace(/[^a-z0-9]+/gi, '-').toLowerCase()}-${value.requestId}.result.json`; link.click(); URL.revokeObjectURL(url); }
|
|
162
|
+
function reloadHistoryEntry(entry) { let loadedPackage = executionPackage; if (entry.packageId) {
|
|
163
|
+
try {
|
|
164
|
+
loadedPackage = packageCatalog.get(entry.packageId);
|
|
165
|
+
setExecutionPackage(loadedPackage);
|
|
166
|
+
}
|
|
167
|
+
catch { /* The result remains viewable when its package is no longer loaded. */ }
|
|
168
|
+
} const steps = loadedPackage.target.kind === 'project' ? loadedPackage.flows?.flatMap(flow => flow.steps) ?? [] : loadedPackage.steps; const storedSteps = flattenResultSteps(entry.result.children?.flatMap(child => child.steps) ?? entry.result.steps); const states = new Map(storedSteps.map(step => [step.id, step.state])); setRequestId(entry.requestId); setEnvironment(entry.environment); setResult(entry.result); setViewingHistoryEntry(entry.requestId); setEvents([]); setSelectedStep(0); setStepStates(flattenDisplaySteps(steps).map(step => states.get(step.id) ?? 'pending')); setRunState(entry.state); document.querySelector('.runner-workspace')?.scrollIntoView({ behavior: 'smooth', block: 'start' }); }
|
|
169
|
+
function clearHistory() { setRunHistory([]); localStorage.removeItem(HISTORY_KEY); }
|
|
170
|
+
function deleteHistoryEntry(requestIdToDelete) { setRunHistory(previous => { const next = previous.filter(item => item.requestId !== requestIdToDelete); localStorage.setItem(HISTORY_KEY, JSON.stringify(next)); return next; }); }
|
|
171
|
+
function changeHistoryRetention(value) { setHistoryRetention(value); localStorage.setItem(HISTORY_RETENTION_KEY, String(value)); setRunHistory(previous => { const next = previous.slice(0, value); localStorage.setItem(HISTORY_KEY, JSON.stringify(next)); return next; }); }
|
|
172
|
+
function rememberVisibleStates() { displaySteps.forEach((step, index) => { const state = stepStates[index]; if (state)
|
|
173
|
+
stepStateCache.current[step.id] = state; }); }
|
|
174
|
+
function toggleStep(stepId) { rememberVisibleStates(); const next = new Set(collapsedSteps); if (next.has(stepId))
|
|
175
|
+
next.delete(stepId);
|
|
176
|
+
else
|
|
177
|
+
next.add(stepId); const nextSteps = flattenDisplaySteps(packageSteps, 0, undefined, undefined, next); setCollapsedSteps(next); setStepStates(nextSteps.map(step => stepStateCache.current[step.id] ?? 'pending')); }
|
|
178
|
+
function setAllCollapsed(collapsed) { rememberVisibleStates(); const next = collapsed ? new Set(containerStepIds(packageSteps)) : new Set(); const nextSteps = flattenDisplaySteps(packageSteps, 0, undefined, undefined, next); setCollapsedSteps(next); setStepStates(nextSteps.map(step => stepStateCache.current[step.id] ?? 'pending')); }
|
|
179
|
+
async function loadPackage(file) {
|
|
180
|
+
if (!file)
|
|
181
|
+
return;
|
|
182
|
+
try {
|
|
183
|
+
const loaded = loadExecutionPackage(await file.text());
|
|
184
|
+
packageCatalog.addPackage(loaded);
|
|
185
|
+
localStorage.setItem(IMPORTED_PACKAGE_KEY, JSON.stringify(loaded));
|
|
186
|
+
setCatalogVersion(version => version + 1);
|
|
187
|
+
setExecutionPackage(loaded);
|
|
188
|
+
setBreakpoints(new Set());
|
|
189
|
+
breakpointsRef.current = new Set();
|
|
190
|
+
setStopAfterStepId(undefined);
|
|
191
|
+
setInputs(previous => ({ ...previous, ...Object.fromEntries((loaded.requiredInputs ?? []).map(name => [name, previous[name] ?? ''])) }));
|
|
192
|
+
setRuntimeValues(Object.fromEntries((loaded.runtimeRequirements ?? []).map(name => [name, ''])));
|
|
193
|
+
setCollapsedSteps(new Set());
|
|
194
|
+
stepStateCache.current = Object.fromEntries(flattenDisplaySteps(loaded.target.kind === 'project' ? loaded.flows?.flatMap(flow => flow.steps) ?? [] : loaded.steps).map(step => [step.id, 'pending']));
|
|
195
|
+
setStepStates((loaded.target.kind === 'project' ? loaded.flows?.flatMap(flow => flattenDisplaySteps(flow.steps)) ?? [] : flattenDisplaySteps(loaded.steps)).map(() => 'pending'));
|
|
196
|
+
setLoopProgress(loopProgressFor(loaded.target.kind === 'project' ? loaded.flows?.flatMap(flow => flow.steps) ?? [] : loaded.steps));
|
|
197
|
+
setLoopStartedAt({});
|
|
198
|
+
setSelectedStep(0);
|
|
199
|
+
setEvents([]);
|
|
200
|
+
setResult(undefined);
|
|
201
|
+
setRunState('ready');
|
|
202
|
+
setLoadError(undefined);
|
|
203
|
+
setLoadIssues([]);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
setLoadError(error instanceof PackageLoadError ? `${error.category}: ${error.message}` : 'Unable to load the selected package.');
|
|
207
|
+
setLoadIssues(error instanceof PackageLoadError ? error.issues : []);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const statusLabel = runState === 'ready' ? 'Ready' : runState[0].toUpperCase() + runState.slice(1);
|
|
211
|
+
useEffect(() => { document.documentElement.dataset.theme = theme; return () => { delete document.documentElement.dataset.theme; }; }, [theme]);
|
|
212
|
+
useEffect(() => { const close = () => setContextMenu(undefined); const keydown = (event) => { if (event.key === 'Escape')
|
|
213
|
+
close(); }; document.addEventListener('click', close); document.addEventListener('keydown', keydown); return () => { document.removeEventListener('click', close); document.removeEventListener('keydown', keydown); }; }, []);
|
|
214
|
+
useEffect(() => { if (runState !== 'preflighting' && runState !== 'running')
|
|
215
|
+
return undefined; const timer = window.setInterval(() => setClock(Date.now()), 250); return () => window.clearInterval(timer); }, [runState]);
|
|
216
|
+
useEffect(() => { const navigateIssue = (event) => { const target = event.target; const issue = target.closest('.validation-issue'); const stepId = issue?.dataset.stepId; const eventRow = target.closest('.event-row'); const index = stepId ? displaySteps.findIndex(step => step.id === stepId || step.id.endsWith(`.${stepId}`)) : eventRow ? displaySteps.findIndex(step => eventRow.textContent?.includes(step.name)) : -1; if (index >= 0)
|
|
217
|
+
setSelectedStep(index); }; document.addEventListener('click', navigateIssue); return () => document.removeEventListener('click', navigateIssue); }, [displaySteps]);
|
|
218
|
+
return _jsxs("div", { className: "runner-shell", children: [_jsxs("header", { className: "runner-header", children: [_jsxs("div", { className: "runner-brand", children: [_jsx("span", { className: "runner-brand-mark", children: "QAICK" }), _jsx("span", { className: "runner-brand-product", children: "Runner" }), _jsx("span", { className: "alpha-label", children: "Alpha 9" }), onExit && _jsx("button", { className: "about-button", onClick: onExit, children: "Studio" })] }), _jsx("span", { className: "header-spacer" }), _jsx("a", { className: "demo-entry", href: "?demo", children: "View demo" }), _jsx("button", { className: "about-button", onClick: () => setShowAbout(true), children: "About" }), _jsxs("label", { className: "theme-picker", children: ["Theme", _jsxs("select", { value: theme, onChange: event => setTheme(event.target.value), children: [_jsx("option", { value: "light", children: "Light" }), _jsx("option", { value: "dark", children: "Dark" })] })] })] }), _jsxs("main", { className: "runner-main", children: [_jsxs("nav", { className: "runner-nav", children: [_jsx("p", { className: "nav-label", children: "Workspace" }), _jsx(NavItem, { active: true, icon: "\u25C8", text: "Execution Package" }), _jsx(NavItem, { icon: "\u25A1", text: "Projects" }), _jsx(NavItem, { icon: "\u2318", text: "Flows" }), _jsx(NavItem, { icon: "\u21B6", text: "Run History" }), _jsxs("div", { className: "package-card", children: [_jsx("small", { children: "Loaded package" }), _jsxs("strong", { children: [executionPackage.packageId, ".qaick.json"] }), _jsxs("small", { children: ["Schema ", executionPackage.schemaVersion, " \u00B7 ", executionPackage.definitions.length, " definitions"] })] })] }), _jsxs("section", { className: "runner-workspace", children: [_jsx("div", { className: "eyebrow", children: "EXECUTION PACKAGE" }), _jsx("h1", { children: executionPackage.target.name }), _jsxs("p", { className: "description", children: ["Execute the selected QAick ", executionPackage.target.kind === 'project' ? 'Project' : 'Flow', " and capture structured evidence."] }), _jsxs("div", { className: "run-controls", children: [_jsxs("label", { children: ["Target", _jsx("select", { value: executionPackage.packageId, onChange: event => { const next = packageCatalog.get(event.target.value); setExecutionPackage(next); setBreakpoints(new Set()); breakpointsRef.current = new Set(); setStopAfterStepId(undefined); setLoadError(undefined); setLoadIssues([]); setRuntimeValues(Object.fromEntries((next.runtimeRequirements ?? []).map(name => [name, '']))); setStepStates((next.target.kind === 'project' ? next.flows?.flatMap(flow => flattenDisplaySteps(flow.steps)) ?? [] : flattenDisplaySteps(next.steps)).map(() => 'pending')); setLoopProgress(loopProgressFor(next.target.kind === 'project' ? next.flows?.flatMap(flow => flow.steps) ?? [] : next.steps)); setSelectedStep(0); setResult(undefined); setEvents([]); setRunState('ready'); }, children: packageCatalog.targets().map(item => _jsx("option", { value: item.packageId, children: item.target.name }, item.packageId)) })] }), _jsxs("label", { children: ["Environment", _jsxs("select", { value: environment, onChange: event => setEnvironment(event.target.value), children: [_jsx("option", { children: "test" }), _jsx("option", { children: "local" }), _jsx("option", { children: "staging" })] })] }), _jsxs("label", { children: ["Timeout", _jsxs("select", { value: timeoutMs, onChange: event => setTimeoutMs(event.target.value), children: [_jsx("option", { value: "none", children: "None" }), _jsx("option", { value: "1000", children: "1 second" }), _jsx("option", { value: "3000", children: "3 seconds" }), _jsx("option", { value: "10000", children: "10 seconds" })] })] }), _jsxs("label", { children: ["Run configuration", _jsxs("select", { defaultValue: "Default", children: [_jsx("option", { children: "Default" }), _jsx("option", { children: "Debug" })] })] }), _jsxs("label", { className: "file-button", children: ["Load package", _jsx("input", { type: "file", accept: "application/json,.json", onChange: event => void loadPackage(event.target.files?.[0]) })] }), _jsx("button", { className: "button", onClick: () => setEditingInputs(value => !value), children: editingInputs ? 'Done inputs' : 'Edit inputs' }), _jsx("button", { className: "button primary", onClick: () => void run(), disabled: runState === 'preflighting' || runState === 'running', children: "\u25B6\u00A0 Run" }), _jsx("button", { className: "button dry-run", onClick: () => void run(true), disabled: runState === "preflighting" || runState === "running", children: "\u25CE\u00A0 Pre-run validation" }), _jsx("button", { className: "button stop", onClick: () => void stop(), disabled: runState !== 'preflighting' && runState !== 'running', children: "\u25A0\u00A0 Stop" }), _jsx("button", { className: "button", onClick: () => void pause(), disabled: controlState !== 'running', children: "\u2161\u00A0 Pause" }), _jsx("button", { className: `button ${controlState === 'paused' ? 'resume-highlight' : ''}`, onClick: () => void resume(), disabled: controlState !== 'paused', children: "\u25B6\u00A0 Resume" }), _jsx("button", { className: "button", onClick: () => void stepExecution(), disabled: controlState !== 'paused', children: "\u21A6\u00A0 Step" }), breakpoints.size > 0 && _jsxs("span", { className: "debug-session-badge", children: [breakpoints.size, " breakpoint", breakpoints.size === 1 ? "" : "s", " armed"] })] }), viewingHistoryEntry && _jsxs("div", { className: "history-view-banner", children: ["Viewing stored results \u00B7 ", viewingHistoryEntry] }), loadError && _jsx("p", { className: "load-error", children: loadError }), loadIssues.length > 0 && _jsx(PreRunValidation, { issues: loadIssues, title: "Artifact validation" }), result?.issues !== undefined && _jsx(PreRunValidation, { issues: result.issues }), result?.warnings !== undefined && result.warnings.length > 0 && _jsx(PreRunValidation, { issues: result.warnings, title: "Browser execution warnings" }), editingInputs && _jsxs("section", { className: "inputs-panel panel", children: [_jsxs("div", { className: "panel-heading", children: [_jsx("h2", { children: "Invocation Inputs" }), _jsx("span", { className: "panel-spacer" }), _jsx("span", { className: "input-hint", children: "Values are sent with the next run" })] }), _jsxs("div", { className: "input-grid", children: [_jsx(InputField, { label: "customerId", value: String(inputs.customerId ?? ''), onChange: value => setInputs(previous => ({ ...previous, customerId: value })) }), _jsx(InputField, { label: "orderId", value: String(inputs.orderId ?? ''), onChange: value => setInputs(previous => ({ ...previous, orderId: value })) }), _jsx(InputField, { label: "amount", value: String(inputs.amount ?? ''), onChange: value => setInputs(previous => ({ ...previous, amount: value })) }), (executionPackage.requiredInputs ?? []).filter(name => !['customerId', 'orderId', 'amount'].includes(name)).map(name => _jsx(InputField, { label: name, value: String(inputs[name] ?? ''), onChange: value => setInputs(previous => ({ ...previous, [name]: value })) }, name)), (executionPackage.runtimeRequirements ?? []).map(name => _jsx(InputField, { label: `Runtime · ${name}`, value: runtimeValues[name] ?? '', onChange: value => setRuntimeValues(previous => ({ ...previous, [name]: value })) }, name))] })] }), _jsxs("section", { className: "panel", children: [_jsxs("div", { className: "panel-heading", children: [_jsx("h2", { children: "Live Execution" }), _jsx("span", { className: "panel-spacer" }), _jsxs("span", { className: "execution-menu-label", children: ["Right-click a row to manage its breakpoint \u00B7 Selected: ", displaySteps[selectedStep]?.name ?? 'None'] }), _jsxs("span", { className: runState === 'running' ? 'running' : runState === 'failed' ? 'stopped' : 'run-status', children: ["\u25CF ", statusLabel] })] }), hasNestedSteps && _jsxs("div", { className: "hierarchy-hint", children: [_jsx("strong", { children: "Nested execution" }), _jsx("span", { children: "Use \u2212 / + to collapse or expand nested Operations, Control Blocks, and loops." }), _jsx("button", { className: "hierarchy-action", onClick: () => setAllCollapsed(true), children: "Collapse all" }), _jsx("button", { className: "hierarchy-action", onClick: () => setAllCollapsed(false), children: "Expand all" })] }), _jsxs("table", { children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "#" }), _jsx("th", { children: "Step hierarchy" }), _jsx("th", { children: "Status" }), _jsx("th", { children: "Start time" }), _jsx("th", { children: "Duration" })] }) }), _jsx("tbody", { children: displaySteps.map((step, index) => { const progress = step.loopTotal ? loopProgress[step.id] ?? { current: 0, total: step.loopTotal } : undefined; const percent = progress ? Math.round(progress.current / progress.total * 100) : 0; const isLoop = Boolean(step.loopTotal); const displayState = displayResults[index]?.state ?? stepStates[index] ?? 'pending'; const isLoopContent = Boolean(step.loopId); const isLoopEnd = isLoopContent && displaySteps[index + 1]?.loopId !== step.loopId; const elapsed = step.loopId && loopStartedAt[step.loopId] ? formatElapsed(clock - loopStartedAt[step.loopId]) : undefined; return _jsxs("tr", { className: `${selectedStep === index ? 'selected ' : ''}${isLoop ? 'loop-row ' : ''}${isLoopContent ? 'loop-content ' : ''}${isLoopEnd ? 'loop-end ' : ''}${step.depth > 0 ? 'nested-row' : 'parent-row'}`, tabIndex: 0, onKeyDown: event => { if (event.key === "ArrowDown") {
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
setSelectedStep(Math.min(displaySteps.length - 1, index + 1));
|
|
221
|
+
} if (event.key === "ArrowUp") {
|
|
222
|
+
event.preventDefault();
|
|
223
|
+
setSelectedStep(Math.max(0, index - 1));
|
|
224
|
+
} }, onClick: () => setSelectedStep(index), onContextMenu: event => { event.preventDefault(); setSelectedStep(index); setContextMenu({ x: event.clientX, y: event.clientY, stepId: step.id }); }, children: [_jsx("td", { children: index + 1 }), _jsxs("td", { children: [_jsx("span", { className: `step-icon ${isLoop ? 'loop-icon' : displayState}`, children: isLoop ? '↻' : displayState === 'finished' ? '✓' : displayState === 'waiting' ? '◷' : displayState === 'skipped' ? '–' : '' }), _jsxs("span", { className: "hierarchy-name", style: { paddingLeft: `${step.depth * 18}px` }, children: [step.depth > 0 && _jsx("span", { className: "branch-marker", children: "\u2514" }), step.hasChildren && _jsx("button", { className: "collapse-toggle", "aria-label": `${collapsedSteps.has(step.id) ? 'Expand' : 'Collapse'} ${step.name}`, onClick: event => { event.stopPropagation(); toggleStep(step.id); }, children: collapsedSteps.has(step.id) ? '+' : '−' }), _jsx("span", { children: step.name }), breakpoints.has(step.id) && _jsx("small", { className: "breakpoint-marker", "aria-label": "Breakpoint armed", title: "Breakpoint armed", children: "STOP" }), isLoop && _jsx("small", { className: "kind-label loop-label", children: "LOOP" }), step.depth > 0 ? _jsx("small", { className: "kind-label nested-label", children: "NESTED STEP" }) : !isLoop && _jsx("small", { className: "kind-label", children: step.kind.toUpperCase() })] }), selectedStep === index && _jsx("small", { className: "selected-label", children: "SELECTED" })] }), _jsxs("td", { children: [progress && _jsxs("div", { className: "loop-progress", children: [_jsxs("strong", { children: ["REPEAT LOOP \u00B7 ITERATION ", progress.current, " OF ", progress.total] }), _jsx("span", { className: "loop-bar", children: _jsx("i", { style: { width: `${percent}%` } }) }), _jsx("small", { children: elapsed ? `Elapsed ${elapsed}` : 'Waiting to start' })] }), _jsx("span", { className: `status ${displayState}`, children: isLoop ? 'LOOP' : displayState.toUpperCase() })] }), _jsx("td", { children: displayResults[index] ? new Date(result?.finishedAt ?? '').toLocaleTimeString() : '—' }), _jsx("td", { children: displayResults[index] ? `${displayResults[index].durationMs} ms` : '—' })] }, `${step.id}-${index}`); }) })] }), contextMenu && _jsxs("div", { className: "runner-context-menu", style: { left: contextMenu.x, top: contextMenu.y }, onClick: event => event.stopPropagation(), onContextMenu: event => event.preventDefault(), children: [_jsx("strong", { children: "Breakpoint" }), breakpoints.has(contextMenu.stepId) ? _jsx("button", { onClick: () => { toggleBreakpoint(contextMenu.stepId); setContextMenu(undefined); }, children: "Remove breakpoint" }) : _jsx("button", { onClick: () => { toggleBreakpoint(contextMenu.stepId); setContextMenu(undefined); }, children: "Add breakpoint" })] })] }), _jsxs("section", { className: "panel event-panel", children: [_jsxs("div", { className: "panel-heading", children: [_jsx("h2", { children: "Event Log" }), _jsx("span", { className: "panel-spacer" }), _jsx("input", { className: "event-search", "aria-label": "Search event log", placeholder: "Search events", value: eventSearch, onChange: event => setEventSearch(event.target.value) }), _jsxs("select", { className: "event-filter", value: eventFilter, onChange: event => setEventFilter(event.target.value), children: [_jsx("option", { value: "all", children: "All events" }), _jsx("option", { value: "steps", children: "Step events" }), _jsx("option", { value: "parallel", children: "Parallel groups" }), _jsx("option", { value: "lifecycle", children: "Lifecycle" }), _jsx("option", { value: "failures", children: "Failures" })] })] }), _jsx("table", { children: _jsx("tbody", { children: visibleEvents.map(event => _jsxs("tr", { className: "event-row", children: [_jsx("td", { children: new Date(event.timestamp).toLocaleTimeString() }), _jsx("td", { children: event.state.toUpperCase() }), _jsx("td", { children: _jsx("code", { children: event.type.toUpperCase() }) }), _jsxs("td", { children: [event.message, event.parallel && _jsxs("small", { className: "parallel-event", children: [" \u00B7 Parallel ", event.parallel.completed, "/", event.parallel.total, " (", event.parallel.join, ")"] })] })] }, event.sequence)) }) }), events.length > 0 && visibleEvents.length === 0 && _jsx("p", { className: "empty-state", children: "No events match the current filter." })] }), _jsx(HistoryPanel, { entries: runHistory, onReload: reloadHistoryEntry, retention: historyRetention, onRetentionChange: changeHistoryRetention, onClear: clearHistory, onDelete: deleteHistoryEntry, onExport: exportResult })] }), _jsxs("aside", { className: "inspector", children: [_jsx("h2", { children: "Selected execution" }), _jsx("p", { className: "selected-detail-name", children: _jsx("strong", { children: displaySteps[selectedStep]?.name ?? 'No step selected' }) }), _jsxs("p", { className: "run-id", children: ["Run ID: ", requestId ?? 'No run started'] }), _jsx(InspectorSection, { title: "Artifact summary", children: _jsx(KeyValues, { values: ["Target", executionPackage.target.name, "Type", executionPackage.target.kind, "Package", executionPackage.packageId, "Artifact schema", String(executionPackage.schemaVersion), "Definitions", String(executionPackage.definitions.length), "Required inputs", (executionPackage.requiredInputs ?? []).join(", ") || "None", "Runtime values", (executionPackage.runtimeRequirements ?? []).join(", ") || "None"] }) }), _jsx(InspectorSection, { title: "Run outcome", children: _jsxs("div", { className: "notice", children: [_jsx("strong", { children: result?.terminalReason?.toUpperCase() ?? 'NOT STARTED' }), _jsx("br", {}), result ? `${result.environment} · ${result.state}` : 'Run the package to inspect its terminal outcome.'] }) }), _jsx(InspectorSection, { title: "Selected step inputs", children: _jsx(KeyValues, { values: Object.entries(displayResults[selectedStep]?.inputs ?? inputs).flatMap(([key, value]) => [key, String(value)]) }) }), _jsx(InspectorSection, { title: "Selected step outputs", children: _jsx(KeyValues, { values: displayResults[selectedStep]?.outputs ? Object.entries(displayResults[selectedStep]?.outputs ?? {}).flatMap(([key, value]) => [key, String(value)]) : ['—', 'Available after execution'] }) }), (result?.error || displayResults[selectedStep]?.error) && _jsx(InspectorSection, { title: "Error", children: _jsxs("div", { className: "error-notice", children: [_jsx("strong", { children: displayResults[selectedStep]?.error?.code ?? result?.error?.code }), _jsx("br", {}), displayResults[selectedStep]?.error?.message ?? result?.error?.message] }) }), result?.issues !== undefined && _jsx(InspectorSection, { title: "Pre-run validation", children: _jsx(PreRunValidation, { issues: result.issues }) }), _jsx(InspectorSection, { title: "Invocation path", children: _jsx("div", { className: "notice", children: displayResults[selectedStep]?.invocationPath?.join(" › ") ?? "No invocation path available." }) }), _jsx(InspectorSection, { title: "Iteration history", children: _jsx(IterationHistory, { result: displayResults[selectedStep] }) }), _jsx(InspectorSection, { title: "Execution timing", children: _jsxs("div", { className: "timing-details", children: [_jsxs("span", { children: ["Wall ", result?.executionTiming?.wallDurationMs ?? "—", " ms"] }), _jsxs("span", { children: ["Active ", result?.executionTiming?.activeDurationMs ?? "—", " ms"] }), _jsxs("span", { children: ["Paused ", result?.executionTiming?.pausedDurationMs ?? "—", " ms"] })] }) }), _jsx(InspectorSection, { title: "Selected step attempts", children: _jsx("div", { className: "attempt-history", children: displayResults[selectedStep]?.attempts?.map(attempt => _jsxs("div", { className: "iteration-entry", children: [_jsxs("strong", { children: ["Attempt ", attempt.attempt] }), _jsxs("span", { children: [attempt.kind.toUpperCase(), " \u00B7 ", attempt.state.toUpperCase(), " \u00B7 ", attempt.durationMs, " ms"] })] }, `${attempt.attempt}-${attempt.kind}`)) ?? _jsx("div", { className: "notice", children: "No retry attempts recorded." }) }) }), _jsxs(InspectorSection, { title: "Selected step", children: [_jsxs("div", { className: "notice", children: [_jsx("strong", { children: displaySteps[selectedStep]?.name ?? 'No step selected' }), _jsx("br", {}), displayResults[selectedStep] ? displayResults[selectedStep].error ? 'This step failed. See the error details above.' : `Completed in ${displayResults[selectedStep].durationMs} ms.` : 'Run the package to inspect execution details.', _jsxs("div", { className: "inspector-actions", children: [_jsx("button", { className: "button", onClick: () => void retrySelected(), disabled: !displayResults[selectedStep] || (!displayResults[selectedStep]?.error && runState !== "completed"), children: "Retry Action" }), _jsx("button", { className: `button ${stopAfterStepId === displaySteps[selectedStep]?.id ? "active" : ""}`, onClick: () => displaySteps[selectedStep] && toggleStopAfter(displaySteps[selectedStep].id), disabled: !displaySteps[selectedStep], children: "Stop After" }), _jsx("button", { className: "button", onClick: () => void runFromSelected(), disabled: !displayResults[selectedStep] || runState === "running", children: "Run From Here" })] })] }), _jsxs("div", { className: "selection-nav", children: [_jsx("button", { className: "button", disabled: selectedStep <= 0, onClick: () => setSelectedStep(index => Math.max(0, index - 1)), children: "\u2039 Previous" }), _jsx("span", { children: displaySteps.length ? `${selectedStep + 1} / ${displaySteps.length}` : '0 / 0' }), _jsx("button", { className: "button", disabled: selectedStep >= displaySteps.length - 1, onClick: () => setSelectedStep(index => Math.min(displaySteps.length - 1, index + 1)), children: "Next \u203A" })] })] })] })] }), showAbout && _jsx("div", { className: "about-backdrop", onClick: () => setShowAbout(false), children: _jsxs("section", { className: "about-dialog", role: "dialog", "aria-modal": "true", "aria-labelledby": "about-title", onClick: event => event.stopPropagation(), children: [_jsx("button", { className: "about-close", onClick: () => setShowAbout(false), "aria-label": "Close About", children: "\u00D7" }), _jsx("div", { className: "runner-logo", children: "\u25B6" }), _jsx("h2", { id: "about-title", children: "QAick Runner" }), _jsx("p", { children: "Standalone execution and evidence viewer for QAick packages." }), _jsxs("small", { children: ["Alpha 9 \u00B7 ", RUNNER_BUILD_LABEL, " \u00B7 QAick contract"] }), _jsx("footer", { children: "\u00A9 2006\u20132026 QAick. All rights reserved." })] }) })] });
|
|
225
|
+
}
|
|
226
|
+
function NavItem({ icon, text, active = false }) { const scrollTarget = text === 'Run History' ? '.history-panel' : text === 'Flows' ? '.runner-workspace table' : '.runner-workspace'; return _jsxs("a", { className: `nav-item ${active ? 'active' : ''}`, href: `#${text.toLowerCase().replaceAll(' ', '-')}`, onClick: event => { event.preventDefault(); document.querySelector(scrollTarget)?.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, children: [_jsx("span", { children: icon }), text] }); }
|
|
227
|
+
function HistoryPanel({ entries, retention, onRetentionChange, onClear, onDelete, onExport, onReload }) { return _jsxs("section", { className: "panel history-panel", children: [_jsxs("div", { className: "panel-heading", children: [_jsx("h2", { children: "Run History" }), _jsx("span", { className: "panel-spacer" }), _jsxs("label", { className: "history-retention", children: ["Keep", _jsxs("select", { "aria-label": "Run history retention", value: retention, onChange: event => onRetentionChange(Number(event.target.value)), children: [_jsx("option", { value: "10", children: "10 runs" }), _jsx("option", { value: "20", children: "20 runs" }), _jsx("option", { value: "50", children: "50 runs" }), _jsx("option", { value: "100", children: "100 runs" })] })] }), _jsx("button", { className: "button", onClick: onClear, disabled: !entries.length, children: "Clear history" })] }), entries.length ? _jsxs("table", { children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Target" }), _jsx("th", { children: "Started" }), _jsx("th", { children: "State" }), _jsx("th", { children: "Duration" }), _jsx("th", { children: "Result" })] }) }), _jsx("tbody", { children: entries.map(entry => _jsxs("tr", { children: [_jsxs("td", { children: [entry.target, _jsxs("small", { className: "history-meta", children: [entry.result.provenance ? 'Run From Here' : entry.result.steps.some(step => step.attempts?.some(attempt => attempt.kind === 'interactive')) ? 'Interactive retry' : 'Normal run', " \u00B7 ", entry.packageId ?? 'legacy result', " \u00B7 schema ", entry.artifactSchemaVersion ?? '—', _jsx("br", {}), "hash ", entry.result.artifactHash ?? 'legacy result'] })] }), _jsx("td", { children: new Date(entry.startedAt).toLocaleString() }), _jsx("td", { children: _jsx("span", { className: `status ${entry.state}`, children: entry.state.toUpperCase() }) }), _jsxs("td", { children: [entry.durationMs, " ms"] }), _jsxs("td", { children: [_jsx("button", { className: "button", onClick: () => onReload(entry), children: "View results" }), _jsx("button", { className: "button", onClick: () => onExport(entry.result, entry.packageId, entry.artifactSchemaVersion), children: "Export JSON" }), _jsx("button", { className: "button history-delete", onClick: () => onDelete(entry.requestId), children: "Delete" })] })] }, entry.requestId)) })] }) : _jsx("p", { className: "empty-state", children: "Completed and failed runs will be kept here in this browser." })] }); }
|
|
228
|
+
function InspectorSection({ title, children }) { return _jsxs("section", { className: "inspector-section", children: [_jsx("h3", { children: title }), children] }); }
|
|
229
|
+
function KeyValues({ values }) { return _jsx("div", { className: "key-values", children: redactKeyValuePairs(values).map((value, index) => _jsx("span", { children: value }, `${value}-${index}`)) }); }
|
|
230
|
+
function IterationHistory({ result }) { return _jsxs(_Fragment, { children: [_jsx("div", { className: "iteration-history", children: result?.children?.length ? result.children.map((iteration, index) => _jsxs("div", { className: "iteration-entry", children: [_jsx("strong", { children: iteration.name }), _jsxs("span", { children: [iteration.state.toUpperCase(), " \u00B7 ", iteration.durationMs, " ms"] }), _jsx("small", { children: iteration.children?.map(child => `${child.name}: ${Object.entries(child.outputs).map(([key, value]) => `${key}=${String(value)}`).join(', ') || 'no outputs'}`).join(' · ') || 'No nested output.' })] }, `${iteration.id}-${index}`)) : _jsx("div", { className: "notice", children: "No iteration history available." }) }), result?.terminalReason && _jsxs("div", { className: "timing-details", children: [_jsx("strong", { children: "Terminal reason" }), _jsx("span", { children: result.terminalReason })] }), _jsx(TransportTiming, { timing: result?.transportTiming }), _jsx(BranchExecutionPath, { result: result }), _jsx(ParallelGroupDetails, { result: result }), _jsx(ResultSummary, { result: result })] }); }
|
|
231
|
+
function TransportTiming({ timing }) { return _jsxs("div", { className: "timing-details", children: [_jsx("strong", { children: timing ? 'Request timing' : 'Contract version' }), timing ? _jsxs(_Fragment, { children: [_jsxs("span", { children: ["Started ", new Date(timing.requestStartedAt).toLocaleTimeString()] }), _jsxs("span", { children: ["Response ", new Date(timing.responseReceivedAt).toLocaleTimeString()] }), _jsxs("span", { children: ["Transport duration ", timing.durationMs, " ms"] })] }) : _jsxs("span", { children: ["@qaick/contract ", RUNNER_CONTRACT_VERSION] })] }); }
|
|
232
|
+
function BranchExecutionPath({ result }) { const branches = result?.children?.filter(child => child.kind === 'control-block' && child.children?.length); if (!branches?.length)
|
|
233
|
+
return null; return _jsxs("div", { className: "branch-path", children: [_jsx("strong", { children: "Branch execution path" }), branches.map(branch => _jsxs("div", { className: "branch-path-row", children: [_jsx("span", { className: `status ${branch.state}`, children: branch.state.toUpperCase() }), _jsx("span", { children: branch.name }), _jsx("small", { children: branch.terminalReason ?? 'no terminal reason' })] }, branch.id))] }); }
|
|
234
|
+
function ParallelGroupDetails({ result }) { const group = result?.terminalReason === 'parallel-joined' ? result : undefined; const branches = group?.children?.filter(child => child.kind === 'control-block'); if (!group || !branches?.length)
|
|
235
|
+
return null; return _jsxs("div", { className: "branch-path parallel-details", children: [_jsx("strong", { children: "Parallel group details" }), _jsxs("span", { children: ["Join reason: ", group.terminalReason] }), _jsxs("span", { children: ["Group duration: ", group.durationMs, " ms"] }), branches.map(branch => _jsxs("div", { className: "branch-path-row", children: [_jsx("span", { children: branch.name }), _jsxs("small", { children: [branch.state.toUpperCase(), " \u00B7 ", branch.durationMs, " ms"] })] }, branch.id)), _jsxs("small", { children: ["Merged outputs: ", Object.entries(group.outputs).map(([key, value]) => `${key}=${String(value)}`).join(', ') || 'none'] })] }); }
|
|
236
|
+
function ResultSummary({ result }) { if (!result)
|
|
237
|
+
return null; const steps = flattenResultSteps([result]); const counts = Object.fromEntries(['finished', 'failed', 'skipped', 'cancelled'].map(state => [state, steps.filter(step => step.state === state).length])); return _jsxs("div", { className: "result-summary", children: [_jsx("strong", { children: "Result summary" }), _jsxs("span", { children: [steps.length, " invocations \u00B7 ", result.durationMs, " ms"] }), _jsxs("small", { children: ["Finished ", counts.finished, " \u00B7 Failed ", counts.failed, " \u00B7 Skipped ", counts.skipped, " \u00B7 Cancelled ", counts.cancelled] })] }); }
|
|
238
|
+
function PreRunValidation({ issues, title = 'Pre-run validation' }) { if (!issues.length)
|
|
239
|
+
return _jsxs("section", { className: "validation-panel validation-pass", children: [_jsx("span", { className: "validation-icon", children: "\u2713" }), _jsxs("div", { children: [_jsxs("strong", { children: [title, " passed"] }), _jsx("small", { children: "No issues found. The next Run can invoke adapters." })] })] }); return _jsxs("section", { className: "validation-panel validation-failed", children: [_jsxs("div", { className: "validation-heading", children: [_jsx("span", { className: "validation-icon", children: "!" }), _jsxs("div", { children: [_jsxs("strong", { children: [title, " found ", issues.length, " issue", issues.length === 1 ? '' : 's'] }), _jsx("small", { children: "Resolve these items before running the package." })] })] }), _jsx("div", { className: "validation-issues", children: issues.map((issue, index) => _jsxs("div", { className: "validation-issue", "data-step-id": issue.stepId, children: [_jsx("span", { className: "issue-icon", children: "\u00D7" }), _jsxs("div", { children: [_jsxs("strong", { children: [diagnosticCategory(issue.code), " \u00B7 ", issue.code] }), _jsx("span", { children: issue.message }), issue.path && _jsxs("small", { children: ["Path: ", issue.path] }), issue.stepId && _jsxs("small", { children: ["Step: ", issue.stepId, " \u00B7 click to inspect"] })] })] }, `${issue.code}-${issue.stepId ?? issue.path ?? 'run'}-${index}`)) })] }); }
|
|
240
|
+
function diagnosticCategory(code) { if (code === 'CONTRACT_INVALID' || code === 'UNSUPPORTED_SCHEMA')
|
|
241
|
+
return 'contract-invalid'; if (code === 'INVALID_BINDING' || code === 'MISSING_INPUT_BINDING' || code === 'MISSING_STEP_BINDING' || code === 'MISSING_STEP_OUTPUT' || code === 'BINDING_FAILED')
|
|
242
|
+
return 'binding-unresolved'; if (code.startsWith('HTTP_') || code === 'ACTION_FAILED' || code === 'MISSING_ACTION_ADAPTER')
|
|
243
|
+
return 'runtime-action-failure'; return 'preflight-invalid'; }
|
|
244
|
+
function InputField({ label, value, onChange }) { return _jsxs("label", { className: "input-field", children: [label, _jsx("input", { value: value, onChange: event => onChange(event.target.value) })] }); }
|
|
245
|
+
function packageStepsFor(pack) { return pack.target.kind === 'project' ? pack.flows?.flatMap(flow => flow.steps) ?? [] : pack.steps; }
|
|
246
|
+
function flattenDisplaySteps(steps, depth = 0, loopId, parentId, collapsed = new Set()) {
|
|
247
|
+
return steps.flatMap(step => {
|
|
248
|
+
const isLoop = step.control?.type === 'repeat';
|
|
249
|
+
const currentLoopId = isLoop ? step.id : loopId;
|
|
250
|
+
const branchMode = (step.control?.type === 'branch' || step.control?.type === 'parallel') && step.control.branches?.length;
|
|
251
|
+
const row = { id: step.id, name: step.name, depth, kind: step.kind ?? (step.children ? 'operation' : 'action'), loopTotal: isLoop ? Math.max(1, Math.min(step.control?.iterations ?? 1, 32)) : undefined, loopId: currentLoopId, parentId, hasChildren: Boolean(step.children?.length || branchMode) };
|
|
252
|
+
if (branchMode && !collapsed.has(step.id)) {
|
|
253
|
+
const branchRows = step.control.branches.flatMap(branch => {
|
|
254
|
+
const branchId = `${step.id}.${branch.id}`;
|
|
255
|
+
const branchRow = { id: branchId, name: branch.name ?? branch.id, depth: depth + 1, kind: 'control-block', loopId: currentLoopId, parentId: step.id, hasChildren: branch.children.length > 0, branchRow: true };
|
|
256
|
+
return [branchRow, ...(collapsed.has(branchId) ? [] : flattenDisplaySteps(branch.children, depth + 2, currentLoopId, branchId, collapsed))];
|
|
257
|
+
});
|
|
258
|
+
return [row, ...branchRows];
|
|
259
|
+
}
|
|
260
|
+
return [row, ...(step.children && !collapsed.has(step.id) ? flattenDisplaySteps(step.children, depth + 1, currentLoopId, step.id, collapsed) : [])];
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function formatElapsed(milliseconds) { const seconds = Math.max(0, Math.floor(milliseconds / 1000)); return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, '0')}`; }
|
|
264
|
+
function containerStepIds(steps) { return steps.flatMap(step => { const branchIds = step.control?.branches?.flatMap(branch => [`${step.id}.${branch.id}`, ...containerStepIds(branch.children)]) ?? []; return step.children?.length || branchIds.length ? [step.id, ...branchIds, ...(step.children ? containerStepIds(step.children) : [])] : []; }); }
|
|
265
|
+
function loopProgressFor(steps) { return Object.fromEntries(steps.flatMap(step => [...(step.control?.type === 'repeat' ? [[step.id, { current: 0, total: Math.max(1, Math.min(step.control.iterations ?? 1, 32)) }]] : []), ...(step.children ? Object.entries(loopProgressFor(step.children)) : [])])); }
|
|
266
|
+
function flattenResultSteps(steps) { return steps.flatMap(step => [step, ...(step.children ? flattenResultSteps(step.children) : [])]); }
|
|
267
|
+
//# sourceMappingURL=RunnerModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunnerModule.js","sourceRoot":"","sources":["../../../src/runner/RunnerModule.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAC9C,MAAM,qBAAqB,GAAG,mCAAmC,CAAC;AAClE,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAChE,SAAS,cAAc,KAAwB,IAAI,CAAC;IAAC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAAC,OAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC;AAAC,CAAC,CAAC,CAAC;AAC5W,SAAS,oBAAoB,KAAa,IAAI,CAAC;IAAC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC;AAAC,CAAC,CAAC,CAAC;AAClM,SAAS,mBAAmB,KAAmC,IAAI,CAAC;IAAC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAAC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAAC,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,SAAS,CAAC;AAAC,CAAC,CAAC,CAAC;AAQzW,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC3C,cAAc,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAClD,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACjD,MAAM,uBAAuB,GAAG,mBAAmB,EAAE,CAAC;AACtD,IAAI,uBAAuB;IAAE,cAAc,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAEhF,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,uBAAuB,EAAE,EAAE,MAAM,EAAqB;IACtG,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAC,iBAAiB,KAAG,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;AAC1F,CAAC;AAED,SAAS,uBAAuB,KAAK,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvI,SAAS,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAwD;IACzF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,uBAAuB,IAAI,eAAe,CAAC,CAAC;IACrG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrI,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA8E,OAAO,CAAC,CAAC;IAC/H,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAsG,MAAM,CAAC,CAAC;IAC9J,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAA4C,CAAC;IAC3F,MAAM,cAAc,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAAU,CAAC;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,GAAG,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9H,MAAM,cAAc,GAAG,MAAM,CAAkC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAA4B,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3K,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqD,GAAG,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/J,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA0D,KAAK,CAAC,CAAC;IAC/G,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,cAAc,CAAC,CAAC;IAChF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAmB,CAAC;IACxD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,EAAU,CAAC;IACzE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IACrD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAqB,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrJ,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAChG,MAAM,cAAc,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAClI,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9M,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,eAAe,GAAG,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,eAAe,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnjB,KAAK,UAAU,GAAG,CAAC,MAAM,GAAG,KAAK;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAClC,YAAY,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAA4B,CAAC,CAAC,CAAC,CAAC;QAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAAC,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACrf,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAClS,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5C,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9G,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAAC,CAAC;gBACtF,IAAI,KAAK,CAAC,OAAO;oBAAE,eAAe,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;gBAChG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAU,EAAE,CAAC,CAAC,CAAC;oBAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;oBAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAAC,CAAC;gBACxQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAwB,CAAC;oBAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;oBAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAC,CAAC;YAClS,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACxH,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,cAAc,CAAC,OAAO,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAAC,eAAe,CAAC,iBAAiB,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9a,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAC3d,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;IACtK,CAAC;IAED,KAAK,UAAU,IAAI,KAAK,IAAI,SAAS;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,UAAU,KAAK,KAAK,IAAI,SAAS;QAAE,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjF,KAAK,UAAU,MAAM,KAAK,IAAI,SAAS;QAAE,MAAM,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnF,KAAK,UAAU,aAAa,KAAK,IAAI,SAAS;QAAE,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxF,KAAK,UAAU,aAAa,KAAK,IAAI,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC;QAAE,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnJ,KAAK,UAAU,eAAe,KAAK,IAAI,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QAAC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC;IAC1N,SAAS,gBAAgB,CAAC,MAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;QAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5N,SAAS,eAAe,CAAC,MAAc,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtH,SAAS,YAAY,CAAC,QAAyB,MAAO,EAAE,SAAS,GAAG,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,gBAAgB,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,SAAS,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnqB,SAAS,kBAAkB,CAAC,KAAsB,IAAI,IAAI,aAAa,GAAG,gBAAgB,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAAC,IAAI,CAAC;YAAC,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,uEAAuE,CAAC,CAAC;IAAC,CAAC,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7/B,SAAS,YAAY,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACpF,SAAS,kBAAkB,CAAC,iBAAyB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5O,SAAS,sBAAsB,CAAC,KAAa,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvR,SAAS,qBAAqB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK;QAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrK,SAAS,UAAU,CAAC,MAAc,IAAI,qBAAqB,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;QAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzW,SAAS,eAAe,CAAC,SAAkB,IAAI,qBAAqB,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChW,KAAK,UAAU,WAAW,CAAC,IAAsB;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACjJ,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAAC,cAAc,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAAC,cAAc,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,iBAAiB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAA4B,CAAC,CAAC,CAAC,CAAC;YAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAAC,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACziC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;YACjI,aAAa,CAAC,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnG,SAAS,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/I,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;QAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxW,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3N,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,EAAE,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAc,mBAAmB,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAc,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5oB,OAAO,eAAK,SAAS,EAAC,cAAc,aAClC,kBAAQ,SAAS,EAAC,eAAe,aAAC,eAAK,SAAS,EAAC,cAAc,aAAC,eAAM,SAAS,EAAC,mBAAmB,sBAAa,EAAA,eAAM,SAAS,EAAC,sBAAsB,uBAAc,EAAA,eAAM,SAAS,EAAC,aAAa,wBAAe,EAAC,MAAM,IAAI,iBAAQ,SAAS,EAAC,cAAc,EAAC,OAAO,EAAE,MAAM,uBAAiB,IAAO,EAAA,eAAM,SAAS,EAAC,eAAe,GAAG,EAAA,YAAG,SAAS,EAAC,YAAY,EAAC,IAAI,EAAC,OAAO,0BAAc,EAAA,iBAAQ,SAAS,EAAC,cAAc,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAgB,EAAA,iBAAO,SAAS,EAAC,cAAc,sBAAM,kBAAQ,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAyB,CAAC,aAAE,iBAAQ,KAAK,EAAC,OAAO,sBAAe,EAAA,iBAAQ,KAAK,EAAC,MAAM,qBAAc,IAAS,IAAQ,IAAS,EAC3qB,gBAAM,SAAS,EAAC,aAAa,aAC3B,eAAK,SAAS,EAAC,YAAY,aAAC,YAAG,SAAS,EAAC,WAAW,0BAAc,EAAA,KAAC,OAAO,IAAC,MAAM,QAAC,IAAI,EAAC,QAAG,EAAC,IAAI,EAAC,mBAAmB,GAAG,EAAA,KAAC,OAAO,IAAC,IAAI,EAAC,QAAG,EAAC,IAAI,EAAC,UAAU,GAAG,EAAA,KAAC,OAAO,IAAC,IAAI,EAAC,QAAG,EAAC,IAAI,EAAC,OAAO,GAAG,EAAA,KAAC,OAAO,IAAC,IAAI,EAAC,QAAG,EAAC,IAAI,EAAC,aAAa,GAAG,EAAA,eAAK,SAAS,EAAC,cAAc,aAAC,6CAA6B,EAAA,6BAAS,gBAAgB,CAAC,SAAS,mBAAqB,EAAA,uCAAe,gBAAgB,CAAC,aAAa,cAAK,gBAAgB,CAAC,WAAW,CAAC,MAAM,oBAAqB,IAAM,IAAM,EAC3c,mBAAS,SAAS,EAAC,kBAAkB,aAAC,cAAK,SAAS,EAAC,SAAS,kCAAwB,EAAA,uBAAK,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAM,EAAA,aAAG,SAAS,EAAC,aAAa,4CAA6B,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,yCAAsC,EACvR,eAAK,SAAS,EAAC,cAAc,aAAC,sCAAa,iBAAQ,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBAA6B,KAAK,EAAE,IAAI,CAAC,SAAS,YAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAxD,IAAI,CAAC,SAAS,CAAoD,CAAC,GAAU,IAAQ,EAAA,2CAAkB,kBAAQ,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAE,oCAAqB,EAAA,qCAAsB,EAAA,uCAAwB,IAAS,IAAQ,EAAA,uCAAc,kBAAQ,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAE,iBAAQ,KAAK,EAAC,MAAM,qBAAc,EAAA,iBAAQ,KAAK,EAAC,MAAM,yBAAkB,EAAA,iBAAQ,KAAK,EAAC,MAAM,0BAAmB,EAAA,iBAAQ,KAAK,EAAC,OAAO,2BAAoB,IAAS,IAAQ,EAAA,iDAAwB,kBAAQ,YAAY,EAAC,SAAS,aAAC,uCAAwB,EAAA,qCAAsB,IAAS,IAAQ,EAAA,iBAAO,SAAS,EAAC,aAAa,6BAAa,gBAAO,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,wBAAwB,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,IAAQ,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,GAAU,EAAA,iBAAQ,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,SAAS,iCAAsB,EAAA,iBAAQ,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,SAAS,gDAAqC,EAAA,iBAAQ,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,SAAS,kCAAuB,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,KAAK,SAAS,mCAAwB,EAAA,iBAAQ,SAAS,EAAE,UAAU,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,KAAK,QAAQ,oCAAyB,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,KAAK,QAAQ,kCAAuB,EAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,gBAAM,SAAS,EAAC,qBAAqB,aAAE,WAAW,CAAC,IAAI,iBAAa,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,IAAO,EAAC,mBAAmB,IAAI,eAAK,SAAS,EAAC,qBAAqB,+CAA2B,mBAAmB,IAAO,EAAE,SAAS,IAAI,YAAG,SAAS,EAAC,YAAY,YAAE,SAAS,GAAK,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,gBAAgB,IAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,qBAAqB,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,KAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAI,EAAE,MAAM,EAAE,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAC,4BAA4B,GAAG,EAC3uG,aAAa,IAAI,mBAAS,SAAS,EAAC,oBAAoB,aAAC,eAAK,SAAS,EAAC,eAAe,aAAC,6CAA0B,EAAA,eAAM,SAAS,EAAC,cAAc,GAAG,EAAA,eAAM,SAAS,EAAC,YAAY,kDAAyC,IAAM,EAAA,eAAK,SAAS,EAAC,YAAY,aAAC,KAAC,UAAU,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,GAAI,EAAA,KAAC,UAAU,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAAI,EAAA,KAAC,UAAU,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAI,EAAC,CAAC,gBAAgB,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAC,UAAU,IAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAhI,IAAI,CAAgI,CAAC,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAC,UAAU,IAAY,KAAK,EAAE,aAAa,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAArJ,IAAI,CAAqJ,CAAC,IAAO,IAAU,EACvrC,mBAAS,SAAS,EAAC,OAAO,aAAC,eAAK,SAAS,EAAC,eAAe,aAAC,0CAAuB,EAAA,eAAM,SAAS,EAAC,cAAc,GAAG,EAAA,gBAAM,SAAS,EAAC,sBAAsB,6EAAyD,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,MAAM,IAAQ,EAAA,gBAAM,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,wBAAK,WAAW,IAAQ,IAAM,EAAC,cAAc,IAAI,eAAK,SAAS,EAAC,gBAAgB,aAAC,gDAAiC,EAAA,gHAA0F,EAAA,iBAAQ,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,6BAAuB,EAAA,iBAAQ,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,2BAAqB,IAAM,EAAC,4BAAO,0BAAO,yBAAI,6BAAU,EAAA,0CAAuB,EAAA,kCAAe,EAAA,sCAAmB,EAAA,oCAAiB,IAAK,GAAQ,EAAA,0BAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,GAAG,aAAa,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,cAAgC,SAAS,EAAE,GAAG,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;wDAAC,KAAK,CAAC,cAAc,EAAE,CAAC;wDAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oDAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;wDAAC,KAAK,CAAC,cAAc,EAAE,CAAC;wDAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oDAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAE,uBAAK,KAAK,GAAG,CAAC,GAAM,EAAA,yBAAI,eAAM,SAAS,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,YAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAQ,EAAA,gBAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,aAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,eAAM,SAAS,EAAC,eAAe,uBAAS,EAAE,IAAI,CAAC,WAAW,IAAI,iBAAQ,SAAS,EAAC,iBAAiB,gBAAa,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAU,EAAC,yBAAO,IAAI,CAAC,IAAI,GAAQ,EAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,gBAAO,SAAS,EAAC,mBAAmB,gBAAY,kBAAkB,EAAC,KAAK,EAAC,kBAAkB,qBAAa,EAAE,MAAM,IAAI,gBAAO,SAAS,EAAC,uBAAuB,qBAAa,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAO,SAAS,EAAC,yBAAyB,4BAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,gBAAO,SAAS,EAAC,YAAY,YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAS,IAAQ,EAAC,YAAY,KAAK,KAAK,IAAI,gBAAO,SAAS,EAAC,gBAAgB,yBAAiB,IAAM,EAAA,yBAAK,QAAQ,IAAI,eAAK,SAAS,EAAC,eAAe,aAAC,8DAAiC,QAAQ,CAAC,OAAO,UAAM,QAAQ,CAAC,KAAK,IAAU,EAAA,eAAM,SAAS,EAAC,UAAU,YAAC,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAAI,GAAO,EAAA,0BAAQ,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC,kBAAkB,GAAS,IAAM,EAAC,eAAM,SAAS,EAAE,UAAU,YAAY,EAAE,YAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,GAAQ,IAAK,EAAA,uBAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAM,EAAA,uBAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,GAAG,GAAM,KAAnxE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAmwE,CAAC,CAAC,CAAC,CAAC,GAAS,IAAQ,EAAC,WAAW,IAAI,eAAK,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,aAAE,0CAA2B,EAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kCAA4B,CAAC,CAAC,CAAC,iBAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,+BAAyB,IAAO,IAAW,EACvxI,mBAAS,SAAS,EAAC,mBAAmB,aAAC,eAAK,SAAS,EAAC,eAAe,aAAC,qCAAkB,EAAA,eAAM,SAAS,EAAC,cAAc,GAAG,EAAA,gBAAO,SAAS,EAAC,cAAc,gBAAY,kBAAkB,EAAC,WAAW,EAAC,eAAe,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,EAAA,kBAAQ,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAA2B,CAAC,aAAE,iBAAQ,KAAK,EAAC,KAAK,2BAAoB,EAAA,iBAAQ,KAAK,EAAC,OAAO,4BAAqB,EAAA,iBAAQ,KAAK,EAAC,UAAU,gCAAyB,EAAA,iBAAQ,KAAK,EAAC,WAAW,0BAAmB,EAAA,iBAAQ,KAAK,EAAC,UAAU,yBAAkB,IAAS,IAAM,EAAA,0BAAO,0BAAQ,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,cAAI,SAAS,EAAC,WAAW,aAAsB,uBAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,GAAM,EAAA,uBAAK,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAM,EAAA,uBAAI,yBAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAQ,GAAK,EAAA,yBAAK,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,iBAAO,SAAS,EAAC,gBAAgB,kCAAc,KAAK,CAAC,QAAQ,CAAC,SAAS,OAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAU,IAAM,KAAxU,KAAK,CAAC,QAAQ,CAA+T,CAAC,GAAS,GAAQ,EAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,YAAG,SAAS,EAAC,aAAa,oDAAwC,IAAW,EAClrC,KAAC,YAAY,IAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,GAAI,IAChN,EACV,iBAAO,SAAS,EAAC,WAAW,aAAC,8CAA2B,EAAA,YAAG,SAAS,EAAC,sBAAsB,YAAC,2BAAS,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,kBAAkB,GAAU,GAAI,EAAA,aAAG,SAAS,EAAC,QAAQ,yBAAU,SAAS,IAAI,gBAAgB,IAAK,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,kBAAkB,YAAC,KAAC,SAAS,IAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAI,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,aAAa,YAAC,eAAK,SAAS,EAAC,QAAQ,aAAC,2BAAS,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,aAAa,GAAU,EAAA,cAAM,EAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,kDAAkD,IAAO,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,sBAAsB,YAAC,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAI,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,uBAAuB,YAAC,KAAC,SAAS,IAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,2BAA2B,CAAC,GAAI,GAAmB,EAAC,CAAC,MAAM,EAAE,KAAK,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI,KAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,YAAC,eAAK,SAAS,EAAC,cAAc,aAAC,2BAAS,cAAc,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,GAAU,EAAA,cAAM,EAAC,cAAc,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,IAAO,GAAmB,EAAE,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,KAAC,gBAAgB,IAAC,KAAK,EAAC,oBAAoB,YAAC,KAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAI,GAAmB,EAAC,KAAC,gBAAgB,IAAC,KAAK,EAAC,iBAAiB,YAAC,cAAK,SAAS,EAAC,QAAQ,YAAE,cAAc,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,+BAA+B,GAAO,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,mBAAmB,YAAC,KAAC,gBAAgB,IAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,GAAI,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,kBAAkB,YAAC,eAAK,SAAS,EAAC,gBAAgB,aAAC,oCAAY,MAAM,EAAE,eAAe,EAAE,cAAc,IAAI,GAAG,WAAW,EAAA,sCAAc,MAAM,EAAE,eAAe,EAAE,gBAAgB,IAAI,GAAG,WAAW,EAAA,sCAAc,MAAM,EAAE,eAAe,EAAE,gBAAgB,IAAI,GAAG,WAAW,IAAM,GAAmB,EAAA,KAAC,gBAAgB,IAAC,KAAK,EAAC,wBAAwB,YAAC,cAAK,SAAS,EAAC,iBAAiB,YAAE,cAAc,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAK,SAAS,EAAC,iBAAiB,aAA4C,yCAAiB,OAAO,CAAC,OAAO,IAAU,EAAA,2BAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,cAAK,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,cAAK,OAAO,CAAC,UAAU,WAAW,KAAnL,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAqJ,CAAC,IAAI,cAAK,SAAS,EAAC,QAAQ,4CAAkC,GAAO,GAAmB,EAAA,MAAC,gBAAgB,IAAC,KAAK,EAAC,eAAe,aAAC,eAAK,SAAS,EAAC,QAAQ,aAAC,2BAAS,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,kBAAkB,GAAU,EAAA,cAAM,EAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,gBAAgB,cAAc,CAAC,YAAY,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,+CAA+C,EAAC,eAAK,SAAS,EAAC,mBAAmB,aAAC,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,QAAQ,KAAK,WAAW,CAAC,6BAAuB,EAAA,iBAAQ,SAAS,EAAE,UAAU,eAAe,KAAK,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,2BAAqB,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,QAAQ,KAAK,SAAS,8BAAwB,IAAM,IAAM,EAAA,eAAK,SAAS,EAAC,eAAe,aAAC,iBAAQ,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,gCAAqB,EAAA,yBAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,GAAQ,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,4BAAiB,IAAM,IAAmB,IAAQ,IAC/3I,EAAC,SAAS,IAAI,cAAK,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,YAAE,mBAAS,SAAS,EAAC,cAAc,EAAC,IAAI,EAAC,QAAQ,gBAAY,MAAM,qBAAiB,aAAa,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,aAAE,iBAAQ,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAa,aAAa,uBAAW,EAAA,cAAK,SAAS,EAAC,aAAa,uBAAQ,EAAA,aAAI,EAAE,EAAC,aAAa,6BAAkB,EAAA,uFAAmE,EAAA,+CAAkB,kBAAkB,8BAA0B,EAAA,iFAAwD,IAAU,GAAM,IAC1lB,CAAC;AACT,CAAC;AACD,SAAS,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAoD,IAAI,MAAM,YAAY,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,aAAG,SAAS,EAAE,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,aAAG,yBAAO,IAAI,GAAQ,EAAE,IAAI,IAAK,CAAC,CAAC,CAAC;AACzgB,SAAS,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAkS,IAAI,OAAO,mBAAS,SAAS,EAAC,qBAAqB,aAAC,eAAK,SAAS,EAAC,eAAe,aAAC,uCAAoB,EAAA,eAAM,SAAS,EAAC,cAAc,GAAG,EAAA,iBAAO,SAAS,EAAC,mBAAmB,qBAAK,gCAAmB,uBAAuB,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAE,iBAAQ,KAAK,EAAC,IAAI,wBAAiB,EAAA,iBAAQ,KAAK,EAAC,IAAI,wBAAiB,EAAA,iBAAQ,KAAK,EAAC,IAAI,wBAAiB,EAAA,iBAAQ,KAAK,EAAC,KAAK,yBAAkB,IAAS,IAAQ,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,8BAAwB,IAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,4BAAO,0BAAO,yBAAI,kCAAe,EAAA,mCAAgB,EAAA,iCAAc,EAAA,oCAAiB,EAAA,kCAAe,IAAK,GAAQ,EAAA,0BAAQ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,yBAA0B,yBAAK,KAAK,CAAC,MAAM,EAAC,iBAAO,SAAS,EAAC,cAAc,aAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,cAAK,KAAK,CAAC,SAAS,IAAI,eAAe,qBAAY,KAAK,CAAC,qBAAqB,IAAI,GAAG,EAAC,cAAM,WAAM,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,eAAe,IAAS,IAAK,EAAA,uBAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,GAAM,EAAA,uBAAI,eAAM,SAAS,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,YAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAQ,GAAK,EAAA,yBAAK,KAAK,CAAC,UAAU,WAAS,EAAA,yBAAI,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,6BAAuB,EAAA,iBAAQ,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,4BAAsB,EAAA,iBAAQ,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,uBAAiB,IAAK,KAAx3B,KAAK,CAAC,SAAS,CAA82B,CAAC,GAAS,IAAQ,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,aAAa,6EAAiE,IAAW,CAAC,CAAC,CAAC;AACxlE,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgD,IAAI,OAAO,mBAAS,SAAS,EAAC,mBAAmB,aAAC,uBAAK,KAAK,GAAM,EAAC,QAAQ,IAAW,CAAC,CAAC,CAAC;AACpL,SAAS,SAAS,CAAC,EAAE,MAAM,EAAwB,IAAI,OAAO,cAAK,SAAS,EAAC,YAAY,YAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,yBAAiC,KAAK,IAA3B,GAAG,KAAK,IAAI,KAAK,EAAE,CAAgB,CAAC,GAAO,CAAC,CAAC,CAAC;AACtM,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAA2B,IAAI,OAAO,8BAAE,cAAK,SAAS,EAAC,mBAAmB,YAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,eAAK,SAAS,EAAC,iBAAiB,aAAkC,2BAAS,SAAS,CAAC,IAAI,GAAU,EAAA,2BAAO,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,cAAK,SAAS,CAAC,UAAU,WAAW,EAAA,0BAAQ,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,GAAS,KAAxV,GAAG,SAAS,CAAC,EAAE,IAAI,KAAK,EAAE,CAAoU,CAAC,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,QAAQ,gDAAsC,GAAO,EAAC,MAAM,EAAE,cAAc,IAAI,eAAK,SAAS,EAAC,gBAAgB,aAAC,+CAAgC,EAAA,yBAAO,MAAM,CAAC,cAAc,GAAQ,IAAM,EAAC,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,EAAE,eAAe,GAAI,EAAA,KAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM,GAAI,EAAA,KAAC,oBAAoB,IAAC,MAAM,EAAE,MAAM,GAAI,EAAA,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,IAAG,CAAC,CAAC,CAAC;AAC/6B,SAAS,eAAe,CAAC,EAAE,MAAM,EAA8C,IAAI,OAAO,eAAK,SAAS,EAAC,gBAAgB,aAAC,2BAAS,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,GAAU,EAAC,MAAM,CAAC,CAAC,CAAC,8BAAE,uCAAe,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,IAAQ,EAAA,wCAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,EAAE,IAAQ,EAAA,kDAA0B,MAAM,CAAC,UAAU,WAAW,IAAG,CAAC,CAAC,CAAC,+CAAuB,uBAAuB,IAAQ,IAAO,CAAC,CAAC,CAAC;AAChe,SAAS,mBAAmB,CAAC,EAAE,MAAM,EAA2B,IAAI,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;IAAE,OAAO,IAAI,CAAC,CAAC,OAAO,eAAK,SAAS,EAAC,aAAa,aAAC,qDAAsC,EAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,eAAK,SAAS,EAAC,iBAAiB,aAAiB,eAAM,SAAS,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,YAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,GAAQ,EAAA,yBAAO,MAAM,CAAC,IAAI,GAAQ,EAAA,0BAAQ,MAAM,CAAC,cAAc,IAAI,oBAAoB,GAAS,KAAjL,MAAM,CAAC,EAAE,CAA8K,CAAC,IAAO,CAAC,CAAC,CAAC;AAChiB,SAAS,oBAAoB,CAAC,EAAE,MAAM,EAA2B,IAAI,MAAM,KAAK,GAAG,MAAM,EAAE,cAAc,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,MAAM;IAAE,OAAO,IAAI,CAAC,CAAC,OAAO,eAAK,SAAS,EAAC,8BAA8B,aAAC,sDAAuC,EAAA,4CAAoB,KAAK,CAAC,cAAc,IAAQ,EAAA,+CAAuB,KAAK,CAAC,UAAU,WAAW,EAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,eAAK,SAAS,EAAC,iBAAiB,aAAiB,yBAAO,MAAM,CAAC,IAAI,GAAQ,EAAA,4BAAQ,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,cAAK,MAAM,CAAC,UAAU,WAAY,KAAzG,MAAM,CAAC,EAAE,CAAsG,CAAC,EAAC,gDAAwB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,IAAS,IAAM,CAAC,CAAC,CAAC;AACjxB,SAAS,aAAa,CAAC,EAAE,MAAM,EAA2B,IAAI,IAAI,CAAC,MAAM;IAAE,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,eAAK,SAAS,EAAC,gBAAgB,aAAC,8CAA+B,EAAA,2BAAO,KAAK,CAAC,MAAM,0BAAiB,MAAM,CAAC,UAAU,WAAW,EAAA,yCAAiB,MAAM,CAAC,QAAQ,qBAAY,MAAM,CAAC,MAAM,sBAAa,MAAM,CAAC,OAAO,wBAAe,MAAM,CAAC,SAAS,IAAS,IAAM,CAAC,CAAC,CAAC;AAC3iB,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,oBAAoB,EAAwG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;IAAE,OAAO,mBAAS,SAAS,EAAC,kCAAkC,aAAC,eAAM,SAAS,EAAC,iBAAiB,uBAAS,EAAA,0BAAK,6BAAS,KAAK,eAAiB,EAAA,iFAAiE,IAAM,IAAU,CAAC,CAAC,OAAO,mBAAS,SAAS,EAAC,oCAAoC,aAAC,eAAK,SAAS,EAAC,oBAAoB,aAAC,eAAM,SAAS,EAAC,iBAAiB,kBAAS,EAAA,0BAAK,6BAAS,KAAK,aAAS,MAAM,CAAC,MAAM,YAAQ,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAU,EAAA,8EAA8D,IAAM,IAAM,EAAA,cAAK,SAAS,EAAC,mBAAmB,YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,eAAK,SAAS,EAAC,kBAAkB,kBAAe,KAAK,CAAC,MAAM,aAAwE,eAAM,SAAS,EAAC,YAAY,uBAAS,EAAA,0BAAK,6BAAS,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,cAAK,KAAK,CAAC,IAAI,IAAU,EAAA,yBAAO,KAAK,CAAC,OAAO,GAAQ,EAAC,KAAK,CAAC,IAAI,IAAI,sCAAc,KAAK,CAAC,IAAI,IAAS,EAAE,KAAK,CAAC,MAAM,IAAI,sCAAc,KAAK,CAAC,MAAM,gCAA4B,IAAO,KAAtU,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,CAA6Q,CAAC,GAAO,IAAU,CAAC,CAAC,CAAC;AACnrC,SAAS,kBAAkB,CAAC,IAAY,IAAgG,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,oBAAoB;IAAE,OAAO,kBAAkB,CAAC,CAAC,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,gBAAgB;IAAE,OAAO,oBAAoB,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,wBAAwB;IAAE,OAAO,wBAAwB,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AACrkB,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAuE,IAAI,OAAO,iBAAO,SAAS,EAAC,aAAa,aAAE,KAAK,EAAC,gBAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IAAQ,CAAC,CAAC,CAAC;AACvP,SAAS,eAAe,CAAC,IAAsB,IAA+B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnL,SAAS,mBAAmB,CAAC,KAAgC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAe,EAAE,QAAiB,EAAE,YAAY,IAAI,GAAG,EAAU;IACzI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC3H,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;QACvS,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAQ,CAAC,QAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC1D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,eAAwB,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACzN,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9I,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtJ,CAAC,CAAC,CAAC;AACL,CAAC;AACD,SAAS,aAAa,CAAC,YAAoB,IAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrM,SAAS,gBAAgB,CAAC,KAAgC,IAAc,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9X,SAAS,eAAe,CAAC,KAAgC,IAAwD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClY,SAAS,kBAAkB,CAAC,KAAmB,IAAkB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExecutionPackage } from './types';
|
|
2
|
+
export interface CatalogTarget {
|
|
3
|
+
packageId: string;
|
|
4
|
+
target: ExecutionPackage['target'];
|
|
5
|
+
}
|
|
6
|
+
export declare class PackageCatalog {
|
|
7
|
+
private readonly packages;
|
|
8
|
+
add(serialized: string): ExecutionPackage;
|
|
9
|
+
addPackage(pack: ExecutionPackage): void;
|
|
10
|
+
list(): ExecutionPackage[];
|
|
11
|
+
targets(): CatalogTarget[];
|
|
12
|
+
get(packageId: string): ExecutionPackage;
|
|
13
|
+
remove(packageId: string): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/runner/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,aAAa;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAAE;AAEzF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAEhE,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAMzC,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IACxC,IAAI,IAAI,gBAAgB,EAAE;IAC1B,OAAO,IAAI,aAAa,EAAE;IAC1B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IACxC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CACnC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { loadExecutionPackage } from './package-loader';
|
|
2
|
+
export class PackageCatalog {
|
|
3
|
+
packages = new Map();
|
|
4
|
+
add(serialized) {
|
|
5
|
+
const loaded = loadExecutionPackage(serialized);
|
|
6
|
+
this.packages.set(loaded.packageId, loaded);
|
|
7
|
+
return loaded;
|
|
8
|
+
}
|
|
9
|
+
addPackage(pack) { this.packages.set(pack.packageId, pack); }
|
|
10
|
+
list() { return [...this.packages.values()]; }
|
|
11
|
+
targets() { return this.list().map(pack => ({ packageId: pack.packageId, target: pack.target })); }
|
|
12
|
+
get(packageId) { const pack = this.packages.get(packageId); if (!pack)
|
|
13
|
+
throw new Error(`Unknown package: ${packageId}`); return pack; }
|
|
14
|
+
remove(packageId) { return this.packages.delete(packageId); }
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/runner/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAKxD,MAAM,OAAO,cAAc;IACR,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEhE,GAAG,CAAC,UAAkB;QACpB,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,IAAsB,IAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,KAAyB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,KAAsB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpH,GAAG,CAAC,SAAiB,IAAsB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjK,MAAM,CAAC,SAAiB,IAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAC/E"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ExecutionPackage } from './types';
|
|
2
|
+
export declare const checkoutPackage: ExecutionPackage;
|
|
3
|
+
export declare const checkoutProjectPackage: ExecutionPackage;
|
|
4
|
+
export declare const checkoutNestedPackage: ExecutionPackage;
|
|
5
|
+
//# sourceMappingURL=fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/runner/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,eAAO,MAAM,eAAe,EAAE,gBAc7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,gBASpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAyC,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import nestedSerializedFixture from '../../fixtures/checkout-nested.qaick.json';
|
|
2
|
+
export const checkoutPackage = {
|
|
3
|
+
schemaVersion: 6, packageId: 'checkout-regression',
|
|
4
|
+
target: { kind: 'flow', id: 'customer-checkout', name: 'Customer Checkout' },
|
|
5
|
+
definitions: [
|
|
6
|
+
{ id: 'customer-checkout', kind: 'flow', name: 'Customer Checkout' },
|
|
7
|
+
{ id: 'in-memory.approve-payment', kind: 'action', name: 'Create Payment' },
|
|
8
|
+
{ id: 'in-memory.verify-payment', kind: 'action', name: 'Verify Payment' },
|
|
9
|
+
{ id: 'in-memory.check-settlement', kind: 'action', name: 'Check Settlement' },
|
|
10
|
+
],
|
|
11
|
+
steps: [
|
|
12
|
+
{ id: 'create-payment', name: 'Create Payment', action: 'in-memory.approve-payment', bindings: { customerId: '$inputs.customerId', orderId: '$inputs.orderId' }, output: { paymentId: 'PAY-932112' } },
|
|
13
|
+
{ id: 'verify-payment', name: 'Verify Payment', action: 'in-memory.verify-payment', bindings: { paymentId: '$steps.create-payment.paymentId' }, output: { status: 'APPROVED' } },
|
|
14
|
+
{ id: 'check-settlement', name: 'Check Settlement', action: 'in-memory.check-settlement', bindings: { paymentStatus: '$steps.verify-payment.status' }, output: { settlement: 'PENDING' } },
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export const checkoutProjectPackage = {
|
|
18
|
+
...checkoutPackage,
|
|
19
|
+
packageId: 'checkout-project',
|
|
20
|
+
target: { kind: 'project', id: 'checkout-project', name: 'Checkout Regression Project' },
|
|
21
|
+
steps: [],
|
|
22
|
+
flows: [
|
|
23
|
+
{ id: 'prepare-payment', name: 'Prepare Payment', steps: [checkoutPackage.steps[0]] },
|
|
24
|
+
{ id: 'verify-settlement', name: 'Verify Settlement', steps: checkoutPackage.steps.slice(1) },
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
export const checkoutNestedPackage = nestedSerializedFixture;
|
|
28
|
+
//# sourceMappingURL=fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/runner/fixture.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,MAAM,2CAA2C,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,qBAAqB;IAClD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC5E,WAAW,EAAE;QACX,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACpE,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;QAC3E,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;QAC1E,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE;KAC/E;IACD,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;QACtM,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,iCAAiC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAChL,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,4BAA4B,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,8BAA8B,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;KAC3L;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,GAAG,eAAe;IAClB,SAAS,EAAE,kBAAkB;IAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACxF,KAAK,EAAE,EAAE;IACT,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACrF,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KAC9F;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAsD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExecutionResult } from './types';
|
|
2
|
+
export interface RunnerHistoryEntry {
|
|
3
|
+
requestId: string;
|
|
4
|
+
startedAt: string;
|
|
5
|
+
finishedAt: string;
|
|
6
|
+
target: string;
|
|
7
|
+
packageId?: string;
|
|
8
|
+
artifactSchemaVersion?: number;
|
|
9
|
+
environment: string;
|
|
10
|
+
state: string;
|
|
11
|
+
durationMs: number;
|
|
12
|
+
result: ExecutionResult;
|
|
13
|
+
}
|
|
14
|
+
export declare function persistRunHistory(storage: Pick<Storage, 'setItem'>, key: string, entries: RunnerHistoryEntry[], retention: number, secretValues?: string[]): RunnerHistoryEntry[];
|
|
15
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/runner/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,kBAAkB,EAAE,CAIrL"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { redactExecutionResult } from './redaction';
|
|
2
|
+
export function persistRunHistory(storage, key, entries, retention, secretValues = []) {
|
|
3
|
+
const next = entries.slice(0, retention).map(entry => ({ ...entry, result: redactExecutionResult(entry.result, secretValues) }));
|
|
4
|
+
storage.setItem(key, JSON.stringify(next));
|
|
5
|
+
return next;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/runner/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAepD,MAAM,UAAU,iBAAiB,CAAC,OAAiC,EAAE,GAAW,EAAE,OAA6B,EAAE,SAAiB,EAAE,eAAyB,EAAE;IAC7J,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACjI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface PackageLoadIssue {
|
|
2
|
+
path: string;
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class PackageLoadError extends Error {
|
|
7
|
+
readonly category: "contract-invalid";
|
|
8
|
+
readonly issues: PackageLoadIssue[];
|
|
9
|
+
constructor(message: string, issues?: PackageLoadIssue[]);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=package-load-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-load-error.d.ts","sourceRoot":"","sources":["../../../src/runner/package-load-error.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAElF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,QAAQ,EAAG,kBAAkB,CAAU;IAChD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAgB,EAAO;CAK7D"}
|