@minicor/mcp-server 3.9.0 → 4.0.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 (89) hide show
  1. package/README.md +145 -100
  2. package/dist/__tests__/discovery.test.d.ts +2 -0
  3. package/dist/__tests__/discovery.test.d.ts.map +1 -0
  4. package/dist/__tests__/{builder-discovery.test.js → discovery.test.js} +3 -3
  5. package/dist/__tests__/discovery.test.js.map +1 -0
  6. package/dist/__tests__/http-seal.test.d.ts +2 -0
  7. package/dist/__tests__/http-seal.test.d.ts.map +1 -0
  8. package/dist/__tests__/http-seal.test.js +40 -0
  9. package/dist/__tests__/http-seal.test.js.map +1 -0
  10. package/dist/__tests__/http-server.test.d.ts +7 -0
  11. package/dist/__tests__/http-server.test.d.ts.map +1 -0
  12. package/dist/__tests__/http-server.test.js +317 -0
  13. package/dist/__tests__/http-server.test.js.map +1 -0
  14. package/dist/__tests__/jobs-tools.test.d.ts +2 -0
  15. package/dist/__tests__/jobs-tools.test.d.ts.map +1 -0
  16. package/dist/__tests__/jobs-tools.test.js +336 -0
  17. package/dist/__tests__/jobs-tools.test.js.map +1 -0
  18. package/dist/__tests__/middleware-service-client.test.js +70 -0
  19. package/dist/__tests__/middleware-service-client.test.js.map +1 -1
  20. package/dist/__tests__/server-surface.test.d.ts +2 -0
  21. package/dist/__tests__/server-surface.test.d.ts.map +1 -0
  22. package/dist/__tests__/{server-profile.test.js → server-surface.test.js} +109 -91
  23. package/dist/__tests__/server-surface.test.js.map +1 -0
  24. package/dist/bootstrap.js +29 -0
  25. package/dist/bootstrap.js.map +1 -1
  26. package/dist/http-oauth.d.ts +60 -0
  27. package/dist/http-oauth.d.ts.map +1 -0
  28. package/dist/http-oauth.js +380 -0
  29. package/dist/http-oauth.js.map +1 -0
  30. package/dist/http-seal.d.ts +17 -0
  31. package/dist/http-seal.d.ts.map +1 -0
  32. package/dist/http-seal.js +63 -0
  33. package/dist/http-seal.js.map +1 -0
  34. package/dist/http-server.d.ts +29 -0
  35. package/dist/http-server.d.ts.map +1 -0
  36. package/dist/http-server.js +229 -0
  37. package/dist/http-server.js.map +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +12 -15
  40. package/dist/index.js.map +1 -1
  41. package/dist/lib.d.ts +6 -4
  42. package/dist/lib.d.ts.map +1 -1
  43. package/dist/lib.js +10 -10
  44. package/dist/lib.js.map +1 -1
  45. package/dist/middleware-service-client.d.ts +37 -2
  46. package/dist/middleware-service-client.d.ts.map +1 -1
  47. package/dist/middleware-service-client.js +43 -2
  48. package/dist/middleware-service-client.js.map +1 -1
  49. package/dist/prompts/build-rpa.d.ts.map +1 -1
  50. package/dist/prompts/build-rpa.js +2 -0
  51. package/dist/prompts/build-rpa.js.map +1 -1
  52. package/dist/server-surface.d.ts +23 -0
  53. package/dist/server-surface.d.ts.map +1 -0
  54. package/dist/server-surface.js +110 -0
  55. package/dist/server-surface.js.map +1 -0
  56. package/dist/setup.d.ts +1 -1
  57. package/dist/setup.js +3 -9
  58. package/dist/setup.js.map +1 -1
  59. package/dist/sync.js +33 -6
  60. package/dist/sync.js.map +1 -1
  61. package/dist/tools/core.js +1 -1
  62. package/dist/tools/core.js.map +1 -1
  63. package/dist/tools/{builder-discovery.d.ts → discovery.d.ts} +3 -3
  64. package/dist/tools/discovery.d.ts.map +1 -0
  65. package/dist/tools/{builder-discovery.js → discovery.js} +3 -3
  66. package/dist/tools/discovery.js.map +1 -0
  67. package/dist/tools/jobs.d.ts.map +1 -1
  68. package/dist/tools/jobs.js +296 -3
  69. package/dist/tools/jobs.js.map +1 -1
  70. package/dist/tools/vm.js +1 -1
  71. package/dist/tools/vm.js.map +1 -1
  72. package/package.json +3 -2
  73. package/skills/general/job-build-loop.md +163 -0
  74. package/dist/__tests__/builder-discovery.test.d.ts +0 -2
  75. package/dist/__tests__/builder-discovery.test.d.ts.map +0 -1
  76. package/dist/__tests__/builder-discovery.test.js.map +0 -1
  77. package/dist/__tests__/server-profile.test.d.ts +0 -2
  78. package/dist/__tests__/server-profile.test.d.ts.map +0 -1
  79. package/dist/__tests__/server-profile.test.js.map +0 -1
  80. package/dist/builder-index.d.ts +0 -3
  81. package/dist/builder-index.d.ts.map +0 -1
  82. package/dist/builder-index.js +0 -5
  83. package/dist/builder-index.js.map +0 -1
  84. package/dist/server-profile.d.ts +0 -11
  85. package/dist/server-profile.d.ts.map +0 -1
  86. package/dist/server-profile.js +0 -104
  87. package/dist/server-profile.js.map +0 -1
  88. package/dist/tools/builder-discovery.d.ts.map +0 -1
  89. package/dist/tools/builder-discovery.js.map +0 -1
@@ -3,107 +3,125 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
3
3
  import { afterEach, describe, expect, it, vi } from "vitest";
4
4
  import { buildCodeModeInstructions } from "../codemode.js";
5
5
  import { createMinicorServer } from "../lib.js";
6
- import { BUILDER_INSTRUCTIONS, parseServerProfile, serverNameForProfile, } from "../server-profile.js";
7
- const BUILDER_TOOLS = [
8
- "add_test_case",
9
- "answer_build_question",
10
- "create_config_store",
6
+ import { buildInstructions, SERVER_NAME } from "../server-surface.js";
7
+ /** Tools that read/write the server's local filesystem (clones, sessions, sync). */
8
+ const LOCAL_ONLY_TOOLS = [
9
+ "session_start",
10
+ "session_checkpoint",
11
+ "session_end",
12
+ "clone_workspace",
13
+ "init_project",
14
+ "pull_workflow",
15
+ "push_workflow",
16
+ "pull_all",
17
+ "push_changed",
18
+ "sync_status",
19
+ "set_workspaces_root",
20
+ ];
21
+ /** A representative slice of the shared remote surface. */
22
+ const SHARED_TOOLS = [
23
+ "list_workspaces",
11
24
  "create_workflow",
12
- "delete_config_store",
13
- "delete_job",
14
- "delete_middleware",
15
- "dev_mode_add_step",
16
- "dev_mode_delete_draft",
17
- "dev_mode_edit_step",
18
- "dev_mode_get_run_status",
19
- "dev_mode_get_step",
20
- "dev_mode_get_step_list",
21
- "dev_mode_get_workspace",
25
+ "execute_workflow",
22
26
  "dev_mode_load",
23
- "dev_mode_publish",
24
- "dev_mode_regroup",
25
- "dev_mode_remove_step",
26
- "dev_mode_reorder",
27
27
  "dev_mode_run",
28
- "dev_mode_stop_run",
29
- "get_build_status",
30
- "get_config_properties",
31
- "get_config_property",
32
- "get_config_store",
33
- "get_job",
34
- "get_job_execution",
35
- "get_test_report",
36
- "get_workflow",
37
- "inspect_job_execution",
28
+ "dev_mode_publish",
29
+ "create_rpa_flow",
30
+ "vm_connect",
31
+ "vm_list",
38
32
  "list_config_stores",
39
- "list_middlewares",
40
- "list_workspace_api_keys",
41
- "list_workflows",
42
- "list_workspaces",
43
- "publish_job",
33
+ "list_skills",
34
+ "get_skill",
35
+ "resolve_job_state",
44
36
  "register_job",
45
- "register_middleware",
46
- "remove_config_property",
47
- "restore_config_store",
48
37
  "run_job",
38
+ "stop_job_execution",
39
+ "list_job_executions",
49
40
  "run_tests",
50
- "set_middleware_api_key",
51
- "teach_job",
52
- "update_build_run",
53
- "update_config_property",
54
- "update_job",
55
- "vm_list",
56
- ].sort();
41
+ "publish_job",
42
+ "cancel_build",
43
+ "tfa_generate_totp",
44
+ ];
45
+ async function listSurface(localTools) {
46
+ const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
47
+ const embedded = await createMinicorServer(serverTransport, {
48
+ localTools,
49
+ credentials: {
50
+ access_token: "test-token",
51
+ refresh_token: "test-refresh-token",
52
+ expires_at: Date.now() + 3_600_000,
53
+ },
54
+ baseUrl: "https://api.test.com",
55
+ codeMode: false,
56
+ });
57
+ const client = new Client({ name: "test-client", version: "1.0.0" });
58
+ try {
59
+ await client.connect(clientTransport);
60
+ const [tools, prompts] = await Promise.all([
61
+ client.listTools(),
62
+ client.listPrompts(),
63
+ ]);
64
+ return {
65
+ tools: tools.tools.map((tool) => tool.name),
66
+ prompts: prompts.prompts.map((prompt) => prompt.name),
67
+ };
68
+ }
69
+ finally {
70
+ await client.close();
71
+ await embedded.close();
72
+ }
73
+ }
57
74
  afterEach(() => {
58
75
  vi.unstubAllGlobals();
59
76
  });
60
- describe("MCP server profiles", () => {
61
- it("parses the builder profile without changing the full default", () => {
62
- expect(parseServerProfile([], {})).toBe("full");
63
- expect(parseServerProfile(["--profile", "builder"], {})).toBe("builder");
64
- expect(parseServerProfile(["--profile=builder"], {})).toBe("builder");
65
- expect(parseServerProfile([], { MINICOR_MCP_PROFILE: "builder" })).toBe("builder");
66
- expect(() => parseServerProfile(["--profile"], {})).toThrow("Missing value");
67
- expect(() => parseServerProfile(["--profile="], {})).toThrow("Missing value");
68
- expect(() => parseServerProfile(["--profile", "unknown"], {})).toThrow("Unknown MCP profile");
77
+ describe("the single MCP surface", () => {
78
+ it("is named minicor and carries the jobs-first loop in its instructions", () => {
79
+ expect(SERVER_NAME).toBe("minicor");
80
+ const local = buildInstructions(true);
81
+ const hosted = buildInstructions(false);
82
+ // Every deployment gets the same build loop.
83
+ for (const instructions of [local, hosted]) {
84
+ expect(instructions).toContain("GREEN-GATE FIRST");
85
+ expect(instructions).toContain("resolve_job_state");
86
+ expect(instructions).toContain("stop_job_execution");
87
+ }
88
+ // Only local deployments are told to run the session lifecycle.
89
+ expect(local).toContain("session_start");
90
+ expect(hosted).not.toContain("session_start");
91
+ expect(hosted).not.toContain("session_end");
92
+ const codeModeHosted = buildCodeModeInstructions(hosted, {
93
+ sessionLifecycle: false,
94
+ });
95
+ expect(codeModeHosted).not.toContain("session_start");
96
+ expect(codeModeHosted).toContain("minicor.dev_mode_run");
69
97
  });
70
- it("uses a distinct server name and no session lifecycle for builder", () => {
71
- expect(serverNameForProfile("builder")).toBe("minicor-builder");
72
- expect(BUILDER_INSTRUCTIONS).not.toContain("session_start");
73
- expect(BUILDER_INSTRUCTIONS).not.toContain("session_end");
74
- const codeModeInstructions = buildCodeModeInstructions(BUILDER_INSTRUCTIONS, { sessionLifecycle: false });
75
- expect(codeModeInstructions).not.toContain("session_start");
76
- expect(codeModeInstructions).not.toContain("session_end");
77
- expect(codeModeInstructions).toContain("minicor.dev_mode_run");
98
+ it("registers the full surface locally, including filesystem tools", async () => {
99
+ const { tools, prompts } = await listSurface(true);
100
+ for (const tool of [...SHARED_TOOLS, ...LOCAL_ONLY_TOOLS]) {
101
+ expect(tools, `missing ${tool}`).toContain(tool);
102
+ }
103
+ expect(prompts).toContain("workspace-session-guide");
78
104
  });
79
- it("exposes exactly the focused builder allowlist", async () => {
80
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
81
- const embedded = await createMinicorServer(serverTransport, {
82
- profile: "builder",
83
- credentials: {
84
- access_token: "test-token",
85
- refresh_token: "test-refresh-token",
86
- expires_at: Date.now() + 3_600_000,
87
- },
88
- baseUrl: "https://api.test.com",
89
- codeMode: false,
90
- });
91
- const client = new Client({ name: "test-client", version: "1.0.0" });
92
- try {
93
- await client.connect(clientTransport);
94
- const result = await client.listTools();
95
- const names = result.tools.map((tool) => tool.name).sort();
96
- expect(names).toEqual(BUILDER_TOOLS);
97
- expect(names).not.toContain("session_start");
98
- expect(names).not.toContain("vm_connect");
99
- expect(names).not.toContain("execute_workflow");
105
+ it("hosted (localTools=false) serves the same surface minus only the filesystem tools", async () => {
106
+ const hosted = await listSurface(false);
107
+ const local = await listSurface(true);
108
+ for (const tool of SHARED_TOOLS) {
109
+ expect(hosted.tools, `missing ${tool}`).toContain(tool);
100
110
  }
101
- finally {
102
- await client.close();
103
- await embedded.close();
111
+ for (const tool of LOCAL_ONLY_TOOLS) {
112
+ expect(hosted.tools, `should not expose ${tool}`).not.toContain(tool);
104
113
  }
114
+ // The only tool difference between deployments is the local filesystem set.
115
+ const diff = local.tools.filter((t) => !hosted.tools.includes(t)).sort();
116
+ expect(diff).toEqual([...LOCAL_ONLY_TOOLS].sort());
117
+ // The workspace-session prompt reads the server's disk; hosted must not
118
+ // expose it. Everything else is shared.
119
+ expect(hosted.prompts).not.toContain("workspace-session-guide");
120
+ expect(hosted.prompts).toContain("build-rpa-workflow");
121
+ const promptDiff = local.prompts.filter((p) => !hosted.prompts.includes(p));
122
+ expect(promptDiff).toEqual(["workspace-session-guide"]);
105
123
  });
106
- it("routes execution status, cooperative stop, and draft deletion", async () => {
124
+ it("routes dev-mode execution status, cooperative stop, and draft deletion", async () => {
107
125
  const fetchMock = vi.fn(async (input, init) => {
108
126
  if (init?.method === "DELETE") {
109
127
  return new Response(null, { status: 204 });
@@ -124,7 +142,7 @@ describe("MCP server profiles", () => {
124
142
  vi.stubGlobal("fetch", fetchMock);
125
143
  const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
126
144
  const embedded = await createMinicorServer(serverTransport, {
127
- profile: "builder",
145
+ localTools: false,
128
146
  credentials: {
129
147
  access_token: "test-token",
130
148
  refresh_token: "test-refresh-token",
@@ -183,7 +201,7 @@ describe("MCP server profiles", () => {
183
201
  vi.stubGlobal("fetch", fetchMock);
184
202
  const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
185
203
  const embedded = await createMinicorServer(serverTransport, {
186
- profile: "builder",
204
+ localTools: false,
187
205
  credentials: {
188
206
  access_token: "test-token",
189
207
  refresh_token: "test-refresh-token",
@@ -200,7 +218,7 @@ describe("MCP server profiles", () => {
200
218
  arguments: {
201
219
  workspaceId: 11,
202
220
  name: "Builder flow",
203
- description: "Developed through the builder MCP",
221
+ description: "Developed through the MCP",
204
222
  },
205
223
  });
206
224
  await client.callTool({
@@ -258,7 +276,7 @@ describe("MCP server profiles", () => {
258
276
  body: {
259
277
  workspaceId: 11,
260
278
  name: "Builder flow",
261
- description: "Developed through the builder MCP",
279
+ description: "Developed through the MCP",
262
280
  },
263
281
  },
264
282
  {
@@ -308,4 +326,4 @@ describe("MCP server profiles", () => {
308
326
  }
309
327
  });
310
328
  });
311
- //# sourceMappingURL=server-profile.test.js.map
329
+ //# sourceMappingURL=server-surface.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/server-surface.test.ts"],"names":[],"mappings":"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"}
package/dist/bootstrap.js CHANGED
@@ -60,9 +60,16 @@ context you need. Follow the phase loop it describes.
60
60
 
61
61
  ## Key Rules
62
62
 
63
+ - Test cases and Jobs come first: define the green-gate (\`teach_job\` / \`add_test_case\`)
64
+ BEFORE building; a job with no test cases has no definition of correct
65
+ - When working a job, call \`resolve_job_state\` to get its state + the next tool calls;
66
+ load \`get_skill("job-build-loop")\` for the full playbook
67
+ - Jobs are the macroscope (step graph, \`run_tests variant=draft\`, \`publish_job\`);
68
+ a failing step's workflow is the microscope (\`dev_mode_load\` / \`create_rpa_flow\`)
63
69
  - Use \`create_rpa_flow\` for RPA steps, never \`create_flow\`
64
70
  - Follow the \`rpa-testing-workflow\` skill for testing
65
71
  - Fix failures through the executor, NOT \`vm_execute_script\`
72
+ - There is no pause: \`stop_job_execution\` is a cooperative cancel
66
73
  - Update \`.minicor/context.md\` when you learn something new
67
74
  - Create/update \`[Workspace:Session]\` and \`[Workspace:Context]\` issues
68
75
  `;
@@ -125,6 +132,25 @@ context you need. Follow the phase loop it describes.
125
132
  "mcp__minicor__list_agents",
126
133
  "mcp__minicor__test_workflow_step",
127
134
  "mcp__minicor__diagnose_execution",
135
+ "mcp__minicor__resolve_job_state",
136
+ "mcp__minicor__list_middlewares",
137
+ "mcp__minicor__get_job",
138
+ "mcp__minicor__register_job",
139
+ "mcp__minicor__update_job",
140
+ "mcp__minicor__run_job",
141
+ "mcp__minicor__stop_job_execution",
142
+ "mcp__minicor__list_job_executions",
143
+ "mcp__minicor__get_job_execution",
144
+ "mcp__minicor__inspect_job_execution",
145
+ "mcp__minicor__teach_job",
146
+ "mcp__minicor__publish_job",
147
+ "mcp__minicor__add_test_case",
148
+ "mcp__minicor__update_test_case",
149
+ "mcp__minicor__run_tests",
150
+ "mcp__minicor__get_test_report",
151
+ "mcp__minicor__get_build_status",
152
+ "mcp__minicor__answer_build_question",
153
+ "mcp__minicor__cancel_build",
128
154
  ];
129
155
  const existing = new Set(settings.permissions.allow);
130
156
  for (const perm of requiredPerms) {
@@ -175,6 +201,9 @@ It returns:
175
201
  ## Key Rules
176
202
 
177
203
  - Follow the phase loop from AGENTS.md: gather-context → orient → scope → build → test → harden → learn
204
+ - Test cases and Jobs come first: define the green-gate (\`teach_job\` / \`add_test_case\`) before
205
+ building, then work the job as the macroscope and drop into workflow steps as the microscope.
206
+ \`resolve_job_state\` tells you where a job stands and what to do next.
178
207
  - If a prior session exists, resume from where it left off
179
208
  - Use \`create_rpa_flow\` for RPA steps (never \`create_flow\`)
180
209
  - Always call \`session_end\` before finishing
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * OAuth 2.1 authorization bridge for the hosted HTTP server.
3
+ *
4
+ * Implements the MCP authorization spec (metadata discovery, dynamic
5
+ * client registration, authorization code + PKCE, refresh tokens) on top
6
+ * of the Minicor /auth/signin API. The /authorize endpoint serves a login
7
+ * form; submitting valid Minicor credentials mints an auth code that the
8
+ * client exchanges for sealed tokens wrapping the upstream credentials.
9
+ *
10
+ * Everything is stateless: client IDs, auth codes, and tokens are all
11
+ * TokenSealer blobs, so this works across multiple Cloud Run instances.
12
+ */
13
+ import { type Region } from "./paths.js";
14
+ import type { TokenSealer } from "./http-seal.js";
15
+ export interface UpstreamCredentials {
16
+ region: Region;
17
+ apiBase: string;
18
+ access_token: string;
19
+ refresh_token: string | null;
20
+ expires_at: number;
21
+ }
22
+ export interface ClientPayload {
23
+ redirect_uris: string[];
24
+ }
25
+ export interface CodePayload {
26
+ creds: UpstreamCredentials;
27
+ client_id: string;
28
+ redirect_uri: string;
29
+ code_challenge: string;
30
+ }
31
+ export interface AccessPayload {
32
+ creds: UpstreamCredentials;
33
+ }
34
+ export interface RefreshPayload {
35
+ creds: UpstreamCredentials;
36
+ client_id: string;
37
+ }
38
+ export interface OauthConfig {
39
+ sealer: TokenSealer;
40
+ /** Empty list = any email accepted by the upstream API may sign in. */
41
+ allowedEmailDomains: string[];
42
+ }
43
+ export interface HandlerResult {
44
+ status: number;
45
+ headers: Record<string, string>;
46
+ body: string;
47
+ }
48
+ export declare function authorizationServerMetadata(issuer: string): HandlerResult;
49
+ export declare function protectedResourceMetadata(issuer: string): HandlerResult;
50
+ export declare function handleRegister(config: OauthConfig, body: unknown): HandlerResult;
51
+ export interface AuthorizeParams {
52
+ client_id: string;
53
+ redirect_uri: string;
54
+ state: string;
55
+ code_challenge: string;
56
+ }
57
+ export declare function handleAuthorizeGet(config: OauthConfig, query: URLSearchParams): HandlerResult;
58
+ export declare function handleAuthorizePost(config: OauthConfig, form: URLSearchParams): Promise<HandlerResult>;
59
+ export declare function handleToken(config: OauthConfig, form: URLSearchParams): Promise<HandlerResult>;
60
+ //# sourceMappingURL=http-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-oauth.d.ts","sourceRoot":"","sources":["../src/http-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYlD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAYzE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAOvE;AAgBD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,OAAO,GACZ,aAAa,CA0Bf;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AA4ID,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACrB,aAAa,CAQf;AA6DD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,aAAa,CAAC,CA0DxB;AAkCD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,aAAa,CAAC,CAgExB"}