@deepthonk/mcp 0.1.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/LICENSE +21 -0
- package/README.md +293 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.js +26 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +11 -0
- package/dist/resources.js +100 -0
- package/dist/resources.js.map +1 -0
- package/dist/samplingDriver.d.ts +8 -0
- package/dist/samplingDriver.js +19 -0
- package/dist/samplingDriver.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +206 -0
- package/dist/server.js.map +1 -0
- package/dist/tools.d.ts +533 -0
- package/dist/tools.js +555 -0
- package/dist/tools.js.map +1 -0
- package/package.json +45 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { deepthonkExport, deepthonkMutate, deepthonkPlan, deepthonkRank, deepthonkResume, deepthonkRun, deepthonkStart, deepthonkStatus, deepthonkResult, deepthonkCancel, exportArgsSchema, jobArgsSchema, mutateArgsSchema, planArgsSchema, rankArgsSchema, resumeArgsSchema, runArgsSchema, runOutputSchema, startOutputSchema, statusOutputSchema, resultOutputSchema, cancelOutputSchema, resumeOutputSchema, rankOutputSchema, mutateOutputSchema, toolError, toolResult } from "./tools.js";
|
|
7
|
+
import { listRunResources, readJobResource, readRunResource, runResourceMimeType } from "./resources.js";
|
|
8
|
+
import { renderPrompt } from "./prompts.js";
|
|
9
|
+
export function createDeepThonkMcpServer() {
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: "deepthonk",
|
|
12
|
+
version: "0.1.0"
|
|
13
|
+
});
|
|
14
|
+
server.registerTool("deepthonk.plan", {
|
|
15
|
+
title: "Plan DeepThonk Budget",
|
|
16
|
+
description: "Estimate model calls for a DeepThonk profile.",
|
|
17
|
+
inputSchema: planArgsSchema.shape,
|
|
18
|
+
outputSchema: z.object({}).passthrough().describe("Budget plan with total calls and sequential rounds.")
|
|
19
|
+
}, async (args) => safeTool(() => toolResult(deepthonkPlan(args))));
|
|
20
|
+
server.registerTool("deepthonk.start", {
|
|
21
|
+
title: "Start DeepThonk Job",
|
|
22
|
+
description: "Start DeepThonk in the background and persist status in the run directory.",
|
|
23
|
+
inputSchema: runArgsSchema.shape,
|
|
24
|
+
outputSchema: startOutputSchema.shape
|
|
25
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkStart(args)), args.run_dir));
|
|
26
|
+
server.registerTool("deepthonk.status", {
|
|
27
|
+
title: "DeepThonk Job Status",
|
|
28
|
+
description: "Read persisted job/run status from a run directory.",
|
|
29
|
+
inputSchema: jobArgsSchema.shape,
|
|
30
|
+
outputSchema: statusOutputSchema.shape
|
|
31
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkStatus(args)), args.run_dir));
|
|
32
|
+
server.registerTool("deepthonk.result", {
|
|
33
|
+
title: "DeepThonk Job Result",
|
|
34
|
+
description: "Return final summary/resource URIs when a background job is complete.",
|
|
35
|
+
inputSchema: jobArgsSchema.shape,
|
|
36
|
+
outputSchema: resultOutputSchema.shape
|
|
37
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkResult(args)), args.run_dir));
|
|
38
|
+
server.registerTool("deepthonk.cancel", {
|
|
39
|
+
title: "Cancel DeepThonk Job",
|
|
40
|
+
description: "Request cancellation for a running job by writing cancel.json in the run directory.",
|
|
41
|
+
inputSchema: jobArgsSchema.shape,
|
|
42
|
+
outputSchema: cancelOutputSchema.shape
|
|
43
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkCancel(args)), args.run_dir));
|
|
44
|
+
server.registerTool("deepthonk.run", {
|
|
45
|
+
title: "Run DeepThonk",
|
|
46
|
+
description: "Run DeepThonk through the shared core engine.",
|
|
47
|
+
inputSchema: runArgsSchema.shape,
|
|
48
|
+
outputSchema: runOutputSchema.shape
|
|
49
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkRun(args)), args.run_dir));
|
|
50
|
+
server.registerTool("deepthonk.rank", {
|
|
51
|
+
title: "Rank Candidates",
|
|
52
|
+
description: "Rank supplied candidates with pairwise judging and Bradley-Terry aggregation.",
|
|
53
|
+
inputSchema: rankArgsSchema.shape,
|
|
54
|
+
outputSchema: rankOutputSchema.shape
|
|
55
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkRank(args))));
|
|
56
|
+
server.registerTool("deepthonk.mutate", {
|
|
57
|
+
title: "Mutate Candidate",
|
|
58
|
+
description: "Mutate one supplied candidate with critique.",
|
|
59
|
+
inputSchema: mutateArgsSchema.shape,
|
|
60
|
+
outputSchema: mutateOutputSchema.shape
|
|
61
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkMutate(args))));
|
|
62
|
+
server.registerTool("deepthonk.resume", {
|
|
63
|
+
title: "Resume Run",
|
|
64
|
+
description: "Detect whether a run can be resumed.",
|
|
65
|
+
inputSchema: resumeArgsSchema.shape,
|
|
66
|
+
outputSchema: resumeOutputSchema.shape
|
|
67
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkResume(args)), args.run_dir));
|
|
68
|
+
server.registerTool("deepthonk.export", {
|
|
69
|
+
title: "Export Run",
|
|
70
|
+
description: "Export a run summary or trace.",
|
|
71
|
+
inputSchema: exportArgsSchema.shape,
|
|
72
|
+
outputSchema: z.object({}).passthrough().describe("Exported run data in the requested format.")
|
|
73
|
+
}, async (args) => safeTool(async () => toolResult(await deepthonkExport(args)), args.run_dir));
|
|
74
|
+
server.registerResource("deepthonk-runs", "deepthonk://runs", {
|
|
75
|
+
title: "DeepThonk Runs",
|
|
76
|
+
mimeType: "application/json"
|
|
77
|
+
}, async (uri) => ({
|
|
78
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: await readRunResource(uri.href) }]
|
|
79
|
+
}));
|
|
80
|
+
server.registerResource("deepthonk-run-resource", new ResourceTemplate("deepthonk://runs/{run_id}/{resource}", {
|
|
81
|
+
list: async () => ({ resources: await listRunResources() })
|
|
82
|
+
}), {
|
|
83
|
+
title: "DeepThonk Run Resource",
|
|
84
|
+
mimeType: "text/plain"
|
|
85
|
+
}, async (uri) => {
|
|
86
|
+
const resource = uri.pathname.replace(/^\/+/, "").split("/")[1] ?? "trace";
|
|
87
|
+
const mimeType = runResourceMimeType(resource);
|
|
88
|
+
return { contents: [{ uri: uri.href, mimeType, text: await readRunResource(uri.href) }] };
|
|
89
|
+
});
|
|
90
|
+
server.registerResource("deepthonk-job-resource", new ResourceTemplate("deepthonk://jobs/{job_id}/{resource}", {
|
|
91
|
+
list: async () => ({ resources: [] })
|
|
92
|
+
}), {
|
|
93
|
+
title: "DeepThonk Job Resource",
|
|
94
|
+
mimeType: "application/json"
|
|
95
|
+
}, async (uri) => ({
|
|
96
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: await readJobResource(uri.href) }]
|
|
97
|
+
}));
|
|
98
|
+
registerPrompt(server, "deepthonk/generate", { task: z.string().min(1), rubric: z.string().optional() });
|
|
99
|
+
registerPrompt(server, "deepthonk/compare", {
|
|
100
|
+
task: z.string().min(1),
|
|
101
|
+
rubric: z.string().optional(),
|
|
102
|
+
candidateA: z.string().min(1),
|
|
103
|
+
candidateB: z.string().min(1)
|
|
104
|
+
});
|
|
105
|
+
registerPrompt(server, "deepthonk/mutate", {
|
|
106
|
+
task: z.string().min(1),
|
|
107
|
+
rubric: z.string().optional(),
|
|
108
|
+
candidate: z.string().min(1),
|
|
109
|
+
critique: z.string().default("")
|
|
110
|
+
});
|
|
111
|
+
registerPrompt(server, "deepthonk/finalize", {
|
|
112
|
+
task: z.string().min(1),
|
|
113
|
+
rubric: z.string().optional(),
|
|
114
|
+
candidate: z.string().min(1)
|
|
115
|
+
});
|
|
116
|
+
return server;
|
|
117
|
+
}
|
|
118
|
+
async function safeTool(action, runDir) {
|
|
119
|
+
try {
|
|
120
|
+
return await action();
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return toolError(error, runDir);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export async function serveMcp(options) {
|
|
127
|
+
if (options.transport === "http") {
|
|
128
|
+
await serveHttp(options.port ?? 3333);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const server = createDeepThonkMcpServer();
|
|
132
|
+
await server.connect(new StdioServerTransport());
|
|
133
|
+
}
|
|
134
|
+
async function serveHttp(port) {
|
|
135
|
+
const allowedHosts = [`127.0.0.1:${port}`, `localhost:${port}`];
|
|
136
|
+
const httpServer = createServer(async (req, res) => {
|
|
137
|
+
if (req.url !== "/mcp") {
|
|
138
|
+
res.writeHead(404, { "content-type": "application/json" });
|
|
139
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (req.method !== "POST") {
|
|
143
|
+
res.writeHead(405, { "content-type": "application/json" });
|
|
144
|
+
res.end(JSON.stringify({ jsonrpc: "2.0", error: { code: -32000, message: "Method not allowed." }, id: null }));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const body = await readJsonBody(req);
|
|
149
|
+
const server = createDeepThonkMcpServer();
|
|
150
|
+
const transport = new StreamableHTTPServerTransport({
|
|
151
|
+
sessionIdGenerator: undefined,
|
|
152
|
+
// CVE-2025-66414 / GHSA-w48q-cv73-mx4w: SDK ships with protection OFF.
|
|
153
|
+
// Loopback bind blocks remote attackers; DNS rebinding still bypasses it via the browser.
|
|
154
|
+
enableDnsRebindingProtection: true,
|
|
155
|
+
allowedHosts
|
|
156
|
+
});
|
|
157
|
+
res.on("close", () => {
|
|
158
|
+
void transport.close();
|
|
159
|
+
void server.close();
|
|
160
|
+
});
|
|
161
|
+
await server.connect(transport);
|
|
162
|
+
await transport.handleRequest(req, res, body);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (!res.headersSent) {
|
|
166
|
+
const parseError = error instanceof SyntaxError;
|
|
167
|
+
res.writeHead(parseError ? 400 : 500, { "content-type": "application/json" });
|
|
168
|
+
res.end(JSON.stringify({
|
|
169
|
+
jsonrpc: "2.0",
|
|
170
|
+
error: { code: parseError ? -32700 : -32603, message: parseError ? "Parse error." : error.message },
|
|
171
|
+
id: null
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
httpServer.listen(port, "127.0.0.1");
|
|
177
|
+
process.stderr.write(`DeepThonk MCP Streamable HTTP listening on http://127.0.0.1:${port}/mcp\n`);
|
|
178
|
+
await new Promise((resolve) => {
|
|
179
|
+
httpServer.on("close", resolve);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function registerPrompt(server, name, argsSchema) {
|
|
183
|
+
server.registerPrompt(name, {
|
|
184
|
+
title: name,
|
|
185
|
+
description: "DeepThonk prompt template.",
|
|
186
|
+
argsSchema
|
|
187
|
+
}, (args) => ({
|
|
188
|
+
messages: [
|
|
189
|
+
{
|
|
190
|
+
role: "user",
|
|
191
|
+
content: {
|
|
192
|
+
type: "text",
|
|
193
|
+
text: renderPrompt(name, args)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
async function readJsonBody(req) {
|
|
200
|
+
const chunks = [];
|
|
201
|
+
for await (const chunk of req)
|
|
202
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
203
|
+
const text = Buffer.concat(chunks).toString("utf8");
|
|
204
|
+
return text.trim() ? JSON.parse(text) : undefined;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,wBAAwB;IACtC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,cAAc,CAAC,KAAK;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACzG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,YAAY,EAAE,iBAAiB,CAAC,KAAK;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC3F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,YAAY,EAAE,kBAAkB,CAAC,KAAK;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,YAAY,EAAE,kBAAkB,CAAC,KAAK;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,YAAY,EAAE,kBAAkB,CAAC,KAAK;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,YAAY,EAAE,eAAe,CAAC,KAAK;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CACzF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,cAAc,CAAC,KAAK;QACjC,YAAY,EAAE,gBAAgB,CAAC,KAAK;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5E,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE,gBAAgB,CAAC,KAAK;QACnC,YAAY,EAAE,kBAAkB,CAAC,KAAK;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9E,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE,gBAAgB,CAAC,KAAK;QACnC,YAAY,EAAE,kBAAkB,CAAC,KAAK;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE,gBAAgB,CAAC,KAAK;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KAChG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,gBAAgB,EAChB,kBAAkB,EAClB;QACE,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;KACnG,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,wBAAwB,EACxB,IAAI,gBAAgB,CAAC,sCAAsC,EAAE;QAC3D,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,gBAAgB,EAAE,EAAE,CAAC;KAC5D,CAAC,EACF;QACE,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE,YAAY;KACvB,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QAC3E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,wBAAwB,EACxB,IAAI,gBAAgB,CAAC,sCAAsC,EAAE;QAC3D,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACtC,CAAC,EACF;QACE,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;KACnG,CAAC,CACH,CAAC;IAEF,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzG,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;QAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B,CAAC,CAAC;IACH,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;QACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACjC,CAAC,CAAC;IACH,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE;QAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAA4B,EAC5B,MAAe;IAEf,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAuD;IACpF,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAC1C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,YAAY,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;gBAClD,kBAAkB,EAAE,SAAS;gBAC7B,uEAAuE;gBACvE,0FAA0F;gBAC1F,4BAA4B,EAAE,IAAI;gBAClC,YAAY;aACb,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,KAAK,YAAY,WAAW,CAAC;gBAChD,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC9E,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAE,KAAe,CAAC,OAAO,EAAE;oBAC9G,EAAE,EAAE,IAAI;iBACT,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,IAAI,QAAQ,CAAC,CAAC;IAClG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,MAAiB,EAAE,IAAY,EAAE,UAAyB;IAChF,MAAM,CAAC,cAAc,CACnB,IAAI,EACJ;QACE,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,4BAA4B;QACzC,UAAU;KACX,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,IAA8B,CAAC;iBACzD;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAwC;IAClE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
|