orizu 0.5.22 → 0.5.24
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 +57 -21
- package/dist/child-output-tee.d.ts +48 -0
- package/dist/child-output-tee.d.ts.map +1 -0
- package/dist/child-output-tee.js +512 -0
- package/dist/cleanup.d.ts +6 -0
- package/dist/cleanup.d.ts.map +1 -0
- package/dist/cleanup.js +27 -0
- package/dist/cli-auth-browser-page.d.ts +2 -0
- package/dist/cli-auth-browser-page.d.ts.map +1 -0
- package/dist/cli-auth-browser-page.js +107 -0
- package/dist/github-setup.js +8 -8
- package/dist/headless-login.d.ts +17 -0
- package/dist/headless-login.d.ts.map +1 -0
- package/dist/headless-login.js +105 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +32 -24
- package/dist/hosted-boot.js +3 -3
- package/dist/hosted-bootstrap.js +2 -2
- package/dist/hosted-commands.d.ts +15 -0
- package/dist/hosted-commands.d.ts.map +1 -0
- package/dist/hosted-commands.js +21 -0
- package/dist/hosted-environment.d.ts +3 -0
- package/dist/hosted-environment.d.ts.map +1 -0
- package/dist/hosted-environment.js +2 -0
- package/dist/hosted-gepa-cli.d.ts +14 -0
- package/dist/hosted-gepa-cli.d.ts.map +1 -0
- package/dist/hosted-gepa-cli.js +197 -0
- package/dist/hosted-gepa-numeric-values.d.ts +3 -0
- package/dist/hosted-gepa-numeric-values.d.ts.map +1 -0
- package/dist/hosted-gepa-numeric-values.js +49 -0
- package/dist/hosted-loop.d.ts +1 -1
- package/dist/hosted-loop.d.ts.map +1 -1
- package/dist/hosted-loop.js +2 -1
- package/dist/hosted-optimization-cli.d.ts +7 -0
- package/dist/hosted-optimization-cli.d.ts.map +1 -0
- package/dist/hosted-optimization-cli.js +218 -0
- package/dist/hosted-optimization-refusals.d.ts +88 -0
- package/dist/hosted-optimization-refusals.d.ts.map +1 -0
- package/dist/hosted-optimization-refusals.js +86 -0
- package/dist/hosted-optimization.d.ts +6 -0
- package/dist/hosted-optimization.d.ts.map +1 -0
- package/dist/hosted-optimization.js +436 -0
- package/dist/hosted-provider-settings.d.ts +6 -0
- package/dist/hosted-provider-settings.d.ts.map +1 -0
- package/dist/hosted-provider-settings.js +78 -0
- package/dist/hosted-session-cli.d.ts.map +1 -1
- package/dist/hosted-session-cli.js +11 -1
- package/dist/hosted-skill-staging.d.ts +9 -9
- package/dist/hosted-skill-staging.d.ts.map +1 -1
- package/dist/hosted-skill-staging.js +13 -10
- package/dist/http.d.ts +1 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +7 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +387 -384
- package/dist/optimizations-promote-cli.d.ts +3 -0
- package/dist/optimizations-promote-cli.d.ts.map +1 -1
- package/dist/optimizations-promote-cli.js +75 -7
- package/dist/report-comments-cli.d.ts +1 -0
- package/dist/report-comments-cli.d.ts.map +1 -1
- package/dist/report-comments-cli.js +70 -4
- package/dist/runner-dir-verify.d.ts +5 -0
- package/dist/runner-dir-verify.d.ts.map +1 -1
- package/dist/runner-dir-verify.js +44 -15
- package/dist/runner-version-materialization.d.ts +6 -0
- package/dist/runner-version-materialization.d.ts.map +1 -0
- package/dist/runner-version-materialization.js +64 -0
- package/dist/setup-onboarding.d.ts +16 -0
- package/dist/setup-onboarding.d.ts.map +1 -0
- package/dist/setup-onboarding.js +59 -0
- package/dist/skill-installer.d.ts +3 -3
- package/dist/skill-installer.d.ts.map +1 -1
- package/dist/skill-installer.js +39 -3
- package/dist/skilled-proposer-bake-report.d.ts +2 -0
- package/dist/skilled-proposer-bake-report.d.ts.map +1 -0
- package/dist/skilled-proposer-bake-report.js +1 -0
- package/dist/skilled-proposer-launch.d.ts +27 -1
- package/dist/skilled-proposer-launch.d.ts.map +1 -1
- package/dist/skilled-proposer-launch.js +66 -11
- package/dist/skilled-proposer-wire.d.ts +2 -0
- package/dist/skilled-proposer-wire.d.ts.map +1 -0
- package/dist/skilled-proposer-wire.js +25 -0
- package/dist/workspace.d.ts +14 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +63 -4
- package/package.json +1 -1
- package/scripts/vendor-gepa-python.mjs +81 -12
- package/scripts/vendor-orizu-skill.mjs +3 -3
- package/src/child-output-tee.ts +587 -0
- package/src/cleanup.ts +37 -0
- package/src/cli-auth-browser-page.ts +108 -0
- package/src/github-setup.ts +8 -8
- package/src/headless-login.ts +178 -0
- package/src/help.ts +32 -24
- package/src/hosted-boot.ts +3 -3
- package/src/hosted-bootstrap.ts +2 -2
- package/src/hosted-commands.ts +20 -0
- package/src/hosted-environment.ts +2 -0
- package/src/hosted-gepa-cli.ts +215 -0
- package/src/hosted-gepa-numeric-values.ts +60 -0
- package/src/hosted-loop.ts +2 -1
- package/src/hosted-optimization-cli.ts +215 -0
- package/src/hosted-optimization-refusals.ts +101 -0
- package/src/hosted-optimization.ts +483 -0
- package/src/hosted-provider-settings.ts +81 -0
- package/src/hosted-session-cli.ts +9 -1
- package/src/hosted-skill-staging.ts +17 -14
- package/src/http.ts +8 -0
- package/src/index.ts +370 -301
- package/src/optimizations-promote-cli.ts +85 -7
- package/src/report-comments-cli.ts +83 -5
- package/src/runner-dir-verify.ts +85 -15
- package/src/runner-version-materialization.ts +56 -0
- package/src/setup-onboarding.ts +64 -0
- package/src/skill-installer.ts +39 -3
- package/src/skilled-proposer-bake-report.ts +1 -0
- package/src/skilled-proposer-launch.ts +74 -12
- package/src/skilled-proposer-venv-manager.mjs +44 -27
- package/src/skilled-proposer-wire.ts +22 -0
- package/src/workspace.ts +65 -4
- package/vendor/orizu-gepa/src/orizu_gepa_connector/runtime.py +63 -23
- package/vendor/orizu-gepa-python/src/orizu_gepa/cli.py +1 -0
- package/vendor/orizu-gepa-python/src/orizu_gepa/client.py +91 -13
- package/vendor/orizu-gepa-python/src/orizu_gepa/optimizer.py +16 -2
- package/vendor/skills/orizu/SKILL.md +138 -0
- package/vendor/skills/orizu/agents/openai.yaml +4 -0
- package/vendor/skills/orizu/references/assess-and-plan.md +107 -0
- package/vendor/skills/{orizu-cli → orizu}/references/building-apps.md +1 -1
- package/vendor/skills/orizu/references/building-judges.md +498 -0
- package/vendor/skills/{orizu-cli → orizu}/references/cli-reference.md +24 -23
- package/vendor/skills/orizu/references/dataset-design.md +100 -0
- package/vendor/skills/orizu/references/eval-strategy.md +64 -0
- package/vendor/skills/{orizu-cli → orizu}/references/instructions-after-prompts.md +12 -17
- package/vendor/skills/{orizu-cli → orizu}/references/migrate-existing-gepa-setup.md +79 -71
- package/vendor/skills/orizu/references/optimization-reports.md +266 -0
- package/vendor/skills/{orizu-cli → orizu}/references/optimization-with-gepa.md +56 -23
- package/vendor/skills/{orizu-cli → orizu}/references/primer.md +25 -16
- package/vendor/skills/{orizu-cli → orizu}/references/prompt-control-plane.md +94 -73
- package/vendor/skills/orizu-cli/SKILL.md +0 -242
- package/vendor/skills/orizu-cli/agents/openai.yaml +0 -4
- package/vendor/skills/orizu-cli/references/building-judges.md +0 -236
- package/vendor/skills/orizu-cli/references/optimization-reports.md +0 -179
- /package/vendor/skills/{orizu-cli → orizu}/scripts/test-app.mjs +0 -0
package/README.md
CHANGED
|
@@ -28,24 +28,52 @@ By default, the CLI talks to `https://orizu.ai`.
|
|
|
28
28
|
## Updating bundled GEPA
|
|
29
29
|
|
|
30
30
|
The CLI ships a verified, source-only copy of official GEPA so optimization
|
|
31
|
-
users never need `pip` or a network connection.
|
|
32
|
-
|
|
33
|
-
`scripts/vendor-gepa-python.mjs`, then re-runs the refresh command with the
|
|
34
|
-
matching downloaded wheel:
|
|
31
|
+
users never need `pip` or a network connection. From the repository root,
|
|
32
|
+
derive both mandatory pins independently from the downloaded wheel:
|
|
35
33
|
|
|
36
34
|
```bash
|
|
37
|
-
|
|
35
|
+
python3 - /path/to/gepa-<version>-py3-none-any.whl <version> <<'PY'
|
|
36
|
+
import hashlib, json, sys, zipfile
|
|
37
|
+
from pathlib import Path
|
|
38
|
+
|
|
39
|
+
wheel, version = Path(sys.argv[1]), sys.argv[2]
|
|
40
|
+
license_member = f'gepa-{version}.dist-info/licenses/LICENSE'
|
|
41
|
+
files = {}
|
|
42
|
+
with zipfile.ZipFile(wheel) as archive:
|
|
43
|
+
for member in archive.infolist():
|
|
44
|
+
if member.is_dir():
|
|
45
|
+
continue
|
|
46
|
+
if member.filename.startswith('gepa/'):
|
|
47
|
+
path = f'src/{member.filename}'
|
|
48
|
+
elif member.filename == license_member:
|
|
49
|
+
path = 'LICENSE'
|
|
50
|
+
else:
|
|
51
|
+
continue
|
|
52
|
+
files[path] = hashlib.sha256(archive.read(member)).hexdigest()
|
|
53
|
+
entries = sorted(files.items())
|
|
54
|
+
print('GEPA_WHEEL_SHA256=' + hashlib.sha256(wheel.read_bytes()).hexdigest())
|
|
55
|
+
print('GEPA_TREE_SHA256=' + hashlib.sha256(json.dumps(entries, separators=(',', ':')).encode()).hexdigest())
|
|
56
|
+
PY
|
|
38
57
|
```
|
|
39
58
|
|
|
40
|
-
|
|
41
|
-
`
|
|
42
|
-
|
|
59
|
+
Update `GEPA_VERSION`, `GEPA_RELEASE_COMMIT`, `GEPA_WHEEL_FILENAME`,
|
|
60
|
+
`GEPA_WHEEL_SHA256`, `GEPA_TREE_SHA256`, and the extractor's license member in
|
|
61
|
+
`packages/cli/scripts/vendor-gepa-python.mjs`. Both SHA-256 constants must
|
|
62
|
+
change together before running the matching refresh command:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node packages/cli/scripts/vendor-gepa-python.mjs --refresh --archive /path/to/gepa-<version>-py3-none-any.whl
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Commit the refreshed `packages/cli/gepa-python-source.zip`, then run
|
|
69
|
+
`bun test test/cli-gepa-packaging.test.ts test/cli/provision-snapshot.test.ts`.
|
|
70
|
+
These gates cover both pins. `npm pack` never downloads GEPA.
|
|
43
71
|
|
|
44
72
|
For a development checkout, materialize that same verified source before local
|
|
45
73
|
work that imports GEPA:
|
|
46
74
|
|
|
47
75
|
```bash
|
|
48
|
-
node scripts/vendor-gepa-python.mjs
|
|
76
|
+
node packages/cli/scripts/vendor-gepa-python.mjs
|
|
49
77
|
```
|
|
50
78
|
|
|
51
79
|
## Install
|
|
@@ -58,12 +86,15 @@ Install the CLI globally with your package manager:
|
|
|
58
86
|
| pnpm | `pnpm add -g orizu` |
|
|
59
87
|
| Bun | `bun add -g orizu` |
|
|
60
88
|
|
|
61
|
-
Then run the guided setup — it signs you in,
|
|
62
|
-
|
|
63
|
-
|
|
89
|
+
Then run the guided setup — it signs you in, asks you to choose or create a
|
|
90
|
+
team and project, initializes the local workspace contract, installs the shared
|
|
91
|
+
`~/.agents/skills/orizu` skill plus selected native targets, and optionally
|
|
92
|
+
launches Claude, Codex, or Pi:
|
|
64
93
|
|
|
65
94
|
```bash
|
|
66
95
|
orizu setup
|
|
96
|
+
# Scripts use explicit choices after `orizu login --headless`:
|
|
97
|
+
orizu setup --team acme --project support-agent --agent codex --non-interactive
|
|
67
98
|
```
|
|
68
99
|
|
|
69
100
|
To repair or customize skill installs later, run the companion skill installer
|
|
@@ -109,9 +140,8 @@ Agents are first-class users of this CLI: **every command supports `--json`**
|
|
|
109
140
|
(as a prefix, `orizu --json teams list`, or a trailing flag) and emits a single
|
|
110
141
|
machine-readable JSON document instead of formatted text. Discover the full
|
|
111
142
|
command surface, including global options, with `orizu capabilities --json`.
|
|
112
|
-
Hosted agents may read and sync instruction sets and prepare complete manifests,
|
|
113
|
-
|
|
114
|
-
create, push, shape, archive, restore, and production/default pointer mutations.
|
|
143
|
+
Hosted agents may read and sync instruction sets, create profile seeds, run shape add/remove with team-scoped curator authority, and prepare complete manifests. A local coding agent using the user's token runs instruction create, push, shape add/remove, archive, and restore itself after plan ratification. It gathers only read-only pointer-resolution and binding evidence; a human curator executes every production/default pointer command on every surface.
|
|
144
|
+
In a hosted session, a human curator using the local CLI must run create/push, archive/restore, and every pointer command; shape add/remove stays agent-runnable because it creates unpromoted heads only.
|
|
115
145
|
|
|
116
146
|
## Authentication
|
|
117
147
|
|
|
@@ -124,6 +154,12 @@ orizu login
|
|
|
124
154
|
This will open a browser tab for you to login with. You must either have an account on the [Orizu platform](https://orizu.ai) or it will help you create one.
|
|
125
155
|
Approving the login creates a personal access token for the CLI and stores it in your local Orizu credentials file. You can revoke CLI tokens from the Personal Tokens page in Orizu.
|
|
126
156
|
|
|
157
|
+
In an SSH or display-less Linux session, the CLI automatically prints an approval URL and polls for completion instead of opening a local browser. Force this mode when needed with:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
orizu login --headless
|
|
161
|
+
```
|
|
162
|
+
|
|
127
163
|
**Check the signed-in user**
|
|
128
164
|
|
|
129
165
|
```bash
|
|
@@ -196,11 +232,11 @@ orizu logout
|
|
|
196
232
|
<td><code>orizu prompts list --project ops-eval/support-qa [--status active|archived|all]</code></td>
|
|
197
233
|
</tr>
|
|
198
234
|
<tr>
|
|
199
|
-
<td>Archive or restore an instruction set (
|
|
235
|
+
<td>Archive or restore an instruction set (local agent or human; hosted human only)</td>
|
|
200
236
|
<td><code>orizu instructions archive <slug-or-exact-name> --project ops-eval/support-qa</code><br><code>orizu instructions restore <slug-or-exact-name> --project ops-eval/support-qa</code></td>
|
|
201
237
|
</tr>
|
|
202
238
|
<tr>
|
|
203
|
-
<td>Push an instruction-set manifest (
|
|
239
|
+
<td>Push an instruction-set manifest (local agent or human; hosted human only)</td>
|
|
204
240
|
<td><code>orizu instructions push ./orizu.instruction-set.json --project ops-eval/support-qa --set <slug-or-exact-name></code></td>
|
|
205
241
|
</tr>
|
|
206
242
|
<tr>
|
|
@@ -211,12 +247,12 @@ orizu logout
|
|
|
211
247
|
<td colspan="2"><strong>Report comments</strong></td>
|
|
212
248
|
</tr>
|
|
213
249
|
<tr>
|
|
214
|
-
<td>List report comments</td>
|
|
215
|
-
<td><code>orizu comments list --prompt <promptIdOrName> --project ops-eval/support-qa</code><br><code>orizu comments list --run <runId></code><br><code>orizu comments list --task <taskId></code></td>
|
|
250
|
+
<td>List report or README comments</td>
|
|
251
|
+
<td><code>orizu comments list --prompt <promptIdOrName> --project ops-eval/support-qa</code><br><code>orizu comments list --run <runId></code><br><code>orizu comments list --task <taskId></code><br><code>orizu comments list --dataset <datasetIdOrName> --project ops-eval/support-qa</code></td>
|
|
216
252
|
</tr>
|
|
217
253
|
<tr>
|
|
218
254
|
<td>Add or update comments</td>
|
|
219
|
-
<td><code>orizu comments add --run <runId> --body @comment.md --anchor "Summary" --lines 4:6</code><br><code>orizu comments reply <commentId> --body "Fixed"</code><br><code>orizu comments resolve <commentId></code></td>
|
|
255
|
+
<td><code>orizu comments add --run <runId> --body @comment.md --anchor "Summary" --lines 4:6</code><br><code>orizu comments add --dataset <datasetIdOrName> --project ops-eval/support-qa --body "Clarify this README" --anchor "Summary" --lines 4:6</code><br><code>orizu comments reply <commentId> --body "Fixed"</code><br><code>orizu comments resolve <commentId></code></td>
|
|
220
256
|
</tr>
|
|
221
257
|
<tr>
|
|
222
258
|
<td colspan="2"><strong>Diff comments</strong></td>
|
|
@@ -384,4 +420,4 @@ Use `--json` on supported task and app commands when automation needs structured
|
|
|
384
420
|
## More Documentation
|
|
385
421
|
|
|
386
422
|
- [docs/cli.md](docs/cli.md): complete CLI guide and command reference
|
|
387
|
-
- [skills/orizu
|
|
423
|
+
- [skills/orizu/references/cli-reference.md](skills/orizu/references/cli-reference.md): compact command matrix and end-to-end flows
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Readable, Writable } from 'node:stream';
|
|
2
|
+
declare class FileDescriptorSink extends Writable {
|
|
3
|
+
private readonly descriptor;
|
|
4
|
+
private readonly activeWriteCancellations;
|
|
5
|
+
private isLiveOutputAvailable;
|
|
6
|
+
private relay;
|
|
7
|
+
constructor(descriptor: number);
|
|
8
|
+
_write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
9
|
+
prepare(): Promise<void>;
|
|
10
|
+
cancelPendingWrites(): void;
|
|
11
|
+
private relayProcess;
|
|
12
|
+
}
|
|
13
|
+
export declare const childOutputSinks: {
|
|
14
|
+
stdout: FileDescriptorSink;
|
|
15
|
+
stderr: FileDescriptorSink;
|
|
16
|
+
};
|
|
17
|
+
export interface PipedChild {
|
|
18
|
+
stdout: Readable;
|
|
19
|
+
stderr: Readable;
|
|
20
|
+
exited: Promise<number | null>;
|
|
21
|
+
signalCode: NodeJS.Signals | null;
|
|
22
|
+
kill(signal?: number | NodeJS.Signals): void;
|
|
23
|
+
}
|
|
24
|
+
export declare function spawnPipedChild(command: string, args: string[], environment: NodeJS.ProcessEnv): Promise<PipedChild>;
|
|
25
|
+
export declare function writeChildStderr(text: string): Promise<void>;
|
|
26
|
+
export interface ChildOutputForwarding {
|
|
27
|
+
completed: Promise<void>;
|
|
28
|
+
failure: Promise<Error>;
|
|
29
|
+
failureReason(): Error | undefined;
|
|
30
|
+
expectSourceClose(): void;
|
|
31
|
+
stopLiveOutput(): void;
|
|
32
|
+
}
|
|
33
|
+
export interface ChildOutputCapture {
|
|
34
|
+
stdout(chunk: string): void;
|
|
35
|
+
stderr(chunk: string): void;
|
|
36
|
+
}
|
|
37
|
+
export declare function completePipedChild(child: PipedChild, forwarding: readonly ChildOutputForwarding[]): Promise<number | null>;
|
|
38
|
+
export declare function runPipedChild(command: string, args: string[], environment: NodeJS.ProcessEnv, onSpawn: () => Promise<void>, capture: ChildOutputCapture, observeChild?: (child: PipedChild) => void): Promise<{
|
|
39
|
+
status: number | null;
|
|
40
|
+
error?: Error;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Forward a child stream live while retaining a bounded caller-owned copy.
|
|
44
|
+
* Transient sink slowness pushes back; a stall degrades safely to capture-only.
|
|
45
|
+
*/
|
|
46
|
+
export declare function teeChildOutput(source: Readable, destination: Writable, capture: (chunk: string) => void): ChildOutputForwarding;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=child-output-tee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-output-tee.d.ts","sourceRoot":"","sources":["../src/child-output-tee.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAsHhD,cAAM,kBAAmB,SAAQ,QAAQ;IAK3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAwB;IACjE,OAAO,CAAC,qBAAqB,CAAO;IACpC,OAAO,CAAC,KAAK,CAA6B;gBAEb,UAAU,EAAE,MAAM;IAItC,MAAM,CACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GACvC,IAAI;IAgCD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,mBAAmB,IAAI,IAAI;IAS3B,OAAO,CAAC,YAAY;CAiCrB;AAED,eAAO,MAAM,gBAAgB;;;CAG5B,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;CAC7C;AAqDD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,CAAC,UAAU,GAC7B,OAAO,CAAC,UAAU,CAAC,CAiDrB;AAoCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlE;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACvB,aAAa,IAAI,KAAK,GAAG,SAAS,CAAA;IAClC,iBAAiB,IAAI,IAAI,CAAA;IACzB,cAAc,IAAI,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAuCD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,SAAS,qBAAqB,EAAE,GAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6CxB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC5B,OAAO,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GACzC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAqBnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,qBAAqB,CA2DvB"}
|