@socketsecurity/mcp 0.0.6 → 0.0.7
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/build/index.js +10 -11
- package/build/index.js.map +1 -0
- package/build/mock-client/debug-client.js +138 -0
- package/build/mock-client/debug-client.js.map +1 -0
- package/build/mock-client/http-client.js +153 -0
- package/build/mock-client/http-client.js.map +1 -0
- package/build/mock-client/stdio-client.js +53 -0
- package/build/mock-client/stdio-client.js.map +1 -0
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -79,6 +79,12 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
|
|
|
79
79
|
})).describe("Array of packages to check"),
|
|
80
80
|
}, async ({ packages }) => {
|
|
81
81
|
logger.info(`Received request for ${packages.length} packages`);
|
|
82
|
+
const SOCKET_HEADERS = {
|
|
83
|
+
"user-agent": `socket-mcp/${VERSION}`,
|
|
84
|
+
"accept": "application/x-ndjson",
|
|
85
|
+
"content-type": "application/json",
|
|
86
|
+
"authorization": `Bearer ${SOCKET_API_KEY}`
|
|
87
|
+
};
|
|
82
88
|
// Build components array for the API request
|
|
83
89
|
const components = packages.map(pkg => {
|
|
84
90
|
const cleanedVersion = pkg.version.replace(/[\^~]/g, ''); // Remove ^ and ~ from version
|
|
@@ -105,7 +111,7 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
|
|
|
105
111
|
logger.error(errorMsg);
|
|
106
112
|
return {
|
|
107
113
|
content: [{ type: "text", text: errorMsg }],
|
|
108
|
-
isError:
|
|
114
|
+
isError: true
|
|
109
115
|
};
|
|
110
116
|
}
|
|
111
117
|
else if (!responseText.trim()) {
|
|
@@ -113,7 +119,7 @@ server.tool("depscore", "Get the dependency score of packages with the `depscore
|
|
|
113
119
|
logger.error(errorMsg);
|
|
114
120
|
return {
|
|
115
121
|
content: [{ type: "text", text: errorMsg }],
|
|
116
|
-
isError:
|
|
122
|
+
isError: true
|
|
117
123
|
};
|
|
118
124
|
}
|
|
119
125
|
try {
|
|
@@ -204,13 +210,6 @@ if (!SOCKET_API_KEY) {
|
|
|
204
210
|
process.exit(1);
|
|
205
211
|
}
|
|
206
212
|
}
|
|
207
|
-
// Now that we have the API key, set up the headers
|
|
208
|
-
const SOCKET_HEADERS = {
|
|
209
|
-
"user-agent": `socket-mcp/${VERSION}`,
|
|
210
|
-
"accept": "application/x-ndjson",
|
|
211
|
-
"content-type": "application/json",
|
|
212
|
-
"authorization": `Bearer ${SOCKET_API_KEY}`
|
|
213
|
-
};
|
|
214
213
|
if (useHttp) {
|
|
215
214
|
// HTTP mode with Server-Sent Events
|
|
216
215
|
logger.info(`Starting HTTP server on port ${port}`);
|
|
@@ -236,7 +235,7 @@ if (useHttp) {
|
|
|
236
235
|
}));
|
|
237
236
|
return;
|
|
238
237
|
}
|
|
239
|
-
if (url.pathname === '/
|
|
238
|
+
if (url.pathname === '/') {
|
|
240
239
|
if (req.method === 'POST') {
|
|
241
240
|
// Handle JSON-RPC messages
|
|
242
241
|
let body = '';
|
|
@@ -330,7 +329,7 @@ if (useHttp) {
|
|
|
330
329
|
});
|
|
331
330
|
httpServer.listen(port, () => {
|
|
332
331
|
logger.info(`Socket MCP HTTP server version ${VERSION} started successfully on port ${port}`);
|
|
333
|
-
logger.info(`Connect to: http://localhost:${port}
|
|
332
|
+
logger.info(`Connect to: http://localhost:${port}/`);
|
|
334
333
|
});
|
|
335
334
|
}
|
|
336
335
|
else {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import readline from 'readline';
|
|
4
|
+
// Simple JSON-RPC client for testing MCP server
|
|
5
|
+
class SimpleJSONRPCClient {
|
|
6
|
+
process;
|
|
7
|
+
rl;
|
|
8
|
+
requestId = 1;
|
|
9
|
+
pendingRequests = new Map();
|
|
10
|
+
constructor(command, args = [], env = {}) {
|
|
11
|
+
this.process = spawn(command, args, {
|
|
12
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
13
|
+
env: { ...process.env, ...env }
|
|
14
|
+
});
|
|
15
|
+
this.rl = readline.createInterface({
|
|
16
|
+
input: this.process.stdout,
|
|
17
|
+
crlfDelay: Infinity
|
|
18
|
+
});
|
|
19
|
+
this.rl.on('line', (line) => {
|
|
20
|
+
try {
|
|
21
|
+
const response = JSON.parse(line);
|
|
22
|
+
if (response.id && this.pendingRequests.has(response.id)) {
|
|
23
|
+
const { resolve, reject } = this.pendingRequests.get(response.id);
|
|
24
|
+
this.pendingRequests.delete(response.id);
|
|
25
|
+
if (response.error) {
|
|
26
|
+
reject(response.error);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resolve(response.result);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (response.method) {
|
|
33
|
+
console.log('Notification:', response);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.error('Failed to parse response:', line);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
this.process.stderr.on('data', (data) => {
|
|
41
|
+
console.error('Server stderr:', data.toString());
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async sendRequest(method, params = {}) {
|
|
45
|
+
const id = this.requestId++;
|
|
46
|
+
const request = {
|
|
47
|
+
jsonrpc: '2.0',
|
|
48
|
+
id,
|
|
49
|
+
method,
|
|
50
|
+
params
|
|
51
|
+
};
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
this.pendingRequests.set(id, { resolve, reject });
|
|
54
|
+
this.process.stdin.write(JSON.stringify(request) + '\n');
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
close() {
|
|
58
|
+
this.rl.close();
|
|
59
|
+
this.process.kill();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function main() {
|
|
63
|
+
const apiKey = process.env.SOCKET_API_KEY;
|
|
64
|
+
if (!apiKey) {
|
|
65
|
+
console.error('Error: SOCKET_API_KEY environment variable is required');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
console.log('Starting MCP server debug client...');
|
|
69
|
+
const client = new SimpleJSONRPCClient('./build/index.js', [], {
|
|
70
|
+
SOCKET_API_KEY: apiKey
|
|
71
|
+
});
|
|
72
|
+
try {
|
|
73
|
+
// Initialize the connection
|
|
74
|
+
console.log('\n1. Initializing connection...');
|
|
75
|
+
const initResult = await client.sendRequest('initialize', {
|
|
76
|
+
protocolVersion: '0.1.0',
|
|
77
|
+
capabilities: {},
|
|
78
|
+
clientInfo: {
|
|
79
|
+
name: 'debug-client',
|
|
80
|
+
version: '1.0.0'
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
console.log('Initialize response:', JSON.stringify(initResult, null, 2));
|
|
84
|
+
// List available tools
|
|
85
|
+
console.log('\n2. Listing available tools...');
|
|
86
|
+
const toolsResult = await client.sendRequest('tools/list', {});
|
|
87
|
+
console.log('Available tools:', JSON.stringify(toolsResult, null, 2));
|
|
88
|
+
// Call the depscore tool
|
|
89
|
+
console.log('\n3. Calling depscore tool...');
|
|
90
|
+
const depscoreResult = await client.sendRequest('tools/call', {
|
|
91
|
+
name: 'depscore',
|
|
92
|
+
arguments: {
|
|
93
|
+
packages: [
|
|
94
|
+
{ depname: 'express', ecosystem: 'npm', version: '5.0.1' },
|
|
95
|
+
{ depname: 'lodash', ecosystem: 'npm', version: '4.17.21' },
|
|
96
|
+
{ depname: 'react', ecosystem: 'npm', version: '18.2.0' },
|
|
97
|
+
{ depname: 'flask', ecosystem: 'pypi', version: '2.3.2' },
|
|
98
|
+
{ depname: 'unknown-package', ecosystem: 'npm', version: 'unknown' }
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
console.log('Depscore result:', JSON.stringify(depscoreResult, null, 2));
|
|
103
|
+
// Test with minimal input
|
|
104
|
+
console.log('\n4. Testing with minimal input (default to npm)...');
|
|
105
|
+
const minimalResult = await client.sendRequest('tools/call', {
|
|
106
|
+
name: 'depscore',
|
|
107
|
+
arguments: {
|
|
108
|
+
packages: [
|
|
109
|
+
{ depname: 'axios' },
|
|
110
|
+
{ depname: 'typescript' }
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
console.log('Minimal input result:', JSON.stringify(minimalResult, null, 2));
|
|
115
|
+
// Test error handling
|
|
116
|
+
console.log('\n5. Testing error handling (empty packages)...');
|
|
117
|
+
try {
|
|
118
|
+
await client.sendRequest('tools/call', {
|
|
119
|
+
name: 'depscore',
|
|
120
|
+
arguments: {
|
|
121
|
+
packages: []
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.log('Expected error:', error);
|
|
127
|
+
}
|
|
128
|
+
console.log('\nDebug session complete!');
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error('Client error:', error);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
client.close();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
main().catch(console.error);
|
|
138
|
+
//# sourceMappingURL=debug-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-client.js","sourceRoot":"","sources":["../../mock-client/debug-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fetch from 'node-fetch';
|
|
3
|
+
// Helper function to parse SSE or JSON response
|
|
4
|
+
async function parseResponse(response) {
|
|
5
|
+
const contentType = response.headers.get('content-type');
|
|
6
|
+
const text = await response.text();
|
|
7
|
+
if (contentType?.includes('text/event-stream')) {
|
|
8
|
+
// Parse SSE format: "event: message\ndata: {json}\n"
|
|
9
|
+
const dataMatch = text.match(/data: (.+)/);
|
|
10
|
+
if (dataMatch) {
|
|
11
|
+
return JSON.parse(dataMatch[1]);
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return JSON.parse(text);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Simple HTTP client for testing MCP server in HTTP mode
|
|
20
|
+
async function testHTTPMode() {
|
|
21
|
+
const baseUrl = (process.env.MCP_URL || 'http://localhost:3000').replace(/\/$/, ''); // Remove trailing slash
|
|
22
|
+
const sessionId = `test-session-${Date.now()}`;
|
|
23
|
+
console.log('Testing Socket MCP in HTTP mode...');
|
|
24
|
+
console.log(`Server URL: ${baseUrl}`);
|
|
25
|
+
console.log(`Session ID: ${sessionId}`);
|
|
26
|
+
try {
|
|
27
|
+
// 1. Initialize connection
|
|
28
|
+
console.log('\n1. Initializing connection...');
|
|
29
|
+
const initRequest = {
|
|
30
|
+
jsonrpc: '2.0',
|
|
31
|
+
id: 1,
|
|
32
|
+
method: 'initialize',
|
|
33
|
+
params: {
|
|
34
|
+
protocolVersion: '0.1.0',
|
|
35
|
+
capabilities: {},
|
|
36
|
+
clientInfo: {
|
|
37
|
+
name: 'http-debug-client',
|
|
38
|
+
version: '1.0.0'
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const initResponse = await fetch(`${baseUrl}/`, {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
headers: {
|
|
45
|
+
'Content-Type': 'application/json',
|
|
46
|
+
'Accept': 'application/json, text/event-stream',
|
|
47
|
+
'User-Agent': 'socket-mcp-debug-client/1.0.0'
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify(initRequest)
|
|
50
|
+
});
|
|
51
|
+
const initResult = await parseResponse(initResponse);
|
|
52
|
+
console.log('Initialize response:', JSON.stringify(initResult, null, 2));
|
|
53
|
+
// Extract session ID from response headers
|
|
54
|
+
const serverSessionId = initResponse.headers.get('mcp-session-id');
|
|
55
|
+
const actualSessionId = serverSessionId || sessionId;
|
|
56
|
+
console.log('Session ID:', actualSessionId);
|
|
57
|
+
// 2. List tools
|
|
58
|
+
console.log('\n2. Listing available tools...');
|
|
59
|
+
const toolsRequest = {
|
|
60
|
+
jsonrpc: '2.0',
|
|
61
|
+
id: 2,
|
|
62
|
+
method: 'tools/list',
|
|
63
|
+
params: {}
|
|
64
|
+
};
|
|
65
|
+
const toolsResponse = await fetch(`${baseUrl}/`, {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: {
|
|
68
|
+
'Content-Type': 'application/json',
|
|
69
|
+
'Accept': 'application/json, text/event-stream',
|
|
70
|
+
'mcp-session-id': actualSessionId
|
|
71
|
+
},
|
|
72
|
+
body: JSON.stringify(toolsRequest)
|
|
73
|
+
});
|
|
74
|
+
const toolsResult = await parseResponse(toolsResponse);
|
|
75
|
+
console.log('Available tools:', JSON.stringify(toolsResult, null, 2));
|
|
76
|
+
// 3. Call depscore
|
|
77
|
+
console.log('\n3. Calling depscore tool...');
|
|
78
|
+
const depscoreRequest = {
|
|
79
|
+
jsonrpc: '2.0',
|
|
80
|
+
id: 3,
|
|
81
|
+
method: 'tools/call',
|
|
82
|
+
params: {
|
|
83
|
+
name: 'depscore',
|
|
84
|
+
arguments: {
|
|
85
|
+
packages: [
|
|
86
|
+
{ depname: 'express', ecosystem: 'npm', version: '4.18.2' },
|
|
87
|
+
{ depname: 'fastapi', ecosystem: 'pypi', version: '0.100.0' },
|
|
88
|
+
{ depname: 'react', ecosystem: 'npm', version: '18.2.0' }
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const depscoreResponse = await fetch(`${baseUrl}/`, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: {
|
|
96
|
+
'Content-Type': 'application/json',
|
|
97
|
+
'Accept': 'application/json, text/event-stream',
|
|
98
|
+
'mcp-session-id': actualSessionId
|
|
99
|
+
},
|
|
100
|
+
body: JSON.stringify(depscoreRequest)
|
|
101
|
+
});
|
|
102
|
+
const depscoreResult = await parseResponse(depscoreResponse);
|
|
103
|
+
console.log('Depscore result:', JSON.stringify(depscoreResult, null, 2));
|
|
104
|
+
// 4. Test SSE stream (optional)
|
|
105
|
+
console.log('\n4. Testing SSE stream connection...');
|
|
106
|
+
const sseResponse = await fetch(`${baseUrl}/`, {
|
|
107
|
+
method: 'GET',
|
|
108
|
+
headers: {
|
|
109
|
+
'mcp-session-id': actualSessionId,
|
|
110
|
+
'Accept': 'text/event-stream'
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
if (sseResponse.ok) {
|
|
114
|
+
console.log('SSE stream connected successfully');
|
|
115
|
+
// Note: In a real implementation, you'd parse the SSE stream
|
|
116
|
+
}
|
|
117
|
+
// 5. Clean up session
|
|
118
|
+
console.log('\n5. Cleaning up session...');
|
|
119
|
+
const cleanupResponse = await fetch(`${baseUrl}/`, {
|
|
120
|
+
method: 'DELETE',
|
|
121
|
+
headers: {
|
|
122
|
+
'mcp-session-id': actualSessionId
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
console.log('Session cleanup:', cleanupResponse.status === 200 ? 'Success' : 'Failed');
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error('Error:', error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Usage instructions
|
|
132
|
+
if (process.argv.includes('--help')) {
|
|
133
|
+
console.log(`
|
|
134
|
+
Socket MCP HTTP Client Debugger
|
|
135
|
+
|
|
136
|
+
Usage:
|
|
137
|
+
# Start the MCP server in HTTP mode first:
|
|
138
|
+
MCP_HTTP_MODE=true SOCKET_API_KEY=your-api-key ./build/index.js
|
|
139
|
+
|
|
140
|
+
# Then run this client:
|
|
141
|
+
npm run build
|
|
142
|
+
node ./build/http-client.js
|
|
143
|
+
|
|
144
|
+
Environment variables:
|
|
145
|
+
MCP_URL - Server URL (default: http://localhost:3000)
|
|
146
|
+
|
|
147
|
+
Example:
|
|
148
|
+
MCP_URL=http://localhost:8080 node ./build/http-client.js
|
|
149
|
+
`);
|
|
150
|
+
process.exit(0);
|
|
151
|
+
}
|
|
152
|
+
testHTTPMode().catch(console.error);
|
|
153
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../mock-client/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
3
|
+
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
4
|
+
async function main() {
|
|
5
|
+
const transport = new StdioClientTransport({
|
|
6
|
+
command: './build/index.js',
|
|
7
|
+
args: [],
|
|
8
|
+
env: {
|
|
9
|
+
...process.env,
|
|
10
|
+
SOCKET_API_KEY: process.env.SOCKET_API_KEY || ''
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const client = new Client({
|
|
14
|
+
name: 'test-mcp-client',
|
|
15
|
+
version: '1.0.0'
|
|
16
|
+
}, {
|
|
17
|
+
capabilities: {}
|
|
18
|
+
});
|
|
19
|
+
try {
|
|
20
|
+
await client.connect(transport);
|
|
21
|
+
console.log('Connected to MCP server');
|
|
22
|
+
// List available tools
|
|
23
|
+
const tools = await client.listTools();
|
|
24
|
+
console.log('Available tools:', tools.tools.map(t => t.name));
|
|
25
|
+
// Test the depscore tool
|
|
26
|
+
const testPackages = [
|
|
27
|
+
{ depname: 'express', ecosystem: 'npm', version: '4.18.2' },
|
|
28
|
+
{ depname: 'lodash', ecosystem: 'npm', version: '4.17.21' },
|
|
29
|
+
{ depname: 'react', ecosystem: 'npm', version: '18.2.0' },
|
|
30
|
+
{ depname: 'requests', ecosystem: 'pypi', version: '2.31.0' },
|
|
31
|
+
{ depname: 'unknown-package', ecosystem: 'npm', version: 'unknown' }
|
|
32
|
+
];
|
|
33
|
+
console.log('\nTesting depscore with packages:', testPackages);
|
|
34
|
+
const result = await client.callTool({
|
|
35
|
+
name: 'depscore',
|
|
36
|
+
arguments: {
|
|
37
|
+
packages: testPackages
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
console.log('\nDepscore results:');
|
|
41
|
+
console.log(JSON.stringify(result, null, 2));
|
|
42
|
+
await client.close();
|
|
43
|
+
console.log('\nClient closed successfully');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Error:', error);
|
|
47
|
+
await client.close();
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Run the client
|
|
52
|
+
main().catch(console.error);
|
|
53
|
+
//# sourceMappingURL=stdio-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../mock-client/stdio-client.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;QACzC,OAAO,EAAE,kBAAkB;QAC3B,IAAI,EAAE,EAAE;QACR,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;SACjD;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,EAAE;QACD,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9D,yBAAyB;QACzB,MAAM,YAAY,GAAG;YACnB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC3D,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAC3D,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;YACzD,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC7D,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;SACrE,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE;gBACT,QAAQ,EAAE,YAAY;aACvB;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|