@vibebrowser/mcp 0.1.0 → 0.2.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/README.md CHANGED
@@ -1,35 +1,61 @@
1
- # Vibe MCP
1
+ # Vibe MCP - Browser Automation for AI Agents
2
2
 
3
- MCP server for [Vibe AI Browser](https://vibebrowser.app) - allows AI agents to control your browser.
3
+ [![npm version](https://img.shields.io/npm/v/@vibebrowser/mcp.svg)](https://www.npmjs.com/package/@vibebrowser/mcp)
4
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
4
5
 
5
- ## What is this?
6
+ MCP server for [Vibe AI Browser](https://vibebrowser.app) - the **only browser automation tool that supports multiple AI agents simultaneously**.
6
7
 
7
- Vibe MCP connects AI applications like Claude Desktop, Cursor, VS Code, and others to your Chrome browser through the Vibe extension. This enables AI to:
8
+ ## Why Vibe MCP?
8
9
 
9
- - Navigate to websites
10
- - Click buttons and links
11
- - Fill out forms
12
- - Take screenshots
13
- - Extract page content
14
- - And much more
10
+ | Feature | Vibe MCP | Playwright MCP | BrowserMCP |
11
+ |---------|----------|----------------|------------|
12
+ | **Multi-Agent Support** | Yes | No | No |
13
+ | Uses Your Browser Profile | Yes | No | No |
14
+ | Logged-In Sessions | Yes | No | No |
15
+ | No Separate Browser | Yes | No | No |
16
+ | Local & Private | Yes | Yes | Partial |
17
+ | Content Script Based | Yes | No | No |
18
+
19
+ ### Multi-Agent Architecture
20
+
21
+ Vibe MCP is the **only solution that allows multiple AI agents to control the same browser simultaneously**. Run Claude Desktop, Cursor, VS Code Copilot, and OpenCode all at once - they all share control of your browser through our relay architecture.
22
+
23
+ ```
24
+ Claude Desktop Cursor VS Code OpenCode
25
+ | | | |
26
+ v v v v
27
+ [vibe-mcp] [vibe-mcp] [vibe-mcp] [vibe-mcp]
28
+ | | | |
29
+ +------------------+----------------+---------------+
30
+ |
31
+ v
32
+ [Relay Daemon] <-- Auto-spawned, handles multiplexing
33
+ |
34
+ v
35
+ [Vibe Extension]
36
+ |
37
+ v
38
+ [Your Chrome]
39
+ ```
40
+
41
+ **Competitors like Playwright MCP and BrowserMCP fail when you try to run multiple agents** - they get port conflicts or connection errors. Vibe MCP just works.
15
42
 
16
43
  ## Features
17
44
 
18
- - **Fast** - Automation happens locally on your machine
19
- - **Private** - Your browser activity stays on your device
20
- - **Logged In** - Uses your existing browser profile with all your sessions
21
- - **Stable** - Uses content scripts instead of CDP, avoiding common disconnection issues
45
+ - **Multi-Agent Ready** - Run Claude, Cursor, VS Code, and more simultaneously
46
+ - **Uses Your Browser** - No separate browser instance, uses your existing Chrome with all your logins
47
+ - **Fast & Local** - Automation happens on your machine, no cloud latency
48
+ - **Private** - Your browsing data never leaves your device
49
+ - **Stable** - Content script based, no flaky CDP connections
22
50
 
23
- ## Installation
51
+ ## Quick Start
24
52
 
25
53
  ### 1. Install the Vibe Extension
26
54
 
27
- Install the Vibe AI Browser extension from [vibebrowser.app](https://vibebrowser.app) or the [Chrome Web Store](https://chrome.google.com/webstore).
55
+ Get the Vibe AI Browser extension from [vibebrowser.app](https://vibebrowser.app) or the [Chrome Web Store](https://chromewebstore.google.com/detail/vibe-ai-web-agent/ajfjlohdpfgngdjfafhhcnpmijbbdgln).
28
56
 
29
57
  ### 2. Configure Your AI Application
30
58
 
31
- Add the Vibe MCP server to your AI application's configuration:
32
-
33
59
  <details>
34
60
  <summary><strong>Claude Desktop</strong></summary>
35
61
 
@@ -56,7 +82,7 @@ Restart Claude Desktop after saving.
56
82
  <summary><strong>Cursor</strong></summary>
57
83
 
58
84
  1. Open Cursor Settings (Cmd/Ctrl + ,)
59
- 2. Go to "Features" "MCP Servers"
85
+ 2. Go to "Features" -> "MCP Servers"
60
86
  3. Click "Add Server" and add:
61
87
 
62
88
  ```json
@@ -88,8 +114,6 @@ Add to your VS Code settings.json:
88
114
  }
89
115
  ```
90
116
 
91
- Or use the MCP extension settings UI.
92
-
93
117
  </details>
94
118
 
95
119
  <details>
@@ -170,91 +194,76 @@ Add to your Codex configuration:
170
194
 
171
195
  1. Open Chrome with the Vibe extension installed
172
196
  2. Click the Vibe extension icon in the toolbar
173
- 3. Click "Connect to MCP" to enable external control
197
+ 3. Go to Settings and enable "MCP External Control"
174
198
  4. The status should show "Connected"
175
199
 
176
200
  ## Available Tools
177
201
 
178
- The MCP server exposes all Vibe browser tools:
179
-
180
202
  | Tool | Description |
181
203
  |------|-------------|
182
- | `navigate_to_url` | Navigate to a URL |
183
- | `go_back` | Go back in history |
184
- | `go_forward` | Go forward in history |
185
- | `click` | Click an element |
186
- | `type` | Type text into an element |
187
- | `fill` | Fill a form field |
204
+ | `navigate_to_url` | Navigate to any URL |
205
+ | `go_back` / `go_forward` | Browser history navigation |
206
+ | `click` | Click elements on the page |
207
+ | `type` / `fill` | Enter text into inputs |
188
208
  | `scroll` | Scroll the page |
189
- | `take_screenshot` | Capture a screenshot |
190
- | `get_page_content` | Get page text content |
191
- | `list_tabs` | List open browser tabs |
192
- | `create_new_tab` | Open a new tab |
193
- | `switch_to_tab` | Switch to a tab |
194
- | `close_tab` | Close a tab |
195
- | `keyboard_shortcut` | Press keyboard shortcuts |
209
+ | `take_screenshot` | Capture screenshots |
210
+ | `get_page_content` | Extract page text/HTML |
211
+ | `get_tabs` / `create_new_tab` / `switch_to_tab` / `close_tab` | Tab management |
212
+ | `keyboard_shortcut` | Press keyboard combinations |
196
213
  | `web_search` | Search the web |
197
214
 
198
- ## CLI Options
199
-
200
- ```bash
201
- npx @anthropic/vibe-mcp --help
202
-
203
- Options:
204
- -p, --port <number> WebSocket port for extension connection (default: 19989)
205
- -d, --debug Enable debug logging
206
- -h, --help Show help
207
- ```
208
-
209
- ## Architecture
215
+ ## How It Works
210
216
 
211
217
  ```
212
218
  ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
213
- │ AI Application │────►│ Vibe MCP Server │────►│ Vibe Extension │
214
- │ (Claude/Cursor) │stdio│ (this package) │ WS │ (Chrome) │
219
+ │ AI Application │────>│ Vibe MCP │────>│ Vibe Extension │
220
+ │ (Claude/Cursor) │stdio│ (this package) │ WS │ (Chrome) │
215
221
  └─────────────────┘ └─────────────────┘ └─────────────────┘
216
222
  ```
217
223
 
218
- The MCP server:
219
- 1. Receives tool calls from AI applications via stdio (MCP protocol)
220
- 2. Forwards them to the Vibe extension via WebSocket
221
- 3. Returns results back to the AI application
224
+ 1. AI applications connect via MCP protocol (stdio)
225
+ 2. Vibe MCP forwards commands to the browser extension via WebSocket
226
+ 3. The extension executes actions in your actual browser
227
+ 4. Results flow back to the AI
222
228
 
223
- ## Troubleshooting
229
+ ### Multi-Agent Mode
224
230
 
225
- ### "No connection to Vibe extension"
231
+ When multiple agents connect, Vibe MCP automatically spawns a relay daemon:
226
232
 
227
- 1. Make sure the Vibe extension is installed in Chrome
228
- 2. Click the extension icon and ensure "Connect to MCP" is enabled
229
- 3. Check that no other application is using port 19989
233
+ - First agent starts the relay (listens on ports 19988 and 19989)
234
+ - Additional agents connect to the relay as clients
235
+ - Relay multiplexes all agent requests to the single extension connection
236
+ - Each agent receives only its own responses
230
237
 
231
- ### Port already in use
238
+ ## CLI Options
232
239
 
233
- Use a different port:
240
+ ```bash
241
+ npx @vibebrowser/mcp --help
234
242
 
235
- ```json
236
- {
237
- "mcpServers": {
238
- "vibe": {
239
- "command": "npx",
240
- "args": ["-y", "@anthropic/vibe-mcp", "--port", "19990"]
241
- }
242
- }
243
- }
243
+ Options:
244
+ -p, --port <number> WebSocket port for extension (default: 19989)
245
+ -d, --debug Enable debug logging
246
+ -h, --help Show help
244
247
  ```
245
248
 
246
- Make sure to also update the port in the extension settings.
249
+ ## Troubleshooting
250
+
251
+ ### "No connection to Vibe extension"
252
+
253
+ 1. Ensure the Vibe extension is installed in Chrome
254
+ 2. Click the extension icon and enable "MCP External Control" in Settings
255
+ 3. Check that no firewall is blocking localhost connections
247
256
 
248
257
  ### Debug mode
249
258
 
250
- Enable debug logging to see what's happening:
259
+ Enable debug logging to diagnose issues:
251
260
 
252
261
  ```json
253
262
  {
254
263
  "mcpServers": {
255
264
  "vibe": {
256
265
  "command": "npx",
257
- "args": ["-y", "@anthropic/vibe-mcp", "--debug"]
266
+ "args": ["-y", "@vibebrowser/mcp", "--debug"]
258
267
  }
259
268
  }
260
269
  }
@@ -263,27 +272,25 @@ Enable debug logging to see what's happening:
263
272
  ## Development
264
273
 
265
274
  ```bash
266
- # Clone the repository
267
275
  git clone https://github.com/VibeTechnologies/vibe-mcp.git
268
276
  cd vibe-mcp
269
-
270
- # Install dependencies
271
277
  npm install
272
-
273
- # Build
274
278
  npm run build
275
-
276
- # Run locally
277
279
  node dist/cli.js --debug
278
280
  ```
279
281
 
282
+ ## Keywords
283
+
284
+ browser automation, mcp server, model context protocol, ai browser control, claude desktop browser, cursor browser automation, web automation, chrome automation, ai agent browser, multi-agent browser control, playwright alternative, puppeteer alternative, browser mcp, web scraping ai, ai web agent
285
+
280
286
  ## License
281
287
 
282
288
  Apache-2.0
283
289
 
284
290
  ## Links
285
291
 
286
- - [Vibe AI Browser](https://vibebrowser.app)
287
- - [Documentation](https://docs.vibebrowser.app)
288
- - [GitHub](https://github.com/VibeTechnologies/vibe-mcp)
289
- - [Report Issues](https://github.com/VibeTechnologies/vibe-mcp/issues)
292
+ - [Vibe AI Browser](https://vibebrowser.app) - Main product
293
+ - [Documentation](https://docs.vibebrowser.app) - Full docs
294
+ - [Chrome Extension](https://chromewebstore.google.com/detail/vibe-ai-web-agent/ajfjlohdpfgngdjfafhhcnpmijbbdgln) - Install extension
295
+ - [GitHub Issues](https://github.com/VibeTechnologies/vibe-mcp/issues) - Report bugs
296
+ - [npm Package](https://www.npmjs.com/package/@vibebrowser/mcp) - npm registry
package/dist/cli.js CHANGED
@@ -1,19 +1,17 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
2
  /**
4
3
  * Vibe MCP Server - CLI Entry Point
5
4
  *
6
5
  * Command-line interface for starting the MCP server.
7
6
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const commander_1 = require("commander");
10
- const server_js_1 = require("./server.js");
11
- const types_js_1 = require("./types.js");
12
- commander_1.program
7
+ import { program } from 'commander';
8
+ import { createServer } from './server.js';
9
+ import { DEFAULT_WS_PORT } from './types.js';
10
+ program
13
11
  .name('vibe-mcp')
14
12
  .description('MCP server for Vibe AI Browser - allows AI agents to control your browser')
15
13
  .version('0.1.0')
16
- .option('-p, --port <number>', 'WebSocket port for extension connection', String(types_js_1.DEFAULT_WS_PORT))
14
+ .option('-p, --port <number>', 'WebSocket port for extension connection', String(DEFAULT_WS_PORT))
17
15
  .option('-d, --debug', 'Enable debug logging', false)
18
16
  .action(async (options) => {
19
17
  const port = parseInt(options.port, 10);
@@ -22,7 +20,7 @@ commander_1.program
22
20
  process.exit(1);
23
21
  }
24
22
  try {
25
- await (0, server_js_1.createServer)({
23
+ await createServer({
26
24
  port,
27
25
  debug: options.debug,
28
26
  });
@@ -33,5 +31,5 @@ commander_1.program
33
31
  process.exit(1);
34
32
  }
35
33
  });
36
- commander_1.program.parse();
34
+ program.parse();
37
35
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,yCAAoC;AACpC,2CAA2C;AAC3C,yCAA6C;AAE7C,mBAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,2EAA2E,CAAC;KACxF,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,EAAE,MAAM,CAAC,0BAAe,CAAC,CAAC;KACjG,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,wBAAY,EAAC;YACjB,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mBAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,2EAA2E,CAAC;KACxF,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;KACjG,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,CAAC;YACjB,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Vibe MCP Server - Extension Connection
2
+ * Vibe MCP Server - Relay Connection
3
3
  *
4
- * Manages WebSocket connection to the Vibe browser extension.
4
+ * Connects to the relay server as a WebSocket client.
5
+ * The relay handles the actual extension connection.
5
6
  */
6
7
  import { EventEmitter } from 'events';
7
8
  import { ConnectionStatus, ToolDefinition, ToolResult, SnapshotResult } from './types.js';
8
9
  /**
9
- * Extension connection manager
10
+ * Relay connection manager
11
+ *
12
+ * Connects to the relay server instead of directly to the extension.
10
13
  */
11
14
  export declare class ExtensionConnection extends EventEmitter {
12
- private wss;
13
15
  private ws;
14
16
  private status;
15
17
  private pendingRequests;
@@ -18,25 +20,39 @@ export declare class ExtensionConnection extends EventEmitter {
18
20
  private debug;
19
21
  private tools;
20
22
  private reconnectTimer;
23
+ private extensionConnected;
21
24
  constructor(port?: number, debug?: boolean);
22
25
  /**
23
- * Start the WebSocket server and wait for extension connection
26
+ * Start connection to relay server
27
+ * Spawns relay daemon if not already running
24
28
  */
25
29
  start(): Promise<void>;
26
30
  /**
27
- * Stop the WebSocket server
31
+ * Spawn relay daemon as detached process
28
32
  */
29
- stop(): Promise<void>;
33
+ private spawnRelay;
34
+ /**
35
+ * Wait for relay to become available
36
+ */
37
+ private waitForRelay;
38
+ /**
39
+ * Connect to the relay server
40
+ */
41
+ private connectToRelay;
30
42
  /**
31
- * Handle new WebSocket connection from extension
43
+ * Schedule reconnection attempt
32
44
  */
33
- private handleConnection;
45
+ private scheduleReconnect;
34
46
  /**
35
- * Handle message from extension
47
+ * Stop the connection
48
+ */
49
+ stop(): Promise<void>;
50
+ /**
51
+ * Handle message from relay
36
52
  */
37
53
  private handleMessage;
38
54
  /**
39
- * Send a message to the extension and wait for response
55
+ * Send a message to the extension via relay and wait for response
40
56
  */
41
57
  private sendRequest;
42
58
  /**
@@ -56,13 +72,17 @@ export declare class ExtensionConnection extends EventEmitter {
56
72
  */
57
73
  getSnapshot(): Promise<SnapshotResult>;
58
74
  /**
59
- * Check if extension is connected
75
+ * Check if extension is connected (via relay)
60
76
  */
61
77
  isConnected(): boolean;
62
78
  /**
63
79
  * Get connection status
64
80
  */
65
81
  getStatus(): ConnectionStatus;
82
+ /**
83
+ * Check if extension is connected to relay
84
+ */
85
+ isExtensionConnected(): boolean;
66
86
  /**
67
87
  * Log message if debug is enabled
68
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,gBAAgB,EAGhB,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,YAAY,CAAC;AAgBpB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,cAAc,CAA+B;gBAEzC,IAAI,GAAE,MAAwB,EAAE,KAAK,GAAE,OAAe;IAMlE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;YACW,WAAW;IA6BzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAM/C;;OAEG;IACH,QAAQ,IAAI,cAAc,EAAE;IAI5B;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhF;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EACL,gBAAgB,EAGhB,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,YAAY,CAAC;AAoBpB;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,kBAAkB,CAAkB;gBAEhC,IAAI,GAAE,MAAmB,EAAE,KAAK,GAAE,OAAe;IAM7D;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;YACW,UAAU;IAaxB;;OAEG;YACW,YAAY;IAoC1B;;OAEG;YACW,cAAc;IA6C5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAmDrB;;OAEG;YACW,WAAW;IAiCzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAM/C;;OAEG;IACH,QAAQ,IAAI,cAAc,EAAE;IAI5B;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhF;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}