@duyquangnvx/agent-cli 0.22.0 → 0.24.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 (87) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/agent-cli.js +16 -12
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/built-ins/commands.d.ts +2 -2
  5. package/dist/built-ins/commands.js +2 -2
  6. package/dist/built-ins/doctor.js +0 -2
  7. package/dist/built-ins/doctor.js.map +1 -1
  8. package/dist/built-ins/install/dependency.js +2 -0
  9. package/dist/built-ins/install/dependency.js.map +1 -1
  10. package/dist/built-ins/install/global-npm.d.ts +2 -0
  11. package/dist/built-ins/install/global-npm.js +7 -3
  12. package/dist/built-ins/install/global-npm.js.map +1 -1
  13. package/dist/built-ins/install/global.d.ts +1 -1
  14. package/dist/built-ins/install/global.js +11 -7
  15. package/dist/built-ins/install/global.js.map +1 -1
  16. package/dist/built-ins/install/install.d.ts +5 -0
  17. package/dist/built-ins/install/install.js +2 -0
  18. package/dist/built-ins/install/install.js.map +1 -1
  19. package/dist/built-ins/install/release-check.d.ts +8 -0
  20. package/dist/built-ins/install/release-check.js +133 -0
  21. package/dist/built-ins/install/release-check.js.map +1 -0
  22. package/dist/built-ins/npm.d.ts +13 -3
  23. package/dist/built-ins/npm.js +13 -6
  24. package/dist/built-ins/npm.js.map +1 -1
  25. package/dist/built-ins/setup.d.ts +6 -0
  26. package/dist/built-ins/setup.js +168 -0
  27. package/dist/built-ins/setup.js.map +1 -0
  28. package/dist/built-ins/skill/home.d.ts +28 -0
  29. package/dist/built-ins/skill/home.js +116 -0
  30. package/dist/built-ins/skill/home.js.map +1 -0
  31. package/dist/built-ins/skill/install-command.d.ts +0 -13
  32. package/dist/built-ins/skill/install-command.js +7 -58
  33. package/dist/built-ins/skill/install-command.js.map +1 -1
  34. package/dist/built-ins/skill/project.d.ts +5 -0
  35. package/dist/built-ins/skill/project.js +46 -0
  36. package/dist/built-ins/skill/project.js.map +1 -0
  37. package/dist/built-ins/skill/skill.d.ts +7 -31
  38. package/dist/built-ins/skill/skill.js +18 -6
  39. package/dist/built-ins/skill/skill.js.map +1 -1
  40. package/dist/built-ins/skill/sync.d.ts +16 -0
  41. package/dist/built-ins/skill/sync.js +35 -0
  42. package/dist/built-ins/skill/sync.js.map +1 -0
  43. package/dist/built-ins/update.d.ts +2 -2
  44. package/dist/built-ins/update.js +23 -20
  45. package/dist/built-ins/update.js.map +1 -1
  46. package/dist/built-ins/upgrades.d.ts +1 -0
  47. package/dist/built-ins/upgrades.js +5 -0
  48. package/dist/built-ins/upgrades.js.map +1 -1
  49. package/dist/context/tools.d.ts +1 -0
  50. package/dist/context/tools.js +1 -1
  51. package/dist/context/tools.js.map +1 -1
  52. package/dist/define.d.ts +28 -34
  53. package/dist/define.js.map +1 -1
  54. package/dist/errors.d.ts +2 -0
  55. package/dist/errors.js +5 -1
  56. package/dist/errors.js.map +1 -1
  57. package/dist/exit-classes.js +1 -0
  58. package/dist/exit-classes.js.map +1 -1
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.js +1 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/output.js +5 -3
  63. package/dist/output.js.map +1 -1
  64. package/dist/run-cli.js +2 -6
  65. package/dist/run-cli.js.map +1 -1
  66. package/dist/run-command.js +6 -8
  67. package/dist/run-command.js.map +1 -1
  68. package/dist/runtime-codes.d.ts +1 -0
  69. package/dist/runtime-codes.js +2 -0
  70. package/dist/runtime-codes.js.map +1 -1
  71. package/docs/README.md +1 -1
  72. package/docs/getting-started.md +6 -6
  73. package/docs/guides/doctor.md +3 -4
  74. package/docs/guides/errors.md +2 -0
  75. package/docs/guides/shipping.md +35 -23
  76. package/docs/principles.md +1 -1
  77. package/docs/reference.md +1 -0
  78. package/package.json +1 -1
  79. package/dist/built-ins/skill/hub.d.ts +0 -8
  80. package/dist/built-ins/skill/hub.js +0 -114
  81. package/dist/built-ins/skill/hub.js.map +0 -1
  82. package/dist/built-ins/skill/packaged.d.ts +0 -13
  83. package/dist/built-ins/skill/packaged.js +0 -97
  84. package/dist/built-ins/skill/packaged.js.map +0 -1
  85. package/dist/built-ins/skill/usage-hint.d.ts +0 -4
  86. package/dist/built-ins/skill/usage-hint.js +0 -28
  87. package/dist/built-ins/skill/usage-hint.js.map +0 -1
@@ -1,97 +0,0 @@
1
- import { realpath } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import * as z from "zod";
4
- import { errnoOf, messageOf, orMissing } from "../../errors.js";
5
- import { agentsRow } from "../agents-md.js";
6
- import { homeOf } from "./hub.js";
7
- import { skillCopyOf, skillInstallCommand, skillVersionsOf } from "./install-command.js";
8
- // A project that is home itself has its copy under home, which shadows nothing.
9
- async function personalCopyOf(name, copy, ctx) {
10
- const home = join(homeOf(ctx.env), ".claude", "skills", name);
11
- const real = await orMissing(realpath(home));
12
- return real === undefined || real === (await orMissing(realpath(copy))) ? undefined : home;
13
- }
14
- /** What the `skill` row of a Packaged skill carries under `--json` beside its message. */
15
- export const packagedSkillDetailsSchema = z.object({
16
- copy: z.string(),
17
- copyVersion: z.string().nullable(),
18
- packageVersion: z.string().nullable(),
19
- /** A personal copy, which Claude Code prefers over the project's. */
20
- home: z.string().optional(),
21
- });
22
- function versionLabel(version) {
23
- return version ?? "(no metadata.version)";
24
- }
25
- function compared(name, { copy, copyVersion, packageVersion }, same) {
26
- const stated = `${copy} ${versionLabel(copyVersion)}`;
27
- return same
28
- ? `${stated}, the version ${name} ships`
29
- : `${stated} differs from the ${versionLabel(packageVersion)} that ${name} ships`;
30
- }
31
- /** The project root's copy against the package's, and any under home. */
32
- async function findingOf(cli, folder, install, ctx) {
33
- const { copy } = await skillCopyOf(cli, ctx.cwd);
34
- const versions = await skillVersionsOf(join(ctx.packageRoot, folder), copy);
35
- const { packageVersion } = versions;
36
- const copyVersion = versions.copyVersion ?? null;
37
- const home = await personalCopyOf(cli.name, copy, ctx);
38
- const skill = { copy, copyVersion, packageVersion, ...(home === undefined ? {} : { home }) };
39
- const head = versions.copyVersion === undefined
40
- ? `no copy of the ${cli.name} skill at ${copy}`
41
- : compared(cli.name, skill, versions.same);
42
- // Other projects may use the personal copy, so the row names it and gives no line removing it.
43
- const message = home === undefined
44
- ? head
45
- : `${head}; remove ${home}: Claude Code prefers a personal skill over the project's`;
46
- if (!versions.same) {
47
- return { state: "problem", message, fix: `${install.runAs} skill install`, skill };
48
- }
49
- return home === undefined
50
- ? { state: "ok", message, skill }
51
- : { state: "problem", message, skill };
52
- }
53
- async function notice(cli, folder, install, { builtIn, bin }, ctx) {
54
- // `doctor` and `skill install` report the copy themselves, and a one-Command CLI has no `skill install`. A run from source is the CLI's own repo, whose agent reads the source.
55
- if (builtIn || bin === undefined || cli.commands === undefined)
56
- return;
57
- let finding;
58
- try {
59
- finding = await findingOf(cli, folder, install, ctx);
60
- }
61
- catch (error) {
62
- // A file the Runtime cannot read must not stop the Command the Notice rides on; a bug still does.
63
- if (errnoOf(error) === undefined)
64
- throw error;
65
- ctx.notice(`could not check the ${cli.name} skill: ${messageOf(error)}`);
66
- return;
67
- }
68
- if (finding.state !== "problem")
69
- return;
70
- ctx.notice(finding.fix === undefined ? finding.message : `${finding.message}; run \`${finding.fix}\``);
71
- }
72
- /** A skill shipped in the package at `packaged`, which `skill install` copies to the project root. */
73
- export function packagedSkill(cli, { packaged: folder, agents: text }, install) {
74
- const agents = text === undefined ? undefined : { name: cli.name, text };
75
- return {
76
- kind: "packaged",
77
- builtIns: { skill: { install: skillInstallCommand(cli, folder, agents) } },
78
- rows: [
79
- { name: "skill", advisory: true, run: (ctx) => findingOf(cli, folder, install, ctx) },
80
- ...(agents === undefined ? [] : [agentsRow(agents, install)]),
81
- ],
82
- notice: (launch, ctx) => notice(cli, folder, install, launch, ctx),
83
- differing: async ({ cwd, packageRoot }) => {
84
- const { copy } = await skillCopyOf(cli, cwd);
85
- const { copyVersion, packageVersion, same } = await skillVersionsOf(join(packageRoot, folder), copy);
86
- return copyVersion === undefined || same
87
- ? []
88
- : [compared(cli.name, { copy, copyVersion, packageVersion }, false)];
89
- },
90
- // The copy is compared with the package on disk, whatever the version asked about.
91
- nextAt: async (_version, ctx) => {
92
- const { fix } = await findingOf(cli, folder, install, ctx);
93
- return fix === undefined ? [] : [fix];
94
- },
95
- };
96
- }
97
- //# sourceMappingURL=packaged.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packaged.js","sourceRoot":"","sources":["../../../src/built-ins/skill/packaged.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGzF,gFAAgF;AAChF,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,IAAY,EACZ,GAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,qEAAqE;IACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAMH,SAAS,YAAY,CAAC,OAAsB;IAC1C,OAAO,OAAO,IAAI,uBAAuB,CAAC;AAC5C,CAAC;AAED,SAAS,QAAQ,CACf,IAAY,EACZ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAwB,EAC3D,IAAa;IAEb,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;IACtD,OAAO,IAAI;QACT,CAAC,CAAC,GAAG,MAAM,iBAAiB,IAAI,QAAQ;QACxC,CAAC,CAAC,GAAG,MAAM,qBAAqB,YAAY,CAAC,cAAc,CAAC,SAAS,IAAI,QAAQ,CAAC;AACtF,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,SAAS,CACtB,GAAa,EACb,MAAc,EACd,OAAgB,EAChB,GAAY;IAEZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7F,MAAM,IAAI,GACR,QAAQ,CAAC,WAAW,KAAK,SAAS;QAChC,CAAC,CAAC,kBAAkB,GAAG,CAAC,IAAI,aAAa,IAAI,EAAE;QAC/C,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,+FAA+F;IAC/F,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,IAAI,YAAY,IAAI,2DAA2D,CAAC;IACzF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QACjC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,GAAa,EACb,MAAc,EACd,OAAgB,EAChB,EAAE,OAAO,EAAE,GAAG,EAAqB,EACnC,GAAY;IAEZ,gLAAgL;IAChL,IAAI,OAAO,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO;IACvE,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kGAAkG;QAClG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,uBAAuB,GAAG,CAAC,IAAI,WAAW,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO;IACxC,GAAG,CAAC,MAAM,CACR,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,GAAG,IAAI,CAC3F,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAC3B,GAAa,EACb,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAuB,EACvD,OAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;QAC1E,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;YACrF,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAC9D;QACD,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC;QAClE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE;YACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CACjE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EACzB,IAAI,CACL,CAAC;YACF,OAAO,WAAW,KAAK,SAAS,IAAI,IAAI;gBACtC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,mFAAmF;QACnF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { Cli } from "../../define.js";
2
- import { type SkillPlace } from "./skill.js";
3
- /** A usage error whose hint names each Skill copy that differs from this build, since one may have named the input. */
4
- export declare function withDifferingSkill(error: unknown, cli: Cli, place: SkillPlace, runAs: string): Promise<unknown>;
@@ -1,28 +0,0 @@
1
- import { INVALID_INPUT, UNKNOWN_COMMAND, UNKNOWN_OPTION } from "../../command-line/usage.js";
2
- import { errnoOf, UsageError } from "../../errors.js";
3
- import { installOf } from "../install/install.js";
4
- import { skillOf } from "./skill.js";
5
- const SKILL_USAGE_CODES = new Set([UNKNOWN_OPTION, UNKNOWN_COMMAND, INVALID_INPUT]);
6
- /** A usage error whose hint names each Skill copy that differs from this build, since one may have named the input. */
7
- export async function withDifferingSkill(error, cli, place, runAs) {
8
- if (!(error instanceof UsageError) || !SKILL_USAGE_CODES.has(error.code))
9
- return error;
10
- let differing;
11
- try {
12
- differing = await skillOf(cli, installOf(cli)).differing(place);
13
- }
14
- catch (lookup) {
15
- // A skill the Runtime cannot read leaves the usage error as it was; a bug still surfaces.
16
- if (errnoOf(lookup) === undefined)
17
- throw lookup;
18
- return error;
19
- }
20
- if (differing.length === 0)
21
- return error;
22
- return new UsageError({
23
- code: error.code,
24
- message: error.message,
25
- hint: `${error.hint}; the ${cli.name} skill may name what this build does not know: ${differing.join("; ")}; run \`${runAs} doctor\` to see how to update it`,
26
- });
27
- }
28
- //# sourceMappingURL=usage-hint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage-hint.js","sourceRoot":"","sources":["../../../src/built-ins/skill/usage-hint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7F,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAmB,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;AAEpF,uHAAuH;AACvH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAc,EACd,GAAQ,EACR,KAAiB,EACjB,KAAa;IAEb,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,0FAA0F;QAC1F,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS;YAAE,MAAM,MAAM,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,kDAAkD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,mCAAmC;KAC9J,CAAC,CAAC;AACL,CAAC"}