@botiverse/oar 0.15.1 → 0.16.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/README.md +4 -3
- package/dist/observe/session-view-events.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +2 -0
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-fold.js +1 -1
- package/dist/observe/session-view-fold.js.map +1 -1
- package/dist/observe/session-view.d.ts +12 -0
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/session-view.js.map +1 -1
- package/dist/observe/tool-activity.d.ts +9 -2
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +34 -9
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/observe/tool-groups.d.ts.map +1 -1
- package/dist/observe/tool-groups.js +1 -0
- package/dist/observe/tool-groups.js.map +1 -1
- package/dist/runtimes/cursor/index.d.ts +6 -3
- package/dist/runtimes/cursor/index.d.ts.map +1 -1
- package/dist/runtimes/cursor/index.js +6 -3
- package/dist/runtimes/cursor/index.js.map +1 -1
- package/dist/runtimes/cursor/installation.d.ts +7 -6
- package/dist/runtimes/cursor/installation.d.ts.map +1 -1
- package/dist/runtimes/cursor/installation.js +35 -13
- package/dist/runtimes/cursor/installation.js.map +1 -1
- package/dist/runtimes/cursor/list-models.d.ts +7 -8
- package/dist/runtimes/cursor/list-models.d.ts.map +1 -1
- package/dist/runtimes/cursor/list-models.js +50 -82
- package/dist/runtimes/cursor/list-models.js.map +1 -1
- package/dist/runtimes/cursor/model.d.ts +25 -0
- package/dist/runtimes/cursor/model.d.ts.map +1 -0
- package/dist/runtimes/cursor/model.js +98 -0
- package/dist/runtimes/cursor/model.js.map +1 -0
- package/dist/runtimes/cursor/projection.d.ts +40 -0
- package/dist/runtimes/cursor/projection.d.ts.map +1 -0
- package/dist/runtimes/cursor/projection.js +205 -0
- package/dist/runtimes/cursor/projection.js.map +1 -0
- package/dist/runtimes/cursor/run.d.ts +33 -0
- package/dist/runtimes/cursor/run.d.ts.map +1 -0
- package/dist/runtimes/cursor/run.js +68 -0
- package/dist/runtimes/cursor/run.js.map +1 -0
- package/dist/runtimes/cursor/sdk.d.ts +64 -0
- package/dist/runtimes/cursor/sdk.d.ts.map +1 -0
- package/dist/runtimes/cursor/sdk.js +50 -0
- package/dist/runtimes/cursor/sdk.js.map +1 -0
- package/dist/runtimes/cursor/session.d.ts +4 -37
- package/dist/runtimes/cursor/session.d.ts.map +1 -1
- package/dist/runtimes/cursor/session.js +265 -71
- package/dist/runtimes/cursor/session.js.map +1 -1
- package/dist/shared/acp/client-app.d.ts +0 -2
- package/dist/shared/acp/client-app.d.ts.map +1 -1
- package/dist/shared/acp/client-app.js +1 -8
- package/dist/shared/acp/client-app.js.map +1 -1
- package/dist/shared/acp/effort.d.ts +1 -1
- package/dist/shared/acp/effort.js +1 -1
- package/dist/shared/acp/model.d.ts +5 -8
- package/dist/shared/acp/model.d.ts.map +1 -1
- package/dist/shared/acp/model.js +6 -14
- package/dist/shared/acp/model.js.map +1 -1
- package/dist/shared/acp/process.d.ts +0 -2
- package/dist/shared/acp/process.d.ts.map +1 -1
- package/dist/shared/acp/process.js +2 -7
- package/dist/shared/acp/process.js.map +1 -1
- package/dist/shared/acp/profile.d.ts +2 -17
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js +1 -5
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/records.d.ts +1 -3
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +6 -14
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/acp/session.d.ts.map +1 -1
- package/dist/shared/acp/session.js +1 -6
- package/dist/shared/acp/session.js.map +1 -1
- package/dist/shared/failure-class.js +1 -1
- package/dist/shared/failure-class.js.map +1 -1
- package/dist/shared/update.d.ts +1 -1
- package/dist/shared/update.d.ts.map +1 -1
- package/dist/shared/update.js +3 -4
- package/dist/shared/update.js.map +1 -1
- package/package.json +6 -5
- package/dist/runtimes/cursor/update.d.ts +0 -19
- package/dist/runtimes/cursor/update.d.ts.map +0 -1
- package/dist/runtimes/cursor/update.js +0 -88
- package/dist/runtimes/cursor/update.js.map +0 -1
- package/dist/shared/acp/vendor-updates.d.ts +0 -7
- package/dist/shared/acp/vendor-updates.d.ts.map +0 -1
- package/dist/shared/acp/vendor-updates.js +0 -46
- package/dist/shared/acp/vendor-updates.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botiverse/oar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "A programming interface for all agent harnesses: provider-independent contracts for controlling and observing agent runtimes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -51,11 +51,12 @@
|
|
|
51
51
|
"license": "Apache-2.0",
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@agentclientprotocol/sdk": "^1.4.0",
|
|
54
|
-
"
|
|
55
|
-
"which": "^2.0.2",
|
|
56
|
-
"@earendil-works/pi-coding-agent": "^1.0.0",
|
|
54
|
+
"@cursor/sdk": "1.0.35",
|
|
57
55
|
"@earendil-works/pi-ai": "^1.0.0",
|
|
58
|
-
"
|
|
56
|
+
"@earendil-works/pi-coding-agent": "^1.0.0",
|
|
57
|
+
"cross-spawn": "^7.0.6",
|
|
58
|
+
"undici": "8.10.2",
|
|
59
|
+
"which": "^2.0.2"
|
|
59
60
|
},
|
|
60
61
|
"devDependencies": {
|
|
61
62
|
"@types/cross-spawn": "^6.0.6",
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { AvailableInstallation } from "../../contracts/installation.js";
|
|
2
|
-
import type { UpdateCheck, UpdateChecker, UpgradeOptions, UpgradeResult } from "../../contracts/update.js";
|
|
3
|
-
/**
|
|
4
|
-
* cursor-agent 2026.09.28 reports `latestVersion` and a `latestStatus` of
|
|
5
|
-
* `up_to_date`, `update_available`, `disabled` (the `static` channel) or
|
|
6
|
-
* `unavailable` in `about --format json`, without a login. Builds before it
|
|
7
|
-
* (2026.08.11) report neither; for them the check asks the release service
|
|
8
|
-
* cursor-agent's own updater asks, for the configured channel.
|
|
9
|
-
*/
|
|
10
|
-
export declare function projectCursorAbout(installed: string, about: unknown): UpdateCheck;
|
|
11
|
-
export interface CursorUpdateSources {
|
|
12
|
-
/** Connect RPC answering `{ channel }` with `{ version, url }`. */
|
|
13
|
-
readonly releases: string;
|
|
14
|
-
readonly configPath: () => string;
|
|
15
|
-
}
|
|
16
|
-
export declare function cursorUpdateCheck(from?: CursorUpdateSources): UpdateChecker;
|
|
17
|
-
export declare const cursorCheckUpdate: UpdateChecker;
|
|
18
|
-
export declare function cursorUpgrade(installation: AvailableInstallation, options?: UpgradeOptions): Promise<UpgradeResult>;
|
|
19
|
-
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAsB,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAY/H;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAkBjF;AAED,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC;CACnC;AAsCD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,mBAA6B,GAAG,aAAa,CAcpF;AAED,eAAO,MAAM,iBAAiB,eAAsB,CAAC;AAErD,wBAAsB,aAAa,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAGzH"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { asRecord, parseJson } from "../../shared/json.js";
|
|
5
|
-
import { CHECK_TIMEOUT_MS, comparedCheck, executableUpdate, runCheckCommand, upgradeExecutable, } from "../../shared/update.js";
|
|
6
|
-
const SOURCE = "cursor-agent about --format json";
|
|
7
|
-
/**
|
|
8
|
-
* cursor-agent 2026.09.28 reports `latestVersion` and a `latestStatus` of
|
|
9
|
-
* `up_to_date`, `update_available`, `disabled` (the `static` channel) or
|
|
10
|
-
* `unavailable` in `about --format json`, without a login. Builds before it
|
|
11
|
-
* (2026.08.11) report neither; for them the check asks the release service
|
|
12
|
-
* cursor-agent's own updater asks, for the configured channel.
|
|
13
|
-
*/
|
|
14
|
-
export function projectCursorAbout(installed, about) {
|
|
15
|
-
const fields = asRecord(about);
|
|
16
|
-
const status = fields?.latestStatus;
|
|
17
|
-
if (status === "disabled") {
|
|
18
|
-
return { kind: "unavailable", reason: "updates_disabled", detail: "cursor-agent is on the static channel", source: SOURCE };
|
|
19
|
-
}
|
|
20
|
-
const latest = fields?.latestVersion;
|
|
21
|
-
if (typeof latest !== "string" || status === "unavailable") {
|
|
22
|
-
return { kind: "unavailable", reason: "lookup_failed", detail: "cursor-agent reports no latest version", source: SOURCE };
|
|
23
|
-
}
|
|
24
|
-
const check = comparedCheck(installed, latest, SOURCE);
|
|
25
|
-
if (check.kind !== "ok") {
|
|
26
|
-
return check;
|
|
27
|
-
}
|
|
28
|
-
if (status === "update_available" || status === "up_to_date") {
|
|
29
|
-
return { ...check, updateAvailable: status === "update_available" };
|
|
30
|
-
}
|
|
31
|
-
return check;
|
|
32
|
-
}
|
|
33
|
-
const sources = {
|
|
34
|
-
releases: "https://api2.cursor.sh/aiserver.v1.DashboardService/GetCliDownloadUrl",
|
|
35
|
-
configPath: () => path.join(homedir(), ".cursor", "cli-config.json"),
|
|
36
|
-
};
|
|
37
|
-
function cursorChannel(configPath) {
|
|
38
|
-
try {
|
|
39
|
-
const channel = asRecord(parseJson(readFileSync(configPath, "utf8")))?.channel;
|
|
40
|
-
return typeof channel === "string" && channel !== "" ? channel : "prod";
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return "prod";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async function releaseServiceCheck(installed, from, timeoutMs) {
|
|
47
|
-
const channel = cursorChannel(from.configPath());
|
|
48
|
-
if (channel === "static") {
|
|
49
|
-
return { kind: "unavailable", reason: "updates_disabled", detail: "cursor-agent is on the static channel" };
|
|
50
|
-
}
|
|
51
|
-
try {
|
|
52
|
-
const response = await fetch(from.releases, {
|
|
53
|
-
method: "POST",
|
|
54
|
-
headers: { "content-type": "application/json", "connect-protocol-version": "1" },
|
|
55
|
-
body: JSON.stringify({ channel }),
|
|
56
|
-
signal: AbortSignal.timeout(timeoutMs),
|
|
57
|
-
});
|
|
58
|
-
const version = asRecord(parseJson(await response.text()))?.version;
|
|
59
|
-
return response.ok && typeof version === "string"
|
|
60
|
-
? comparedCheck(installed, version, from.releases, channel)
|
|
61
|
-
: { kind: "unavailable", reason: "lookup_failed", detail: `HTTP ${String(response.status)}`, source: from.releases };
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
65
|
-
return { kind: "unavailable", reason: "lookup_failed", detail, source: from.releases };
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export function cursorUpdateCheck(from = sources) {
|
|
69
|
-
return async (installation, options = {}) => {
|
|
70
|
-
const update = executableUpdate(installation);
|
|
71
|
-
if (update.kind === "unavailable") {
|
|
72
|
-
return update.check;
|
|
73
|
-
}
|
|
74
|
-
const timeoutMs = options.timeoutMs ?? CHECK_TIMEOUT_MS;
|
|
75
|
-
const { json } = await runCheckCommand(update.installation.command, ["about", "--format", "json"], timeoutMs);
|
|
76
|
-
const about = asRecord(json);
|
|
77
|
-
if (about !== null && about.latestStatus === undefined && about.latestVersion === undefined) {
|
|
78
|
-
return releaseServiceCheck(update.installed, from, timeoutMs);
|
|
79
|
-
}
|
|
80
|
-
return projectCursorAbout(update.installed, json);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
export const cursorCheckUpdate = cursorUpdateCheck();
|
|
84
|
-
export async function cursorUpgrade(installation, options) {
|
|
85
|
-
const result = await upgradeExecutable(installation, { check: cursorCheckUpdate, args: ["update"] }, options);
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { AnyMessage, SessionNotification } from "@agentclientprotocol/sdk";
|
|
2
|
-
import { type JsonRecord } from "../json.js";
|
|
3
|
-
/** A stream transform that carries the listed vendor update kinds past the SDK's parse. */
|
|
4
|
-
export declare function vendorSessionUpdateCarrier(kinds: readonly string[]): TransformStream<AnyMessage, AnyMessage>;
|
|
5
|
-
/** The vendor update a carried frame holds, or null for a standard one. */
|
|
6
|
-
export declare function carriedVendorUpdate(notification: SessionNotification): JsonRecord | null;
|
|
7
|
-
//# sourceMappingURL=vendor-updates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-updates.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/vendor-updates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AA6BvD,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAQ5G;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,GAAG,UAAU,GAAG,IAAI,CAOxF"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { asRecord } from "../json.js";
|
|
2
|
-
/**
|
|
3
|
-
* Vendor `session/update` kinds the SDK would drop. SDK 1.4.0 parses every
|
|
4
|
-
* `session/update` against a closed union of standard kinds and swallows the
|
|
5
|
-
* frame when the parse fails ("Error handling notification"), so cursor-agent
|
|
6
|
-
* 2026.09.28's `subagent_spawned` / `subagent_state_update` never reach a
|
|
7
|
-
* handler. The frame is carried through as a standard `session_info_update`
|
|
8
|
-
* whose `_meta` (an open record the SDK keeps as is) holds the original
|
|
9
|
-
* update, and the recorder restores it. Renaming the method instead would
|
|
10
|
-
* move the frame to another handler chain, which the SDK dispatches without
|
|
11
|
-
* ordering against `session/update`; this way it stays in wire order.
|
|
12
|
-
*/
|
|
13
|
-
const carrierKey = "oar/vendorSessionUpdate";
|
|
14
|
-
function disguise(message, kinds) {
|
|
15
|
-
if (Array.isArray(message)) {
|
|
16
|
-
return message.map((item) => disguise(item, kinds));
|
|
17
|
-
}
|
|
18
|
-
const frame = asRecord(message);
|
|
19
|
-
const params = asRecord(frame?.params);
|
|
20
|
-
const update = asRecord(params?.update);
|
|
21
|
-
const kind = update?.sessionUpdate;
|
|
22
|
-
if (frame === null || frame.method !== "session/update" || params === null || typeof kind !== "string" || !kinds.has(kind)) {
|
|
23
|
-
return message;
|
|
24
|
-
}
|
|
25
|
-
return { ...frame, params: { ...params, update: { sessionUpdate: "session_info_update", _meta: { [carrierKey]: update } } } };
|
|
26
|
-
}
|
|
27
|
-
/** A stream transform that carries the listed vendor update kinds past the SDK's parse. */
|
|
28
|
-
export function vendorSessionUpdateCarrier(kinds) {
|
|
29
|
-
const listed = new Set(kinds);
|
|
30
|
-
return new TransformStream({
|
|
31
|
-
transform(message, controller) {
|
|
32
|
-
// oxlint-disable-next-line typescript/consistent-type-assertions, typescript/no-unsafe-type-assertion -- Only the update payload changes; the JSON-RPC envelope keeps its shape.
|
|
33
|
-
controller.enqueue(listed.size === 0 ? message : disguise(message, listed));
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
/** The vendor update a carried frame holds, or null for a standard one. */
|
|
38
|
-
export function carriedVendorUpdate(notification) {
|
|
39
|
-
const update = asRecord(notification.update);
|
|
40
|
-
if (update?.sessionUpdate !== "session_info_update") {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
// oxlint-disable-next-line eslint/no-underscore-dangle -- `_meta` is the ACP extension envelope.
|
|
44
|
-
return asRecord(asRecord(update._meta)?.[carrierKey]);
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=vendor-updates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-updates.js","sourceRoot":"","sources":["../../../src/shared/acp/vendor-updates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAE7C,SAAS,QAAQ,CAAC,OAAgB,EAAE,KAA0B;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,EAAE,aAAa,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3H,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;AAChI,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,eAAe,CAAyB;QACjD,SAAS,CAAC,OAAO,EAAE,UAAU;YAC3B,iLAAiL;YACjL,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAe,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,YAAiC;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,aAAa,KAAK,qBAAqB,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,iGAAiG;IACjG,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC"}
|