@sentropic/h2a-runtime 0.91.1 → 0.92.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/config.d.ts +2 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +16 -3
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +0 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +76 -58
  8. package/dist/index.js.map +1 -1
  9. package/dist/llm-gateway-runtime/index.d.ts +6 -0
  10. package/dist/llm-gateway-runtime/index.d.ts.map +1 -1
  11. package/dist/llm-gateway-runtime/index.js +134 -60
  12. package/dist/llm-gateway-runtime/index.js.map +1 -1
  13. package/dist/llm-gateway-runtime/session-ledger.d.ts +38 -55
  14. package/dist/llm-gateway-runtime/session-ledger.d.ts.map +1 -1
  15. package/dist/llm-gateway-runtime/session-ledger.js +102 -250
  16. package/dist/llm-gateway-runtime/session-ledger.js.map +1 -1
  17. package/dist/llm-gateway-runtime/sticky.d.ts +25 -52
  18. package/dist/llm-gateway-runtime/sticky.d.ts.map +1 -1
  19. package/dist/llm-gateway-runtime/sticky.js +36 -605
  20. package/dist/llm-gateway-runtime/sticky.js.map +1 -1
  21. package/dist/llm-mesh.d.ts +19 -72
  22. package/dist/llm-mesh.d.ts.map +1 -1
  23. package/dist/llm-mesh.js +42 -399
  24. package/dist/llm-mesh.js.map +1 -1
  25. package/dist/llm-routing-config.d.ts +28 -0
  26. package/dist/llm-routing-config.d.ts.map +1 -0
  27. package/dist/llm-routing-config.js +100 -0
  28. package/dist/llm-routing-config.js.map +1 -0
  29. package/dist/registry.d.ts +7 -0
  30. package/dist/registry.d.ts.map +1 -1
  31. package/dist/registry.js +37 -1
  32. package/dist/registry.js.map +1 -1
  33. package/dist/status-projection.d.ts.map +1 -1
  34. package/dist/tmux.d.ts +7 -5
  35. package/dist/tmux.d.ts.map +1 -1
  36. package/dist/tmux.js +33 -7
  37. package/dist/tmux.js.map +1 -1
  38. package/package.json +3 -3
  39. package/dist/llm-gateway-runtime/accounts.d.ts +0 -62
  40. package/dist/llm-gateway-runtime/accounts.d.ts.map +0 -1
  41. package/dist/llm-gateway-runtime/accounts.js +0 -323
  42. package/dist/llm-gateway-runtime/accounts.js.map +0 -1
  43. package/dist/llm-gateway-runtime/model-catalog.d.ts +0 -44
  44. package/dist/llm-gateway-runtime/model-catalog.d.ts.map +0 -1
  45. package/dist/llm-gateway-runtime/model-catalog.js +0 -191
  46. package/dist/llm-gateway-runtime/model-catalog.js.map +0 -1
  47. package/dist/llm-gateway-runtime/proxy-anthropic.d.ts +0 -3
  48. package/dist/llm-gateway-runtime/proxy-anthropic.d.ts.map +0 -1
  49. package/dist/llm-gateway-runtime/proxy-anthropic.js +0 -318
  50. package/dist/llm-gateway-runtime/proxy-anthropic.js.map +0 -1
  51. package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts +0 -11
  52. package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts.map +0 -1
  53. package/dist/llm-gateway-runtime/proxy-cloud-code.js +0 -215
  54. package/dist/llm-gateway-runtime/proxy-cloud-code.js.map +0 -1
  55. package/dist/llm-gateway-runtime/proxy-openai.d.ts +0 -118
  56. package/dist/llm-gateway-runtime/proxy-openai.d.ts.map +0 -1
  57. package/dist/llm-gateway-runtime/proxy-openai.js +0 -1305
  58. package/dist/llm-gateway-runtime/proxy-openai.js.map +0 -1
@@ -1,4 +1,10 @@
1
1
  import { Hono } from "hono";
2
+ import { type LlmMeshRoutingConfig } from "../llm-routing-config.js";
3
+ export interface LocalGatewayAppOptions {
4
+ readonly routing?: LlmMeshRoutingConfig;
5
+ readonly ownerScopeRef?: string;
6
+ }
7
+ export declare function createLocalGatewayApp(options?: LocalGatewayAppOptions): Hono;
2
8
  export declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
9
  export declare function startServer(): void;
4
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,eAAO,MAAM,GAAG,4EAAa,CAAC;AAkE9B,wBAAgB,WAAW,IAAI,IAAI,CAOlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAoDlC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,IAAI,CA6FhF;AAED,eAAO,MAAM,GAAG,4EAA0B,CAAC;AAE3C,wBAAgB,WAAW,IAAI,IAAI,CASlC"}
@@ -1,70 +1,144 @@
1
+ import { randomUUID } from "node:crypto";
1
2
  import { serve } from "@hono/node-server";
3
+ import { CloudCodeRuntimeClient, CodexRuntimeClient, GeminiAdapter, OpenAIAdapter, createLlmMesh, createProviderRegistry, } from "@sentropic/llm-mesh";
4
+ import { createGatewayRouter, stubGatewayConfig, } from "@sentropic/llm-gateway";
2
5
  import { Hono } from "hono";
3
- import { acquireSession, sessionCount } from "./sticky.js";
4
- import { handleMessages } from "./proxy-anthropic.js";
5
- import { listAccountDescriptors, listRoutableModels } from "./accounts.js";
6
- import { modelCatalogResponse } from "./model-catalog.js";
7
- import { getSessionLedgerEntry, getSessionLedgerEntryForClient, listSessionLedger, } from "./session-ledger.js";
8
- export const app = new Hono();
9
- // Health — no internal state exposed
10
- app.get("/health", (c) => c.json({ ok: true }));
11
- app.get("/healthz", (c) => c.json({ ok: true }));
12
- // Session creation — called by control-plane before pod start.
13
- // Network policy enforces that pods cannot reach this endpoint.
14
- app.post("/v1/session", async (c) => {
15
- let body;
16
- try {
17
- body = await c.req.json();
18
- }
19
- catch {
20
- return c.json({ error: "invalid JSON" }, 400);
21
- }
22
- if (typeof body.sessionId !== "string" || !body.sessionId) {
23
- return c.json({ error: "sessionId (string) required" }, 400);
6
+ import { createCliLlmMeshFacade, llmMeshOwnerScopeRef, readLlmMeshConfig, } from "../llm-mesh.js";
7
+ import { parseLlmMeshRoutingConfig, routingProfiles, } from "../llm-routing-config.js";
8
+ import { getSessionLedgerEntry, getSessionLedgerEntryForClient, listSessionLedger, recordRoutePlan, recordRouteSettlement, } from "./session-ledger.js";
9
+ import { acquireSession, lookupSessionById, lookupToken, sessionCount, } from "./sticky.js";
10
+ const routingConfigFromEnvironment = () => {
11
+ const raw = process.env.H2A_LLM_MESH_ROUTING_JSON;
12
+ return raw ? parseLlmMeshRoutingConfig(raw) : undefined;
13
+ };
14
+ const runtimeMesh = () => createLlmMesh({
15
+ registry: createProviderRegistry([
16
+ new OpenAIAdapter({ client: new CodexRuntimeClient() }),
17
+ new GeminiAdapter({ client: new CloudCodeRuntimeClient() }),
18
+ ]),
19
+ });
20
+ const bearerFromHeaders = (headers) => {
21
+ const authorization = headers.authorization;
22
+ if (authorization?.toLowerCase().startsWith("bearer ")) {
23
+ return authorization.slice(7).trim();
24
24
  }
25
- try {
26
- const result = await acquireSession(body.sessionId, {
27
- ...(typeof body.provider === "string" ? { provider: body.provider } : {}),
28
- ...(typeof body.model === "string" ? { model: body.model } : {}),
25
+ return headers["x-api-key"]?.trim() || undefined;
26
+ };
27
+ const observablePlanner = (delegate) => ({
28
+ ...(delegate.listModels
29
+ ? { listModels: (subject) => delegate.listModels(subject) }
30
+ : {}),
31
+ async plan(subject, input) {
32
+ const plan = await delegate.plan(subject, input);
33
+ const session = lookupSessionById(subject.principalRef);
34
+ if (session)
35
+ recordRoutePlan(session, input, plan);
36
+ return plan;
37
+ },
38
+ prepareAttempt: (...args) => delegate.prepareAttempt(...args),
39
+ describeAffinity: (...args) => delegate.describeAffinity(...args),
40
+ promoteAffinity: (...args) => delegate.promoteAffinity(...args),
41
+ rebindAffinity: (...args) => delegate.rebindAffinity(...args),
42
+ resetAffinity: (...args) => delegate.resetAffinity(...args),
43
+ });
44
+ export function createLocalGatewayApp(options = {}) {
45
+ const routing = options.routing ?? routingConfigFromEnvironment();
46
+ const currentRouting = () => {
47
+ if (options.routing)
48
+ return options.routing;
49
+ const publicConfig = readLlmMeshConfig();
50
+ // A present config with no routing field is an intentional live reset.
51
+ // Fall back to the startup environment only when no config exists at all.
52
+ return publicConfig ? publicConfig.routing : routing;
53
+ };
54
+ const ownerScopeRef = options.ownerScopeRef ?? llmMeshOwnerScopeRef();
55
+ const facade = createCliLlmMeshFacade();
56
+ const profiles = routingProfiles(routing);
57
+ const planner = observablePlanner(facade.createRoutePlanner(runtimeMesh(), {
58
+ ...(routing?.council ? { council: routing.council } : {}),
59
+ ...(profiles ? { profiles } : {}),
60
+ }));
61
+ const callerAuth = {
62
+ async verify(headers) {
63
+ const token = bearerFromHeaders(headers);
64
+ const session = token ? await lookupToken(token) : undefined;
65
+ if (!session)
66
+ return { ok: false, reason: "invalid local gateway bearer" };
67
+ return {
68
+ ok: true,
69
+ cost: {
70
+ tenantId: ownerScopeRef,
71
+ principalId: session.sessionId,
72
+ ownerScopeRef,
73
+ ...(session.workspaceId ? { workspaceId: session.workspaceId } : {}),
74
+ source: "h2a-local-gateway",
75
+ correlationId: randomUUID(),
76
+ },
77
+ };
78
+ },
79
+ };
80
+ const routeMetering = {
81
+ settleRoute(settlement) {
82
+ recordRouteSettlement(settlement);
83
+ },
84
+ };
85
+ const gateway = createGatewayRouter({
86
+ config: { ...stubGatewayConfig, callerAuth },
87
+ routePlanner: planner,
88
+ routeMetering,
89
+ routeInput({ cost }) {
90
+ const session = lookupSessionById(cost.principalId);
91
+ const activeRouting = currentRouting();
92
+ return {
93
+ affinityKey: session?.clientSessionId ?? cost.principalId,
94
+ ...(session?.workspaceId ? { workspaceId: session.workspaceId } : {}),
95
+ ...(activeRouting?.policy ? { policyOverride: activeRouting.policy } : {}),
96
+ ...(activeRouting?.activeProfile ? { policyProfile: activeRouting.activeProfile } : {}),
97
+ ...(activeRouting?.explicit ? { explicit: activeRouting.explicit } : {}),
98
+ };
99
+ },
100
+ });
101
+ const app = new Hono();
102
+ app.get("/health", (c) => c.json({ ok: true }));
103
+ app.post("/v1/session", async (c) => {
104
+ let body;
105
+ try {
106
+ body = await c.req.json();
107
+ }
108
+ catch {
109
+ return c.json({ error: "invalid JSON" }, 400);
110
+ }
111
+ if (typeof body.sessionId !== "string" || !body.sessionId.trim()) {
112
+ return c.json({ error: "sessionId (string) required" }, 400);
113
+ }
114
+ const session = await acquireSession(body.sessionId, {
115
+ ...(typeof body.clientSessionId === "string"
116
+ ? { clientSessionId: body.clientSessionId }
117
+ : {}),
29
118
  ...(typeof body.workspaceId === "string" ? { workspaceId: body.workspaceId } : {}),
30
119
  ...(typeof body.profile === "string" ? { profile: body.profile } : {}),
31
- ...(typeof body.clientSessionId === "string" ? { clientSessionId: body.clientSessionId } : {}),
32
- ...(typeof body.reasoningEffort === "string"
33
- ? { reasoningEffort: body.reasoningEffort }
34
- : {}),
35
- ...(typeof body.requiredTransport === "string"
36
- ? { requiredTransport: body.requiredTransport }
37
- : {}),
38
120
  });
39
- return c.json(result, 201);
40
- }
41
- catch (err) {
42
- return c.json({ error: err instanceof Error ? err.message : String(err) }, 400);
43
- }
44
- });
45
- app.get("/v1/accounts", (c) => c.json({ data: listAccountDescriptors() }));
46
- app.get("/v1/models", (c) => c.json(modelCatalogResponse(listRoutableModels())));
47
- app.get("/v1/sessions", (c) => c.json({ data: listSessionLedger() }));
48
- app.get("/v1/sessions/:id", (c) => {
49
- const entry = getSessionLedgerEntry(c.req.param("id"));
50
- if (!entry)
51
- return c.json({ error: "session not found" }, 404);
52
- return c.json(entry);
53
- });
54
- // The tmux surface asks for one attested client session. This is deliberately
55
- // not the collection endpoint: a five-second status refresh must stay O(1).
56
- app.get("/v1/status/client/:clientSessionId", (c) => {
57
- const entry = getSessionLedgerEntryForClient(c.req.param("clientSessionId"));
58
- if (!entry)
59
- return c.json({ error: "client session not found" }, 404);
60
- return c.json(entry);
61
- });
62
- // Anthropic Messages proxy — pods call this with Bearer gw-<hex>
63
- app.post("/v1/messages", handleMessages);
121
+ return c.json(session, 201);
122
+ });
123
+ app.get("/v1/sessions", (c) => c.json({ data: listSessionLedger() }));
124
+ app.get("/v1/sessions/:id", (c) => {
125
+ const entry = getSessionLedgerEntry(c.req.param("id"));
126
+ return entry ? c.json(entry) : c.json({ error: "session not found" }, 404);
127
+ });
128
+ app.get("/v1/status/client/:clientSessionId", (c) => {
129
+ const entry = getSessionLedgerEntryForClient(c.req.param("clientSessionId"));
130
+ return entry ? c.json(entry) : c.json({ error: "client session not found" }, 404);
131
+ });
132
+ app.route("/", gateway);
133
+ return app;
134
+ }
135
+ export const app = createLocalGatewayApp();
64
136
  export function startServer() {
65
- const port = parseInt(process.env.PORT ?? "3001", 10);
66
- serve({ fetch: app.fetch, port }, () => {
67
- process.stdout.write(`[llm-gateway] listening on :${port} — ${sessionCount()} sessions in memory\n`);
137
+ const port = Number.parseInt(process.env.PORT ?? "3002", 10);
138
+ // Session minting is intentionally unauthenticated control-plane traffic.
139
+ // The embedded solo-dev host therefore never listens beyond loopback.
140
+ serve({ fetch: app.fetch, port, hostname: "127.0.0.1" }, () => {
141
+ process.stdout.write(`[llm-gateway] listening on :${port} — ${sessionCount()} local bearers\n`);
68
142
  });
69
143
  }
70
144
  if (process.env.NODE_ENV !== "test")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm-gateway-runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm-gateway-runtime/index.ts"],"names":[],"mappings":"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"}
@@ -1,66 +1,49 @@
1
- import type { AccountDescriptor, PublicAccountDescriptor } from "./accounts.js";
2
- import { type GatewayUpstreamTransport } from "./accounts.js";
3
- import type { RoutingTarget } from "./model-catalog.js";
1
+ import type { RoutePlan, RoutePlanInput } from "@sentropic/llm-mesh";
2
+ import type { RouteRequestSettlement } from "@sentropic/llm-gateway";
3
+ import type { SessionEntry } from "./sticky.js";
4
4
  export type GatewaySessionState = "idle" | "active" | "rate-limited";
5
+ export interface PublicAccountDescriptor {
6
+ /** Redacted mesh diagnostic reference, never an executable account id. */
7
+ readonly id: string;
8
+ readonly provider: string;
9
+ readonly label: string;
10
+ }
5
11
  export interface GatewayRateLimitSnapshot {
6
- at: string;
7
- account: PublicAccountDescriptor;
8
- retryAfterMs?: number;
12
+ readonly at: string;
13
+ readonly account: PublicAccountDescriptor;
14
+ readonly retryAfterMs?: number;
9
15
  }
10
16
  export interface GatewayFallbackSnapshot {
11
- at: string;
12
- from: PublicAccountDescriptor;
13
- to: PublicAccountDescriptor;
17
+ readonly at: string;
18
+ readonly from: PublicAccountDescriptor;
19
+ readonly to: PublicAccountDescriptor;
14
20
  }
15
21
  export interface SessionLedgerEntry {
16
- gatewaySessionId: string;
17
- clientSessionId: string;
18
- workspaceId?: string;
19
- profile?: string;
20
- account: PublicAccountDescriptor;
21
- transport: GatewayUpstreamTransport;
22
- state: GatewaySessionState;
23
- requestedModel?: string;
24
- modelId?: string;
25
- upstreamModel?: string;
26
- routePolicy?: string;
27
- routeReason?: string;
28
- createdAt: string;
29
- lastUsedAt: string;
30
- updatedAt: string;
31
- requestCount: number;
32
- /** Requests whose response body (or terminal error response) is not complete. */
33
- inFlightRequests: number;
34
- /** Overlapping requests made singular route/account details non-attributable. */
35
- detailsAmbiguous: boolean;
36
- lastRateLimit?: GatewayRateLimitSnapshot;
37
- /** Recorded only after a rebind actually succeeds; never inferred from account changes. */
38
- lastFallback?: GatewayFallbackSnapshot;
39
- }
40
- export interface UpsertSessionLedgerInput {
41
- gatewaySessionId: string;
42
- clientSessionId?: string;
43
- workspaceId?: string;
44
- profile?: string;
45
- account: AccountDescriptor;
46
- route?: RoutingTarget;
47
- now?: Date;
22
+ readonly gatewaySessionId: string;
23
+ readonly clientSessionId: string;
24
+ readonly workspaceId?: string;
25
+ readonly profile?: string;
26
+ readonly account: PublicAccountDescriptor;
27
+ readonly transport: string;
28
+ readonly state: GatewaySessionState;
29
+ readonly requestedModel?: string;
30
+ readonly modelId?: string;
31
+ readonly upstreamModel?: string;
32
+ readonly routePolicy?: string;
33
+ readonly routeReason?: string;
34
+ readonly createdAt: string;
35
+ readonly lastUsedAt: string;
36
+ readonly updatedAt: string;
37
+ readonly requestCount: number;
38
+ readonly inFlightRequests: number;
39
+ readonly detailsAmbiguous: boolean;
40
+ readonly lastRateLimit?: GatewayRateLimitSnapshot;
41
+ readonly lastFallback?: GatewayFallbackSnapshot;
48
42
  }
49
- export declare function upsertSessionLedger(input: UpsertSessionLedgerInput): SessionLedgerEntry;
50
- export declare function recordSessionRequest(gatewaySessionId: string | undefined, route?: RoutingTarget, now?: Date): SessionLedgerEntry | undefined;
51
- export declare function recordSessionActive(gatewaySessionId: string | undefined, route?: RoutingTarget, now?: Date): SessionLedgerEntry | undefined;
52
- export declare function recordSessionIdle(gatewaySessionId: string | undefined, route?: RoutingTarget, now?: Date): SessionLedgerEntry | undefined;
53
- export declare function recordSessionFallback(gatewaySessionId: string | undefined, from: AccountDescriptor, to: AccountDescriptor, route?: RoutingTarget, now?: Date): SessionLedgerEntry | undefined;
54
- export declare function recordSessionRateLimited(gatewaySessionId: string | undefined, account: AccountDescriptor, options?: {
55
- route?: RoutingTarget;
56
- retryAfterMs?: number;
57
- now?: Date;
58
- }): SessionLedgerEntry | undefined;
59
- /** Complete a terminal 429 after fallback selection/rebind has failed. */
60
- export declare function recordSessionRateLimitComplete(gatewaySessionId: string | undefined, route?: RoutingTarget, now?: Date): SessionLedgerEntry | undefined;
43
+ export declare function recordRoutePlan(session: SessionEntry, input: RoutePlanInput, plan: RoutePlan, now?: Date): void;
44
+ export declare function recordRouteSettlement(settlement: RouteRequestSettlement, now?: Date): void;
61
45
  export declare function listSessionLedger(): SessionLedgerEntry[];
62
- export declare function getSessionLedgerEntry(gatewaySessionId: string): SessionLedgerEntry | undefined;
63
- /** O(1) lookup for the exact client/tmux session status endpoint. */
46
+ export declare function getSessionLedgerEntry(sessionId: string): SessionLedgerEntry | undefined;
64
47
  export declare function getSessionLedgerEntryForClient(clientSessionId: string): SessionLedgerEntry | undefined;
65
48
  export declare function resetSessionLedger(): void;
66
49
  //# sourceMappingURL=session-ledger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-ledger.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/session-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-ledger.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/session-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,uBAAuB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACjD;AAyBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,GAAG,OAAa,GACf,IAAI,CAsCN;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,sBAAsB,EAClC,GAAG,OAAa,GACf,IAAI,CAoDN;AAED,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAExD;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEvF;AAED,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GACtB,kBAAkB,GAAG,SAAS,CAGhC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}