harnery 0.45.0 → 0.45.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commander.js +0 -1
- package/dist/commands/files.d.ts +2 -2
- package/dist/commands/files.d.ts.map +1 -1
- package/dist/commands/files.js +4 -7
- package/dist/commands/servers.d.ts.map +1 -1
- package/dist/commands/servers.js +17 -11
- package/dist/commands/tunnel.d.ts +0 -15
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +153 -453
- package/dist/core/agents/live-authority-v3.d.ts +0 -1
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +0 -11
- package/dist/core/agents/live-lifecycle-v3.d.ts +2 -4
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -1
- package/dist/core/agents/live-lifecycle-v3.js +7 -28
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +14 -25
- package/dist/core/agents/state/live-coordination-writer.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-writer.js +0 -5
- package/dist/core/agents/state/pidmap.d.ts.map +1 -1
- package/dist/core/agents/state/pidmap.js +0 -5
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +70 -180
- package/dist/core/artifacts/activity.d.ts +4 -1
- package/dist/core/artifacts/activity.d.ts.map +1 -1
- package/dist/core/artifacts/activity.js +8 -2
- package/dist/core/artifacts/delivery-card.d.ts.map +1 -1
- package/dist/core/artifacts/delivery-card.js +1 -2
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +38 -12
- package/dist/core/events/v3/authority-outbox.d.ts.map +1 -1
- package/dist/core/events/v3/authority-outbox.js +0 -29
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +0 -1
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/coordination-recorder.js +0 -7
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +64 -77
- package/dist/core/hooks/cli.js +78 -48
- package/dist/core/servers/index.d.ts +13 -10
- package/dist/core/servers/index.d.ts.map +1 -1
- package/dist/core/servers/index.js +97 -192
- package/dist/core/servers/tunnels.d.ts +3 -5
- package/dist/core/servers/tunnels.d.ts.map +1 -1
- package/dist/core/servers/tunnels.js +2 -45
- package/dist/core/storage/durable-history.js +56 -22
- package/dist/core/storage/segments.d.ts.map +1 -1
- package/dist/core/storage/segments.js +73 -17
- package/dist/core/work/state.js +7 -7
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +21 -65
- package/dist/core/workflow/live-session-v3.d.ts +0 -6
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +5 -126
- package/dist/core/workflow/proof.d.ts +4 -4
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +4 -12
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +0 -19
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +0 -13
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +0 -19
- package/dist/core/workflow/spawn-opencode.d.ts.map +1 -1
- package/dist/core/workflow/spawn-opencode.js +0 -14
- package/dist/core/workflow/types.d.ts +11 -54
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +0 -4
- package/dist/lib/tunnel/state.d.ts +6 -13
- package/dist/lib/tunnel/state.d.ts.map +1 -1
- package/dist/lib/tunnel/state.js +12 -58
- package/package.json +1 -6
- package/src/commander.ts +0 -10
- package/src/commands/files.ts +5 -13
- package/src/commands/servers.ts +23 -12
- package/src/commands/tunnel.ts +166 -533
- package/src/core/agents/live-authority-v3.ts +0 -17
- package/src/core/agents/live-lifecycle-v3.ts +14 -52
- package/src/core/agents/state/heartbeat-writer.ts +12 -29
- package/src/core/agents/state/live-coordination-writer.ts +0 -29
- package/src/core/agents/state/pidmap.ts +0 -13
- package/src/core/agents/state/stale-sweep.ts +82 -247
- package/src/core/artifacts/activity.ts +9 -2
- package/src/core/artifacts/delivery-card.ts +1 -7
- package/src/core/artifacts/index.ts +45 -12
- package/src/core/events/v3/authority-outbox.ts +0 -56
- package/src/core/events/v3/producers/coordination-recorder.ts +0 -15
- package/src/core/events/v3/producers/recorder.ts +68 -94
- package/src/core/hooks/cli.ts +85 -47
- package/src/core/servers/index.ts +106 -228
- package/src/core/servers/tunnels.ts +3 -55
- package/src/core/storage/durable-history.ts +52 -20
- package/src/core/storage/segments.ts +79 -17
- package/src/core/work/state.ts +7 -7
- package/src/core/workflow/engine.ts +21 -73
- package/src/core/workflow/live-session-v3.ts +5 -146
- package/src/core/workflow/proof.ts +5 -21
- package/src/core/workflow/spawn-claude.ts +0 -18
- package/src/core/workflow/spawn-codex.ts +0 -13
- package/src/core/workflow/spawn-cursor.ts +0 -18
- package/src/core/workflow/spawn-opencode.ts +0 -14
- package/src/core/workflow/types.ts +11 -41
- package/src/lib/identities/assume.ts +0 -4
- package/src/lib/tunnel/state.ts +15 -70
- package/dist/commands/turn-rollback.d.ts +0 -5
- package/dist/commands/turn-rollback.d.ts.map +0 -1
- package/dist/commands/turn-rollback.js +0 -76
- package/dist/core/agents/state/unchanged-file.d.ts +0 -44
- package/dist/core/agents/state/unchanged-file.d.ts.map +0 -1
- package/dist/core/agents/state/unchanged-file.js +0 -390
- package/dist/core/events/v3/generation-custody.d.ts +0 -5
- package/dist/core/events/v3/generation-custody.d.ts.map +0 -1
- package/dist/core/events/v3/generation-custody.js +0 -50
- package/dist/core/turn-rollback/content.d.ts +0 -53
- package/dist/core/turn-rollback/content.d.ts.map +0 -1
- package/dist/core/turn-rollback/content.js +0 -396
- package/dist/core/turn-rollback/index.d.ts +0 -72
- package/dist/core/turn-rollback/index.d.ts.map +0 -1
- package/dist/core/turn-rollback/index.js +0 -443
- package/dist/core/workflow/failure-evidence.d.ts +0 -16
- package/dist/core/workflow/failure-evidence.d.ts.map +0 -1
- package/dist/core/workflow/failure-evidence.js +0 -114
- package/src/commands/turn-rollback.ts +0 -111
- package/src/core/agents/state/unchanged-file.ts +0 -456
- package/src/core/events/v3/generation-custody.ts +0 -59
- package/src/core/turn-rollback/content.ts +0 -499
- package/src/core/turn-rollback/index.ts +0 -580
- package/src/core/workflow/failure-evidence.ts +0 -141
package/dist/commander.js
CHANGED
|
@@ -202,7 +202,6 @@ function harneryCommandBundles({ emit, context, binName, }) {
|
|
|
202
202
|
],
|
|
203
203
|
load: async (program) => (await import("./commands/workflow.js")).registerWorkflowCommand(program, emit),
|
|
204
204
|
},
|
|
205
|
-
lazy("turn-rollback", "Capture and review exact turn paths before restoring owned content.", async (program) => (await import("./commands/turn-rollback.js")).registerTurnRollbackCommand(program, emit, context)),
|
|
206
205
|
lazy("work", "Track durable objectives across bounded workflow attempts.", async (program) => (await import("./commands/work.js")).registerWorkCommand(program, emit)),
|
|
207
206
|
lazy("governor", "Run a bounded specialist team over a durable-work dependency graph.", async (program) => (await import("./commands/governor.js")).registerGovernorCommand(program, emit)),
|
|
208
207
|
lazy("web", "Standalone read-only dashboard for harnery's coord state", async (program) => (await import("./commands/web.js")).registerWebCommand(program, emit)),
|
package/dist/commands/files.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
-
import { type
|
|
3
|
+
import { type ProcessAliveCheck, type TunnelState } from "../lib/tunnel/state.js";
|
|
4
4
|
export { FILES_ORIGIN_HOST } from "../lib/local-file-url.js";
|
|
5
5
|
export type LocalFileUrlMode = "auto" | "raw" | "viewer";
|
|
6
6
|
export interface LocalFileUrlOptions {
|
|
@@ -45,6 +45,6 @@ export declare class TunnelLinkError extends Error {
|
|
|
45
45
|
* In both cases the tunnel's path scope must forward the request, or its gate
|
|
46
46
|
* would refuse the link, so a tunnel that does not cover the file is skipped.
|
|
47
47
|
*/
|
|
48
|
-
export declare function tunnelFileUrl(local: LocalFileUrl, port: number, states: TunnelState[],
|
|
48
|
+
export declare function tunnelFileUrl(local: LocalFileUrl, port: number, states: TunnelState[], processAlive?: ProcessAliveCheck): string;
|
|
49
49
|
export declare function registerFilesCommand(program: Command, emit: EmitContext, context?: HarneryProgramContext): void;
|
|
50
50
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAY1E,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB,GAC9B,uBAAuB,GACvB,gCAAgC,GAChC,yBAAyB,CAAC;AAE9B,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,IAAI,EAAE,sBAAsB;IAErC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAFZ,IAAI,EAAE,sBAAsB,EACrC,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM;CAKxB;AAMD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,kBAA0B,GACpC,OAAO,CAAC,IAAI,CAAC,CAmDf;AAuCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAS1F;AAED,qBAAa,eAAgB,SAAQ,KAAK;IAGtC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM;CAKxB;AAUD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,MAAM,CA+BR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAqFN"}
|
package/dist/commands/files.js
CHANGED
|
@@ -2,11 +2,10 @@ import { realpathSync, statSync } from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
4
4
|
import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.js";
|
|
5
|
-
import { createTunnelReadinessVerifier } from "../core/servers/index.js";
|
|
6
5
|
import { coordRootId, localCoordRootIdUrl } from "../lib/coord-root-id.js";
|
|
7
6
|
import { encodedRepoPath, encodeLinkSafeComponent, FILES_ORIGIN_HOST, localFilesOriginUrl, localFileViewerUrl, } from "../lib/local-file-url.js";
|
|
8
7
|
import { isPathAllowed } from "../lib/tunnel/path-scope.js";
|
|
9
|
-
import {
|
|
8
|
+
import { isTunnelStateLive, listStates, tunnelTargetPort, } from "../lib/tunnel/state.js";
|
|
10
9
|
export { FILES_ORIGIN_HOST } from "../lib/local-file-url.js";
|
|
11
10
|
export class DashboardRootError extends Error {
|
|
12
11
|
code;
|
|
@@ -126,8 +125,8 @@ function newestFirst(states) {
|
|
|
126
125
|
* In both cases the tunnel's path scope must forward the request, or its gate
|
|
127
126
|
* would refuse the link, so a tunnel that does not cover the file is skipped.
|
|
128
127
|
*/
|
|
129
|
-
export function tunnelFileUrl(local, port, states,
|
|
130
|
-
const live = states.filter((state) => tunnelTargetPort(state) === port &&
|
|
128
|
+
export function tunnelFileUrl(local, port, states, processAlive) {
|
|
129
|
+
const live = states.filter((state) => tunnelTargetPort(state) === port && isTunnelStateLive(state, processAlive));
|
|
131
130
|
if (local.mode === "raw") {
|
|
132
131
|
const path = `/${encodedRepoPath(local.relPath)}`;
|
|
133
132
|
const tunnel = newestFirst(live).find((state) => vhostName(state.vhost) === FILES_ORIGIN_HOST && isPathAllowed(path, state.allow_paths));
|
|
@@ -194,9 +193,7 @@ export function registerFilesCommand(program, emit, context) {
|
|
|
194
193
|
});
|
|
195
194
|
if (opts.verify !== false)
|
|
196
195
|
await verifyDashboardRoot(coordRoot, port);
|
|
197
|
-
const url = opts.tunnel
|
|
198
|
-
? tunnelFileUrl(result, port, listStates(coordRoot), createTunnelReadinessVerifier({ coordRoot }))
|
|
199
|
-
: result.url;
|
|
196
|
+
const url = opts.tunnel ? tunnelFileUrl(result, port, listStates(coordRoot)) : result.url;
|
|
200
197
|
emit.text(`${url}\n`);
|
|
201
198
|
}
|
|
202
199
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/commands/servers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/commands/servers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,OAAO,EAWL,KAAK,aAAa,EAMnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAsZN;AA8BD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmDvE"}
|
package/dist/commands/servers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { hostname } from "node:os";
|
|
2
3
|
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
3
4
|
import { resolveBinName, serverGcConfig } from "../core/config.js";
|
|
4
5
|
import { adoptServer, allocateServerPort, isValidServerId, listServers, planServerGc, readServer, registerServer, SERVER_DEFAULT_IDLE_HOURS, SERVER_DEFAULT_OWNER_STALE_HOURS, stopServer, touchServer, unregisterServer, } from "../core/servers/index.js";
|
|
@@ -73,13 +74,18 @@ export function registerServersCommand(program, emit, context) {
|
|
|
73
74
|
const preview = Boolean(options.type) && !options.yes;
|
|
74
75
|
const results = [];
|
|
75
76
|
for (const stray of strays) {
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
results.push(await stopServer({
|
|
78
|
+
schema_version: 1,
|
|
79
|
+
id: `pid-${stray.pid}`,
|
|
80
|
+
kind: "session",
|
|
78
81
|
type: "unregistered",
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
label: stray.command,
|
|
83
|
+
pid: stray.pid,
|
|
84
|
+
...(stray.start_token ? { start_token: stray.start_token } : {}),
|
|
85
|
+
host: hostname(),
|
|
86
|
+
started_at: new Date().toISOString(),
|
|
87
|
+
registered_at: new Date().toISOString(),
|
|
88
|
+
}, { coordRoot }));
|
|
83
89
|
}
|
|
84
90
|
for (const view of selected) {
|
|
85
91
|
if (preview && !ids.includes(view.record.id))
|
|
@@ -299,14 +305,14 @@ export function registerServersCommand(program, emit, context) {
|
|
|
299
305
|
});
|
|
300
306
|
cmd
|
|
301
307
|
.command("unregister <id>")
|
|
302
|
-
.description("Remove
|
|
308
|
+
.description("Remove a server's record (with --pid, only if the record still names that pid)")
|
|
303
309
|
.option("--pid <pid>", "Only remove when the record names this pid")
|
|
304
310
|
.action((id, options) => {
|
|
305
311
|
try {
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
312
|
+
const removed = unregisterServer(id, {
|
|
313
|
+
coordRoot: root(),
|
|
314
|
+
...(options.pid ? { pid: integer(options.pid, "--pid") } : {}),
|
|
315
|
+
});
|
|
310
316
|
emit.config({ format: "json" });
|
|
311
317
|
emit.data({ id, removed });
|
|
312
318
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
-
import { type ServerRecord } from "../core/servers/index.js";
|
|
4
3
|
import { type DetectOptions, detectPublicAddresses } from "../lib/tunnel/current-address.js";
|
|
5
4
|
import { type TunnelProvider, type TunnelState } from "../lib/tunnel/state.js";
|
|
6
5
|
export declare function tunnelLogDestinations(name: string, provider: TunnelProvider, env?: NodeJS.ProcessEnv, root?: string): {
|
|
@@ -43,20 +42,6 @@ export declare function resolveGateLaunch(i: GateLaunchInputs): GateLaunch | nul
|
|
|
43
42
|
* `tunnel log-worker` task instead.
|
|
44
43
|
*/
|
|
45
44
|
export declare function resolveWorkerLaunch(i: GateLaunchInputs): GateLaunch | undefined;
|
|
46
|
-
export interface TunnelRoute {
|
|
47
|
-
path: string;
|
|
48
|
-
httpsPort: number;
|
|
49
|
-
}
|
|
50
|
-
/** Serialize the instance and every shared provider route before any external effect. */
|
|
51
|
-
export declare function withTunnelLifecycleCustody<T>(name: string, requested: TunnelRoute | null, effect: () => PromiseLike<T>): Promise<T>;
|
|
52
|
-
export declare function withTunnelLifecycleCustody<T>(name: string, requested: TunnelRoute | null, effect: () => T): T;
|
|
53
|
-
/** Retain a refused launch without overwriting another launch's canonical state. */
|
|
54
|
-
export declare function recordRefusedTunnelLaunch(state: TunnelState): string;
|
|
55
|
-
/** A canonical state frame may be published only by its current registration. */
|
|
56
|
-
export declare function publishTunnelState(state: TunnelState, receipt: ServerRecord): void;
|
|
57
|
-
/** Retain pending route intent before asking the provider to change external state. */
|
|
58
|
-
export declare function beginTailscaleRoute<T>(state: TunnelState, receipt: ServerRecord, effect: () => T): T;
|
|
59
|
-
/** Unknown saved identities retain state and never authorize a signal. */
|
|
60
45
|
export declare function downOne(name: string, killed: Set<number>): number;
|
|
61
46
|
/**
|
|
62
47
|
* Restart ONE instance's gate in place, deliberately leaving the provider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAiB1E,OAAO,EACL,KAAK,aAAa,EAClB,qBAAqB,EAEtB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAYL,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAyDhC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAgB,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcpC;AAmHD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,IAAI,CAWxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAM/E;AA2iBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CA0BjE;AA2DD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwF7F;AAoQD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,qFAAqF;IACrF,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,6GAA6G;IAC7G,EAAE,EAAE,OAAO,CAAC;IACZ,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAuC/B;AAaD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CA+GN"}
|