vskill 1.0.20 → 1.1.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.
Files changed (82) hide show
  1. package/README.md +2 -0
  2. package/agents.json +1 -1
  3. package/dist/agents/agents-registry.d.ts +7 -0
  4. package/dist/agents/agents-registry.js +4 -0
  5. package/dist/agents/agents-registry.js.map +1 -1
  6. package/dist/bin.js +0 -0
  7. package/dist/commands/add.d.ts +7 -0
  8. package/dist/commands/add.js +220 -59
  9. package/dist/commands/add.js.map +1 -1
  10. package/dist/commands/check.d.ts +41 -4
  11. package/dist/commands/check.js +112 -25
  12. package/dist/commands/check.js.map +1 -1
  13. package/dist/commands/cleanup.d.ts +0 -1
  14. package/dist/commands/cleanup.js +71 -80
  15. package/dist/commands/cleanup.js.map +1 -1
  16. package/dist/commands/remove.js +97 -61
  17. package/dist/commands/remove.js.map +1 -1
  18. package/dist/commands/update.js +15 -2
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/discovery/github-tree.js +56 -0
  21. package/dist/discovery/github-tree.js.map +1 -1
  22. package/dist/eval-server/api-routes.js +16 -10
  23. package/dist/eval-server/api-routes.js.map +1 -1
  24. package/dist/eval-server/git-routes.js +132 -2
  25. package/dist/eval-server/git-routes.js.map +1 -1
  26. package/dist/eval-server/plugin-cli-routes.js +14 -2
  27. package/dist/eval-server/plugin-cli-routes.js.map +1 -1
  28. package/dist/eval-server/plugin-cli.js +4 -1
  29. package/dist/eval-server/plugin-cli.js.map +1 -1
  30. package/dist/eval-server/source-link.js +3 -0
  31. package/dist/eval-server/source-link.js.map +1 -1
  32. package/dist/eval-server/utils/which.js +7 -1
  33. package/dist/eval-server/utils/which.js.map +1 -1
  34. package/dist/eval-ui/assets/{CreateSkillPage-gG-MYioa.js → CreateSkillPage-ENMve2K8.js} +1 -1
  35. package/dist/eval-ui/assets/{FindSkillsPalette-DgVp_buC.js → FindSkillsPalette-BMVKCk6E.js} +2 -2
  36. package/dist/eval-ui/assets/{SearchPaletteCore-D2gKxOTT.js → SearchPaletteCore-C9G-ySXc.js} +1 -1
  37. package/dist/eval-ui/assets/SkillDetailPanel-BCJj8p79.js +1 -0
  38. package/dist/eval-ui/assets/{UpdateDropdown-B9rCyfnR.js → UpdateDropdown-C4BH7W_M.js} +1 -1
  39. package/dist/eval-ui/assets/main-tzMA8J07.js +87 -0
  40. package/dist/eval-ui/index.html +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/installer/canonical.js +14 -0
  44. package/dist/installer/canonical.js.map +1 -1
  45. package/dist/installer/multi-install.d.ts +47 -1
  46. package/dist/installer/multi-install.js +141 -28
  47. package/dist/installer/multi-install.js.map +1 -1
  48. package/dist/installer/transformers/aider.js +9 -3
  49. package/dist/installer/transformers/aider.js.map +1 -1
  50. package/dist/installer/transformers/github-copilot.js +4 -2
  51. package/dist/installer/transformers/github-copilot.js.map +1 -1
  52. package/dist/installer/transformers/index.d.ts +7 -1
  53. package/dist/lib/keychain.js +12 -5
  54. package/dist/lib/keychain.js.map +1 -1
  55. package/dist/lib/skill-lifecycle.d.ts +7 -1
  56. package/dist/lib/skill-lifecycle.js +13 -1
  57. package/dist/lib/skill-lifecycle.js.map +1 -1
  58. package/dist/lockfile/local-root.d.ts +7 -0
  59. package/dist/lockfile/local-root.js +25 -0
  60. package/dist/lockfile/local-root.js.map +1 -0
  61. package/dist/marketplace/manifest-conflict.d.ts +63 -0
  62. package/dist/marketplace/manifest-conflict.js +181 -0
  63. package/dist/marketplace/manifest-conflict.js.map +1 -0
  64. package/dist/updater/source-fetcher.d.ts +6 -0
  65. package/dist/updater/source-fetcher.js +4 -2
  66. package/dist/updater/source-fetcher.js.map +1 -1
  67. package/dist/utils/claude-plugin.js +8 -0
  68. package/dist/utils/claude-plugin.js.map +1 -1
  69. package/dist/utils/resolve-binary.d.ts +3 -0
  70. package/dist/utils/resolve-binary.js +24 -0
  71. package/dist/utils/resolve-binary.js.map +1 -1
  72. package/dist/utils/validation.d.ts +12 -5
  73. package/dist/utils/validation.js +33 -2
  74. package/dist/utils/validation.js.map +1 -1
  75. package/package.json +9 -4
  76. package/dist/eval-ui/assets/SkillDetailPanel-Ioc5XaDA.js +0 -1
  77. package/dist/eval-ui/assets/main-sUAgJ9SV.js +0 -87
  78. package/dist/sidecar/eval-ui-manifest.json +0 -1
  79. package/dist/sidecar/sea-config.json +0 -57
  80. package/dist/sidecar/sea-prep.blob +0 -0
  81. package/dist/sidecar/server.cjs +0 -141627
  82. package/dist/sidecar/vskill-version.txt +0 -1
@@ -3,7 +3,10 @@
3
3
  //
4
4
  // Reads a skill's SKILL.md frontmatter and verifies that every declared
5
5
  // dependency is satisfied before the skill runs:
6
- // - mcpDeps[] → present in ~/.claude/mcp.json or project .claude/mcp.json
6
+ // - mcpDeps[] → present in any known Claude config: project .mcp.json /
7
+ // .claude/mcp.json, ~/.claude/mcp.json, Claude Desktop, or
8
+ // ~/.claude.json (both top-level mcpServers and the
9
+ // per-project projects[<dir>].mcpServers map)
7
10
  // - secrets[] → resolvable via env or .env.local (resolveCredential)
8
11
  // - runtime.python → `python3 --version` ≥ declared minimum
9
12
  // - runtime.pip → declared (informational; we don't auto-install)
@@ -58,30 +61,95 @@ export function findSkillDir(name, root) {
58
61
  }
59
62
  return null;
60
63
  }
64
+ function hasServer(container, serverName) {
65
+ return (!!container &&
66
+ typeof container === "object" &&
67
+ serverName in container);
68
+ }
69
+ function readJson(path) {
70
+ if (!existsSync(path))
71
+ return null;
72
+ try {
73
+ return JSON.parse(readFileSync(path, "utf-8"));
74
+ }
75
+ catch {
76
+ return null; // malformed config is treated as "not configured here"
77
+ }
78
+ }
61
79
  /**
62
- * Check whether a named MCP server is configured in any known Claude config
63
- * file. Returns "configured" if found, "missing" otherwise. Tolerant of
64
- * malformed JSON — a parse error is treated as "not configured here".
80
+ * Locate a named MCP server across every known Claude config layout, reporting
81
+ * WHERE it was found.
82
+ *
83
+ * Claude Code stores servers in three different shapes, and a skill can legally
84
+ * depend on any of them:
85
+ * - <projectRoot>/.mcp.json → checked-in project servers
86
+ * - <projectRoot>/.claude/mcp.json → local project servers
87
+ * - ~/.claude.json mcpServers → user-global servers
88
+ * - ~/.claude.json projects[<dir>].mcpServers → per-project servers (the common case
89
+ * for anything added with `claude mcp add`)
90
+ * - ~/.claude/mcp.json → user-global servers
91
+ * - Claude Desktop's claude_desktop_config.json
92
+ *
93
+ * `homeDir` is injectable so tests can exercise the user-level layouts without
94
+ * touching the real home directory.
65
95
  */
66
- export function checkMcpConfigured(serverName, projectRoot) {
67
- const candidates = [
68
- join(projectRoot, ".claude", "mcp.json"),
69
- join(homedir(), ".claude", "mcp.json"),
70
- join(homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json"),
96
+ export function locateMcpServer(serverName, projectRoot, homeDir = homedir()) {
97
+ const fileCandidates = [
98
+ { path: join(projectRoot, ".mcp.json"), scope: "project-file" },
99
+ { path: join(projectRoot, ".claude", "mcp.json"), scope: "project-file" },
100
+ { path: join(homeDir, ".claude", "mcp.json"), scope: "user-global" },
101
+ {
102
+ path: join(homeDir, "Library", "Application Support", "Claude", "claude_desktop_config.json"),
103
+ scope: "desktop",
104
+ },
71
105
  ];
72
- for (const p of candidates) {
73
- if (!existsSync(p))
74
- continue;
75
- try {
76
- const cfg = JSON.parse(readFileSync(p, "utf-8"));
77
- const servers = cfg.mcpServers;
78
- if (servers && typeof servers === "object" && serverName in servers) {
79
- return "configured";
106
+ for (const { path, scope } of fileCandidates) {
107
+ const cfg = readJson(path);
108
+ if (cfg && hasServer(cfg.mcpServers, serverName)) {
109
+ return { status: "configured", scope, source: path };
110
+ }
111
+ }
112
+ // ~/.claude.json carries BOTH a global map and a per-project map.
113
+ const claudeJsonPath = join(homeDir, ".claude.json");
114
+ const claudeJson = readJson(claudeJsonPath);
115
+ if (claudeJson) {
116
+ if (hasServer(claudeJson.mcpServers, serverName)) {
117
+ return { status: "configured", scope: "user-global", source: claudeJsonPath };
118
+ }
119
+ const projects = claudeJson.projects;
120
+ if (projects && typeof projects === "object") {
121
+ const entries = Object.entries(projects);
122
+ // Prefer the project being checked; fall back to any other project so the
123
+ // user is told the server exists but is scoped elsewhere.
124
+ const resolvedRoot = resolve(projectRoot);
125
+ let fallback = null;
126
+ for (const [dir, value] of entries) {
127
+ if (!value || typeof value !== "object")
128
+ continue;
129
+ if (!hasServer(value.mcpServers, serverName))
130
+ continue;
131
+ const hit = {
132
+ status: "configured",
133
+ scope: "project-scoped",
134
+ source: claudeJsonPath,
135
+ projectPath: dir,
136
+ };
137
+ if (resolve(dir) === resolvedRoot)
138
+ return hit;
139
+ fallback ??= { ...hit, otherProject: true };
80
140
  }
141
+ if (fallback)
142
+ return fallback;
81
143
  }
82
- catch { /* ignore parse error */ }
83
144
  }
84
- return "missing";
145
+ return { status: "missing" };
146
+ }
147
+ /**
148
+ * Back-compatible wrapper: "configured" if the server is registered anywhere,
149
+ * "missing" otherwise. Prefer `locateMcpServer` when the scope matters.
150
+ */
151
+ export function checkMcpConfigured(serverName, projectRoot, homeDir = homedir()) {
152
+ return locateMcpServer(serverName, projectRoot, homeDir).status;
85
153
  }
86
154
  /**
87
155
  * Compare a `python3 --version` output line ("Python 3.11.4") against a
@@ -123,12 +191,31 @@ export function buildCheckReport(skillName, projectRoot) {
123
191
  }
124
192
  const meta = buildSkillMetadata(dir, "source", projectRoot);
125
193
  const mcps = (meta.mcpDeps ?? []).map((name) => {
126
- const status = checkMcpConfigured(name, projectRoot);
127
- return {
128
- name,
129
- status: status === "configured" ? "ok" : "missing",
130
- message: status === "configured" ? "configured" : "not configured in any known Claude config",
131
- };
194
+ const found = locateMcpServer(name, projectRoot);
195
+ if (found.status === "missing") {
196
+ return {
197
+ name,
198
+ status: "missing",
199
+ message: "not configured in any known Claude config",
200
+ };
201
+ }
202
+ if (found.scope === "project-scoped") {
203
+ return found.otherProject
204
+ ? {
205
+ name,
206
+ status: "warning",
207
+ message: `configured, but project-scoped to ${found.projectPath} — not this project`,
208
+ }
209
+ : {
210
+ name,
211
+ status: "ok",
212
+ message: `configured (project-scoped: ${found.projectPath})`,
213
+ };
214
+ }
215
+ const where = found.scope === "user-global" ? "user global"
216
+ : found.scope === "desktop" ? "Claude Desktop"
217
+ : found.source ?? "project";
218
+ return { name, status: "ok", message: `configured (${where})` };
132
219
  });
133
220
  const secretStatuses = resolveAllCredentials(meta.secrets ?? [], dir);
134
221
  const secrets = secretStatuses.map((s) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  interface CleanupOptions {
2
- /** 0724 T-008: dry-run preview, no subprocess. */
3
2
  dryRun?: boolean;
4
3
  }
5
4
  export declare function cleanupCommand(opts?: CleanupOptions): Promise<void>;
@@ -1,97 +1,88 @@
1
- // ---------------------------------------------------------------------------
2
- // vskill cleanup -- remove stale plugin entries and orphaned cache
3
- // ---------------------------------------------------------------------------
4
- import { existsSync, readdirSync, rmSync } from "node:fs";
1
+ // Reconcile missing plugin registrations without claiming ownership of
2
+ // plugins installed by Claude, Codex, another project, or another installer.
3
+ import { existsSync, readFileSync } from "node:fs";
5
4
  import { join } from "node:path";
6
5
  import { homedir } from "node:os";
7
6
  import { readLockfile } from "../lockfile/index.js";
8
- import { listEnabledPlugins, purgeStalePlugins } from "../settings/index.js";
9
- import { uninstallStalePlugins } from "../utils/claude-plugin.js";
7
+ import { resolveLocalSkillRoot } from "../lockfile/local-root.js";
8
+ import { purgeStalePlugins } from "../settings/index.js";
9
+ import { claudePluginUninstall } from "../utils/claude-plugin.js";
10
10
  import { bold, cyan, green, dim, yellow } from "../utils/output.js";
11
+ /** Absence from vskill.lock alone is not evidence of an orphan. */
12
+ function registeredPluginIds() {
13
+ const registry = join(homedir(), ".claude", "plugins", "installed_plugins.json");
14
+ if (!existsSync(registry))
15
+ return new Set();
16
+ try {
17
+ const data = JSON.parse(readFileSync(registry, "utf8"));
18
+ if (!data?.plugins || typeof data.plugins !== "object" || Array.isArray(data.plugins))
19
+ return null;
20
+ return new Set(Object.keys(data.plugins));
21
+ }
22
+ catch {
23
+ // Unreadable ownership data must never become a removal plan.
24
+ return null;
25
+ }
26
+ }
27
+ function hasCachedPlugin(id) {
28
+ const at = id.lastIndexOf("@");
29
+ const name = id.slice(0, at);
30
+ const marketplace = id.slice(at + 1);
31
+ const safe = /^[a-z0-9][\w.-]*$/i;
32
+ if (at < 1 || !safe.test(name) || !safe.test(marketplace))
33
+ return true;
34
+ return existsSync(join(homedir(), ".claude", "plugins", "cache", marketplace, name));
35
+ }
11
36
  export async function cleanupCommand(opts = {}) {
12
- const lock = readLockfile();
13
- const skills = lock?.skills ?? {};
14
- const inSyncCount = Object.keys(skills).length;
15
- if (opts.dryRun) {
16
- // 0724 T-008 (AC-US7-02, AC-US7-03, AC-US7-04): preview-only path.
17
- // Walk both scopes via the read-only `purgeStalePlugins` helper, then
18
- // emit the would-be `claude plugin uninstall ...` invocations and the
19
- // reconciliation summary. No subprocess, no filesystem mutation,
20
- // settings.json untouched.
21
- console.log(bold("Dry-run — preview of stale plugin uninstalls:\n"));
22
- const userStale = purgeStalePlugins({ scope: "user" }, skills);
23
- const projectStale = purgeStalePlugins({ scope: "project", projectDir: process.cwd() }, skills);
24
- if (userStale.length === 0 && projectStale.length === 0) {
25
- console.log(dim("No stale plugin entries found in settings.json."));
26
- }
27
- else {
28
- for (const id of userStale) {
29
- console.log(` ${dim(">")} ${cyan(`claude plugin uninstall --scope user -- ${id}`)}`);
30
- }
31
- for (const id of projectStale) {
32
- console.log(` ${dim(">")} ${cyan(`claude plugin uninstall --scope project -- ${id}`)}`);
33
- }
34
- }
35
- console.log(`\n${green(`${userStale.length}`)} stale entries removed from user scope, ${green(`${projectStale.length}`)} from project scope, ${dim(`${inSyncCount}`)} in-sync skills left untouched.`);
37
+ const projectRoot = resolveLocalSkillRoot();
38
+ const projectSkills = readLockfile(projectRoot)?.skills ?? {};
39
+ // Older global installs wrote ~/vskill.lock; current installs use ~/.agents.
40
+ const userSkills = {
41
+ ...(readLockfile(homedir())?.skills ?? {}),
42
+ ...(readLockfile(join(homedir(), ".agents"))?.skills ?? {}),
43
+ };
44
+ const registered = registeredPluginIds();
45
+ if (registered === null) {
46
+ console.log(yellow("Plugin registry unreadable. Cleanup skipped; no files or registrations changed."));
36
47
  return;
37
48
  }
38
- console.log(bold("Cleaning up stale plugin entries...\n"));
39
- // Uninstall stale plugins via claude CLI. Counts of "actually removed"
40
- // come from the result list (F-002 fix): a stale id detected by
41
- // purgeStalePlugins may still fail to uninstall via the CLI (e.g. the
42
- // plugin was registered out-of-band and claude has no record), and we
43
- // shouldn't claim it as removed in the reconciliation summary.
44
- const results = uninstallStalePlugins(skills);
45
- const userStaleRemoved = results.filter((r) => r.scope === "user" && r.ok).length;
46
- const projectStaleRemoved = results.filter((r) => r.scope === "project" && r.ok).length;
47
- if (results.length > 0) {
48
- console.log(green(`Removing ${results.length} stale plugin${results.length === 1 ? "" : "s"}:\n`));
49
- for (const { id, ok } of results) {
50
- console.log(` ${dim(">")} ${id}${ok ? "" : ` ${dim("(skipped — not registered via CLI)")}`}`);
49
+ const plans = [];
50
+ for (const scope of ["user", "project"]) {
51
+ const settings = scope === "user" ? { scope } : { scope, projectDir: projectRoot };
52
+ const skills = scope === "user" ? userSkills : projectSkills;
53
+ for (const id of purgeStalePlugins(settings, skills)) {
54
+ if (!registered.has(id) && !hasCachedPlugin(id))
55
+ plans.push({ id, scope });
51
56
  }
52
57
  }
53
- else {
54
- console.log(dim("No stale plugin entries found in settings.json."));
58
+ const inSyncCount = new Set([...Object.keys(projectSkills), ...Object.keys(userSkills)]).size;
59
+ if (opts.dryRun) {
60
+ console.log(bold("Dry-run — preview of missing plugin registration cleanup:\n"));
61
+ for (const { id, scope } of plans) {
62
+ console.log(` ${dim(">")} ${cyan(`claude plugin uninstall --scope ${scope} -- ${id}`)}`);
63
+ }
64
+ if (!plans.length)
65
+ console.log(dim("No stale plugin entries found in settings.json."));
66
+ const user = plans.filter((p) => p.scope === "user").length;
67
+ const project = plans.filter((p) => p.scope === "project").length;
68
+ console.log(`\n${user} user and ${project} project entries would be removed; no changes made. ${inSyncCount} in-sync skills left untouched.`);
69
+ return;
55
70
  }
56
- // Clean orphaned plugin cache directories
57
- const cacheBase = join(homedir(), ".claude", "plugins", "cache");
58
- let orphanedCount = 0;
59
- if (existsSync(cacheBase)) {
71
+ console.log(bold("Cleaning up missing plugin registrations...\n"));
72
+ const removed = { user: 0, project: 0 };
73
+ for (const { id, scope } of plans) {
60
74
  try {
61
- for (const marketplace of readdirSync(cacheBase)) {
62
- const mktDir = join(cacheBase, marketplace);
63
- for (const pluginName of readdirSync(mktDir)) {
64
- const lockEntry = skills[pluginName];
65
- if (!lockEntry || lockEntry.marketplace !== marketplace) {
66
- const orphanDir = join(mktDir, pluginName);
67
- try {
68
- rmSync(orphanDir, { recursive: true, force: true });
69
- orphanedCount++;
70
- console.log(dim(` Removed orphaned cache: ${marketplace}/${pluginName}`));
71
- }
72
- catch {
73
- // non-fatal
74
- }
75
- }
76
- }
77
- }
75
+ claudePluginUninstall(id, scope, scope === "project" ? { cwd: projectRoot } : undefined);
76
+ removed[scope]++;
77
+ console.log(dim(` Removed missing registration: ${id} (${scope})`));
78
78
  }
79
79
  catch {
80
- // non-fatal — cache dir may have permission issues
80
+ console.log(yellow(` ${id} (${scope}) could not be uninstalled; registration retained.`));
81
81
  }
82
82
  }
83
- if (orphanedCount > 0) {
84
- console.log(green(`\nRemoved ${orphanedCount} orphaned cache director${orphanedCount === 1 ? "y" : "ies"}.`));
85
- }
86
- // 0724 T-008 AC-US7-03: reconciliation summary
87
- console.log(`\n${green(`${userStaleRemoved}`)} stale entries removed from user scope, ${green(`${projectStaleRemoved}`)} from project scope, ${dim(`${inSyncCount}`)} in-sync skills left untouched.`);
88
- // Show remaining enabled plugins
89
- const remaining = listEnabledPlugins({ scope: "user" });
90
- if (remaining.length > 0) {
91
- console.log(dim(`\n${remaining.length} enabled plugin${remaining.length === 1 ? "" : "s"} remaining: ${remaining.join(", ")}`));
92
- }
93
- if (results.length > 0) {
94
- console.log(yellow("\nRestart Claude Code to reload its plugin settings."));
95
- }
83
+ // Cache is shared with other projects and installers. Only a targeted
84
+ // uninstall can establish ownership; blanket lockfile-based GC is unsafe.
85
+ console.log(`\n${green(String(removed.user))} stale entries removed from user scope, ${green(String(removed.project))} from project scope, ${inSyncCount} in-sync skills left untouched.`);
86
+ console.log(dim("Shared plugin caches preserved. Use a targeted uninstall to remove a plugin."));
96
87
  }
97
88
  //# sourceMappingURL=cleanup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKpE,mEAAmE;AACnE,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;IACjF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACnG,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,8DAA8D;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE;IAC5D,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAC9D,6EAA6E;IAC7E,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;QAC1C,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;KAC5D,CAAC;IACF,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,iFAAiF,CAAC,CAAC,CAAC;QACvG,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS,CAAU,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;QAC7D,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACjF,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,mCAAmC,KAAK,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,aAAa,OAAO,uDAAuD,WAAW,iCAAiC,CAAC,CAAC;QAC9I,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxC,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACzF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAmC,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,oDAAoD,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,sEAAsE;IACtE,0EAA0E;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,2CAA2C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,WAAW,iCAAiC,CAAC,CAAC;IAC3L,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC,CAAC;AACnG,CAAC"}