@knpkv/herdr-connect 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/activity-store.d.ts +11 -0
- package/dist/activity-store.d.ts.map +1 -0
- package/dist/activity-store.js +76 -0
- package/dist/activity-store.js.map +1 -0
- package/dist/client-entry.d.ts +2 -0
- package/dist/client-entry.d.ts.map +1 -0
- package/dist/client-entry.js +11 -0
- package/dist/client-entry.js.map +1 -0
- package/dist/client.d.ts +86 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +453 -0
- package/dist/client.js.map +1 -0
- package/dist/directory.d.ts +159 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +186 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +62 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +36 -0
- package/dist/errors.js.map +1 -0
- package/dist/forest.d.ts +61 -0
- package/dist/forest.d.ts.map +1 -0
- package/dist/forest.js +90 -0
- package/dist/forest.js.map +1 -0
- package/dist/id.d.ts +4 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +10 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/terminal-release.d.ts +6 -0
- package/dist/internal/terminal-release.d.ts.map +1 -0
- package/dist/internal/terminal-release.js +13 -0
- package/dist/internal/terminal-release.js.map +1 -0
- package/dist/keyboard.d.ts +2 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +19 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/model.d.ts +144 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +104 -0
- package/dist/model.js.map +1 -0
- package/dist/relationship-store.d.ts +66 -0
- package/dist/relationship-store.d.ts.map +1 -0
- package/dist/relationship-store.js +246 -0
- package/dist/relationship-store.js.map +1 -0
- package/dist/target.d.ts +83 -0
- package/dist/target.d.ts.map +1 -0
- package/dist/target.js +56 -0
- package/dist/target.js.map +1 -0
- package/dist/terminal-input.d.ts +30 -0
- package/dist/terminal-input.d.ts.map +1 -0
- package/dist/terminal-input.js +95 -0
- package/dist/terminal-input.js.map +1 -0
- package/dist/terminal-setup.d.ts +10 -0
- package/dist/terminal-setup.d.ts.map +1 -0
- package/dist/terminal-setup.js +11 -0
- package/dist/terminal-setup.js.map +1 -0
- package/dist/terminal-theme.d.ts +3 -0
- package/dist/terminal-theme.d.ts.map +1 -0
- package/dist/terminal-theme.js +3 -0
- package/dist/terminal-theme.js.map +1 -0
- package/dist/terminal-viewport.d.ts +12 -0
- package/dist/terminal-viewport.d.ts.map +1 -0
- package/dist/terminal-viewport.js +21 -0
- package/dist/terminal-viewport.js.map +1 -0
- package/dist/terminal.d.ts +794 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +166 -0
- package/dist/terminal.js.map +1 -0
- package/dist/view.d.ts +51 -0
- package/dist/view.d.ts.map +1 -0
- package/dist/view.js +210 -0
- package/dist/view.js.map +1 -0
- package/package.json +84 -0
- package/src/styles.css +527 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 knpkv
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# `@knpkv/herdr-connect`
|
|
2
|
+
|
|
3
|
+
Fleet agent directory and authenticated Herdr terminal control.
|
|
4
|
+
|
|
5
|
+
The directory combines the local inventory with peer `/v1/connect/agents/local` responses. Peer requests time out after 1.5 seconds and run with bounded concurrency. An offline, unavailable, timed-out, or malformed peer becomes a typed partial failure; healthy agents remain usable.
|
|
6
|
+
|
|
7
|
+
The terminal connector resolves an opaque agent ID against the current local inventory, starts `herdr terminal session control`, streams Schema-decoded frames, and writes bounded input, resize, scroll, and release commands. Its session is scoped, so interruption releases or kills the child instead of leaving an attach process behind.
|
|
8
|
+
|
|
9
|
+
Browser consumers can import `@knpkv/herdr-connect/client` for the mounting entry, `@knpkv/herdr-connect/surface` for the embeddable state and view, and `@knpkv/herdr-connect/styles.css` for package-owned styles. Exact `host` plus stable `agent` query parameters select that room. The relationship store keys metadata by exact host and stable agent ID. Trusted live inventory may replace a stored parent only for the same host, stable agent ID, and pane with a strictly newer observation; durable, stale, equal, or pane-changing observations cannot reparent an agent. The view renders reported roots and parent relations; missing, cross-host, cyclic, or ambiguous ownership stays explicit and is never guessed.
|
|
10
|
+
|
|
11
|
+
Browser contracts are available through `@knpkv/herdr-connect/model`; browser subpaths do not pull SQLite or Node process code into the bundle.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Effect, FileSystem, Path } from "effect";
|
|
2
|
+
import { TerminalTransportError } from "./errors.js";
|
|
3
|
+
export declare class AgentActivityStore {
|
|
4
|
+
#private;
|
|
5
|
+
readonly path: string;
|
|
6
|
+
private constructor();
|
|
7
|
+
static readonly open: (path: string) => Effect.Effect<AgentActivityStore, TerminalTransportError, FileSystem.FileSystem | Path.Path>;
|
|
8
|
+
readonly observe: (this: AgentActivityStore, host: string, agentId: string, revision: number, observedAt: number) => Effect.Effect<number, TerminalTransportError, never>;
|
|
9
|
+
close(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=activity-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-store.d.ts","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAA;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAQpD,qBAAa,kBAAkB;;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,eA2BN;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,iHAclB;IAEF,QAAQ,CAAC,OAAO,0JAqCd;IAEF,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Effect, FileSystem, Path, Schema } from "effect";
|
|
2
|
+
import { DatabaseSync } from "node:sqlite";
|
|
3
|
+
import { TerminalTransportError } from "./errors.js";
|
|
4
|
+
const ActivityRow = Schema.Struct({ last_activity_at: Schema.Number });
|
|
5
|
+
const TableColumn = Schema.Struct({ name: Schema.String });
|
|
6
|
+
const storeError = (operation) => (cause) => new TerminalTransportError({ cause, detail: String(cause), operation });
|
|
7
|
+
export class AgentActivityStore {
|
|
8
|
+
#database;
|
|
9
|
+
path;
|
|
10
|
+
constructor(path) {
|
|
11
|
+
this.path = path;
|
|
12
|
+
this.#database = new DatabaseSync(path);
|
|
13
|
+
try {
|
|
14
|
+
this.#database.exec(`
|
|
15
|
+
PRAGMA journal_mode = WAL;
|
|
16
|
+
CREATE TABLE IF NOT EXISTS agent_activity (
|
|
17
|
+
host TEXT COLLATE NOCASE NOT NULL,
|
|
18
|
+
agent_id TEXT NOT NULL,
|
|
19
|
+
revision INTEGER NOT NULL,
|
|
20
|
+
last_activity_at INTEGER NOT NULL,
|
|
21
|
+
observed_at INTEGER NOT NULL DEFAULT 0,
|
|
22
|
+
PRIMARY KEY (host, agent_id)
|
|
23
|
+
);
|
|
24
|
+
`);
|
|
25
|
+
const columns = Schema.decodeUnknownSync(Schema.Array(TableColumn))(this.#database.prepare("PRAGMA table_info(agent_activity)").all());
|
|
26
|
+
if (!columns.some(({ name }) => name === "observed_at")) {
|
|
27
|
+
this.#database.exec("ALTER TABLE agent_activity ADD COLUMN observed_at INTEGER NOT NULL DEFAULT 0");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
this.#database.close();
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
static open = Effect.fn("AgentActivityStore.open")(function* (path) {
|
|
36
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
37
|
+
const paths = yield* Path.Path;
|
|
38
|
+
const directory = paths.dirname(path);
|
|
39
|
+
yield* fileSystem.makeDirectory(directory, { recursive: true, mode: 0o700 }).pipe(Effect.mapError(storeError("activity.openDirectory")));
|
|
40
|
+
yield* fileSystem.chmod(directory, 0o700).pipe(Effect.mapError(storeError("activity.secureDirectory")));
|
|
41
|
+
return yield* Effect.try({
|
|
42
|
+
try: () => new AgentActivityStore(path),
|
|
43
|
+
catch: storeError("activity.openDatabase")
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
observe = Effect.fn("AgentActivityStore.observe")(function* (host, agentId, revision, observedAt) {
|
|
47
|
+
const normalizedHost = host.toLowerCase();
|
|
48
|
+
const row = yield* Effect.try({
|
|
49
|
+
try: () => this.#database
|
|
50
|
+
.prepare(`INSERT INTO agent_activity (host, agent_id, revision, last_activity_at, observed_at)
|
|
51
|
+
VALUES (?, ?, ?, ?, ?)
|
|
52
|
+
ON CONFLICT(host, agent_id) DO UPDATE SET
|
|
53
|
+
revision = CASE
|
|
54
|
+
WHEN excluded.observed_at >= agent_activity.observed_at
|
|
55
|
+
THEN excluded.revision
|
|
56
|
+
ELSE agent_activity.revision
|
|
57
|
+
END,
|
|
58
|
+
last_activity_at = CASE
|
|
59
|
+
WHEN excluded.observed_at < agent_activity.observed_at
|
|
60
|
+
THEN agent_activity.last_activity_at
|
|
61
|
+
WHEN agent_activity.revision = excluded.revision
|
|
62
|
+
THEN agent_activity.last_activity_at
|
|
63
|
+
ELSE excluded.last_activity_at
|
|
64
|
+
END,
|
|
65
|
+
observed_at = MAX(agent_activity.observed_at, excluded.observed_at)
|
|
66
|
+
RETURNING last_activity_at`)
|
|
67
|
+
.get(normalizedHost, agentId, revision, observedAt, observedAt),
|
|
68
|
+
catch: storeError("activity.observe")
|
|
69
|
+
});
|
|
70
|
+
return yield* Schema.decodeUnknownEffect(ActivityRow)(row).pipe(Effect.mapError(storeError("activity.decode")), Effect.map(({ last_activity_at }) => last_activity_at));
|
|
71
|
+
});
|
|
72
|
+
close() {
|
|
73
|
+
this.#database.close();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=activity-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-store.js","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-entry.d.ts","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RegistryProvider } from "@effect/atom-react";
|
|
3
|
+
import { createRoot } from "react-dom/client";
|
|
4
|
+
import { ConnectSurface, makeConnectAtoms } from "./client.js";
|
|
5
|
+
import { ConnectBootstrapError } from "./errors.js";
|
|
6
|
+
const root = document.querySelector("#fleet-connect-root");
|
|
7
|
+
if (root === null) {
|
|
8
|
+
throw new ConnectBootstrapError({ detail: "Connect root is missing" });
|
|
9
|
+
}
|
|
10
|
+
createRoot(root).render(_jsx(RegistryProvider, { children: _jsx(ConnectSurface, { atoms: makeConnectAtoms() }) }));
|
|
11
|
+
//# sourceMappingURL=client-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-entry.js","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAA;AACvE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;IAClB,MAAM,IAAI,qBAAqB,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;AACxE,CAAC;AAED,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CACrB,KAAC,gBAAgB,cACf,KAAC,cAAc,IAAC,KAAK,EAAE,gBAAgB,EAAE,GAAI,GAC5B,CACpB,CAAA"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Cause, Schema } from "effect";
|
|
2
|
+
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
3
|
+
import * as Atom from "effect/unstable/reactivity/Atom";
|
|
4
|
+
import { type ReactNode } from "react";
|
|
5
|
+
import { type ConnectAgent } from "./model.js";
|
|
6
|
+
import { type AgentActivityFilter } from "./view.js";
|
|
7
|
+
declare const ConnectNetworkError_base: Schema.Class<ConnectNetworkError, Schema.TaggedStruct<"ConnectNetworkError", {
|
|
8
|
+
readonly detail: Schema.String;
|
|
9
|
+
}>, Cause.YieldableError>;
|
|
10
|
+
declare class ConnectNetworkError extends ConnectNetworkError_base {
|
|
11
|
+
}
|
|
12
|
+
declare const ConnectStatusError_base: Schema.Class<ConnectStatusError, Schema.TaggedStruct<"ConnectStatusError", {
|
|
13
|
+
readonly status: Schema.Number;
|
|
14
|
+
}>, Cause.YieldableError>;
|
|
15
|
+
declare class ConnectStatusError extends ConnectStatusError_base {
|
|
16
|
+
}
|
|
17
|
+
declare const ConnectProtocolError_base: Schema.Class<ConnectProtocolError, Schema.TaggedStruct<"ConnectProtocolError", {
|
|
18
|
+
readonly detail: Schema.String;
|
|
19
|
+
readonly cause: Schema.Defect;
|
|
20
|
+
}>, Cause.YieldableError>;
|
|
21
|
+
declare class ConnectProtocolError extends ConnectProtocolError_base {
|
|
22
|
+
}
|
|
23
|
+
declare const ConnectPreferenceError_base: Schema.Class<ConnectPreferenceError, Schema.TaggedStruct<"ConnectPreferenceError", {
|
|
24
|
+
readonly operation: Schema.String;
|
|
25
|
+
readonly cause: Schema.Defect;
|
|
26
|
+
}>, Cause.YieldableError>;
|
|
27
|
+
declare class ConnectPreferenceError extends ConnectPreferenceError_base {
|
|
28
|
+
}
|
|
29
|
+
type ConnectionState = {
|
|
30
|
+
readonly _tag: "idle";
|
|
31
|
+
} | {
|
|
32
|
+
readonly _tag: "connecting";
|
|
33
|
+
readonly agent: ConnectAgent;
|
|
34
|
+
} | {
|
|
35
|
+
readonly _tag: "connected";
|
|
36
|
+
readonly agent: ConnectAgent;
|
|
37
|
+
} | {
|
|
38
|
+
readonly _tag: "closed";
|
|
39
|
+
readonly agent: ConnectAgent;
|
|
40
|
+
} | {
|
|
41
|
+
readonly _tag: "failed";
|
|
42
|
+
readonly agent: ConnectAgent;
|
|
43
|
+
readonly detail: string;
|
|
44
|
+
};
|
|
45
|
+
type ConnectionRequest = {
|
|
46
|
+
readonly agent: ConnectAgent;
|
|
47
|
+
readonly id: number;
|
|
48
|
+
};
|
|
49
|
+
export declare const makeConnectAtoms: () => {
|
|
50
|
+
activityFilter: Atom.Writable<AgentActivityFilter, AgentActivityFilter>;
|
|
51
|
+
agents: Atom.Atom<AsyncResult.AsyncResult<{
|
|
52
|
+
readonly agents: readonly {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly host: string;
|
|
55
|
+
readonly name: string;
|
|
56
|
+
readonly kind: string;
|
|
57
|
+
readonly state: string;
|
|
58
|
+
readonly work: string;
|
|
59
|
+
readonly lastActivityAt: number;
|
|
60
|
+
readonly relationship?: {
|
|
61
|
+
readonly parentAgentId: string;
|
|
62
|
+
readonly relation: "delegated" | "pair" | "review";
|
|
63
|
+
};
|
|
64
|
+
}[];
|
|
65
|
+
readonly failures: readonly {
|
|
66
|
+
readonly host: string;
|
|
67
|
+
readonly reason: "invalid_response" | "offline" | "request_failed" | "timeout" | "unavailable";
|
|
68
|
+
}[];
|
|
69
|
+
}, ConnectNetworkError | ConnectProtocolError | ConnectStatusError>>;
|
|
70
|
+
agentsPoll: Atom.Atom<AsyncResult.AsyncResult<number, never>>;
|
|
71
|
+
connection: Atom.Writable<ConnectionState, ConnectionState>;
|
|
72
|
+
connectionRequest: Atom.Writable<ConnectionRequest | null, ConnectionRequest | null>;
|
|
73
|
+
hostFilter: Atom.Writable<string | null, string | null>;
|
|
74
|
+
preference: Atom.Atom<AsyncResult.AsyncResult<string | null, ConnectPreferenceError>>;
|
|
75
|
+
preferenceError: Atom.Writable<string | null, string | null>;
|
|
76
|
+
query: Atom.Writable<string, string>;
|
|
77
|
+
selectedKey: Atom.Writable<string | null, string | null>;
|
|
78
|
+
};
|
|
79
|
+
export type ConnectAtoms = ReturnType<typeof makeConnectAtoms>;
|
|
80
|
+
export declare const ConnectSurface: ({ atoms, embedded, roomFooter }: {
|
|
81
|
+
readonly atoms: ConnectAtoms;
|
|
82
|
+
readonly embedded?: boolean;
|
|
83
|
+
readonly roomFooter?: ReactNode;
|
|
84
|
+
}) => import("react").JSX.Element;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvE,OAAO,KAAK,WAAW,MAAM,wCAAwC,CAAA;AACrE,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAA;AAIvD,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE7E,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,YAAY,CAAA;AAOnB,OAAO,EAAqD,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAA;;;;AAOvG,cAAM,mBAAoB,SAAQ,wBAEhC;CAAG;;;;AAEL,cAAM,kBAAmB,SAAQ,uBAE/B;CAAG;;;;;AAEL,cAAM,oBAAqB,SAAQ,yBAGjC;CAAG;;;;;AAEL,cAAM,sBAAuB,SAAQ,2BAGnC;CAAG;AAML,KAAK,eAAe,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAEL,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB,CAAA;AAwGD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAc5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AA4O9D,eAAO,MAAM,cAAc,oCAIxB;IACD,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAChC,gCAuPA,CAAA"}
|