@quukk/opencode-clawmessenger 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/README.md +526 -0
- package/bin/opencode-clawmessenger +2 -0
- package/bin/opencode-clawmessenger-setup +5 -0
- package/bin/opencode-clawmessenger.cmd +5 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +288 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/auto-register.d.ts +24 -0
- package/dist/core/auto-register.d.ts.map +1 -0
- package/dist/core/auto-register.js +174 -0
- package/dist/core/auto-register.js.map +1 -0
- package/dist/core/config.d.ts +68 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +80 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/daemon.d.ts +19 -0
- package/dist/core/daemon.d.ts.map +1 -0
- package/dist/core/daemon.js +77 -0
- package/dist/core/daemon.js.map +1 -0
- package/dist/core/dedup.d.ts +8 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +25 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/hook-manager.d.ts +11 -0
- package/dist/core/hook-manager.d.ts.map +1 -0
- package/dist/core/hook-manager.js +33 -0
- package/dist/core/hook-manager.js.map +1 -0
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +49 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mac-address.d.ts +2 -0
- package/dist/core/mac-address.d.ts.map +1 -0
- package/dist/core/mac-address.js +43 -0
- package/dist/core/mac-address.js.map +1 -0
- package/dist/core/message-handler.d.ts +64 -0
- package/dist/core/message-handler.d.ts.map +1 -0
- package/dist/core/message-handler.js +879 -0
- package/dist/core/message-handler.js.map +1 -0
- package/dist/core/ops-assistant.d.ts +26 -0
- package/dist/core/ops-assistant.d.ts.map +1 -0
- package/dist/core/ops-assistant.js +270 -0
- package/dist/core/ops-assistant.js.map +1 -0
- package/dist/core/qr-crypto.d.ts +2 -0
- package/dist/core/qr-crypto.d.ts.map +1 -0
- package/dist/core/qr-crypto.js +66 -0
- package/dist/core/qr-crypto.js.map +1 -0
- package/dist/core/session-manager.d.ts +22 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +144 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +26 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/openclaw/client.d.ts +36 -0
- package/dist/openclaw/client.d.ts.map +1 -0
- package/dist/openclaw/client.js +494 -0
- package/dist/openclaw/client.js.map +1 -0
- package/dist/opencode/client.d.ts +35 -0
- package/dist/opencode/client.d.ts.map +1 -0
- package/dist/opencode/client.js +276 -0
- package/dist/opencode/client.js.map +1 -0
- package/dist/opencode/event-handler.d.ts +38 -0
- package/dist/opencode/event-handler.d.ts.map +1 -0
- package/dist/opencode/event-handler.js +467 -0
- package/dist/opencode/event-handler.js.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +84 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rongcloud/client.d.ts +34 -0
- package/dist/rongcloud/client.d.ts.map +1 -0
- package/dist/rongcloud/client.js +292 -0
- package/dist/rongcloud/client.js.map +1 -0
- package/dist/rongcloud/env-polyfill.d.ts +2 -0
- package/dist/rongcloud/env-polyfill.d.ts.map +1 -0
- package/dist/rongcloud/env-polyfill.js +107 -0
- package/dist/rongcloud/env-polyfill.js.map +1 -0
- package/dist/rongcloud/server-api.d.ts +38 -0
- package/dist/rongcloud/server-api.d.ts.map +1 -0
- package/dist/rongcloud/server-api.js +157 -0
- package/dist/rongcloud/server-api.js.map +1 -0
- package/dist/standalone.d.ts +10 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +229 -0
- package/dist/standalone.js.map +1 -0
- package/dist/types/plugin.d.ts +20 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +2 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/websocket/client.d.ts +20 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +88 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/server-client.d.ts +22 -0
- package/dist/websocket/server-client.d.ts.map +1 -0
- package/dist/websocket/server-client.js +98 -0
- package/dist/websocket/server-client.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { createOpencodeClient } from '@opencode-ai/sdk/v2/client';
|
|
2
|
+
import { createLogger } from '../core/logger.js';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { existsSync, readFileSync } from 'fs';
|
|
5
|
+
const log = createLogger('OpenCodeClient');
|
|
6
|
+
/**
|
|
7
|
+
* 序列化错误对象为可读的字符串
|
|
8
|
+
* 解决 JSON.stringify(Error) 返回 {} 的问题
|
|
9
|
+
*/
|
|
10
|
+
export function serializeError(error) {
|
|
11
|
+
if (error instanceof Error) {
|
|
12
|
+
return error.message || error.name || 'Unknown Error';
|
|
13
|
+
}
|
|
14
|
+
if (typeof error === 'object' && error !== null) {
|
|
15
|
+
const err = error;
|
|
16
|
+
if (err.message)
|
|
17
|
+
return err.message;
|
|
18
|
+
if (err.error)
|
|
19
|
+
return typeof err.error === 'string' ? err.error : JSON.stringify(err.error);
|
|
20
|
+
if (err.detail)
|
|
21
|
+
return err.detail;
|
|
22
|
+
if (err.statusText)
|
|
23
|
+
return err.statusText;
|
|
24
|
+
return JSON.stringify(error);
|
|
25
|
+
}
|
|
26
|
+
return String(error);
|
|
27
|
+
}
|
|
28
|
+
export class OpenCodeClient {
|
|
29
|
+
constructor(options) {
|
|
30
|
+
this.baseUrl = options.baseUrl;
|
|
31
|
+
this.directory = options.directory || process.cwd();
|
|
32
|
+
const config = {
|
|
33
|
+
baseUrl: this.baseUrl,
|
|
34
|
+
directory: this.directory,
|
|
35
|
+
};
|
|
36
|
+
// 如果提供了密码,添加到请求头
|
|
37
|
+
if (options.password) {
|
|
38
|
+
config.headers = {
|
|
39
|
+
'Authorization': `Basic ${Buffer.from(`opencode:${options.password}`).toString('base64')}`
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
this.client = createOpencodeClient(config);
|
|
43
|
+
// 加载 system prompt
|
|
44
|
+
this.systemPrompt = this.loadSystemPrompt();
|
|
45
|
+
log.info({
|
|
46
|
+
hasSystemPrompt: !!this.systemPrompt,
|
|
47
|
+
systemPromptLength: this.systemPrompt?.length || 0,
|
|
48
|
+
directory: this.directory
|
|
49
|
+
}, 'OpenCodeClient initialized');
|
|
50
|
+
}
|
|
51
|
+
loadSystemPrompt() {
|
|
52
|
+
// 1. 首先尝试加载 soul/ 目录下的魂器文件(和 hunqi 插件相同逻辑)
|
|
53
|
+
const soulFiles = ['IDENTITY.md', 'SOUL.md', 'USER.md', 'AGENTS.md'];
|
|
54
|
+
const soulParts = [];
|
|
55
|
+
for (const filename of soulFiles) {
|
|
56
|
+
const filepath = join(this.directory, 'soul', filename);
|
|
57
|
+
if (existsSync(filepath)) {
|
|
58
|
+
try {
|
|
59
|
+
const content = readFileSync(filepath, 'utf-8');
|
|
60
|
+
if (content.trim().length > 0) {
|
|
61
|
+
soulParts.push(`=== ${filename} ===\n\n${content}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
log.warn({ err, filepath }, 'Failed to read soul file');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (soulParts.length > 0) {
|
|
70
|
+
const soulText = soulParts.join('\n\n---\n\n');
|
|
71
|
+
log.info({ soulFilesLoaded: soulParts.length, totalLength: soulText.length }, 'Loaded soul framework files');
|
|
72
|
+
return soulText;
|
|
73
|
+
}
|
|
74
|
+
// 2. 回退到 .opencode/prompt.md
|
|
75
|
+
try {
|
|
76
|
+
const promptPath = join(this.directory, '.opencode', 'prompt.md');
|
|
77
|
+
log.info({ promptPath }, 'Looking for system prompt');
|
|
78
|
+
if (existsSync(promptPath)) {
|
|
79
|
+
const content = readFileSync(promptPath, 'utf-8');
|
|
80
|
+
if (content.trim().length > 0) {
|
|
81
|
+
log.info({ path: promptPath, length: content.length }, 'Loaded system prompt');
|
|
82
|
+
return content;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
log.warn({ promptPath }, 'System prompt file not found');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
log.warn({ err }, 'Failed to load system prompt');
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
getBaseUrl() {
|
|
95
|
+
return this.baseUrl;
|
|
96
|
+
}
|
|
97
|
+
getSystemPrompt() {
|
|
98
|
+
return this.systemPrompt;
|
|
99
|
+
}
|
|
100
|
+
async createSession(title) {
|
|
101
|
+
const { data, error, response } = await this.client.session.create({ title });
|
|
102
|
+
if (error) {
|
|
103
|
+
const errStr = serializeError(error);
|
|
104
|
+
const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
|
|
105
|
+
throw new Error(`创建会话失败: ${errStr}${statusText}`);
|
|
106
|
+
}
|
|
107
|
+
const sessionId = data?.id || data?.session_id;
|
|
108
|
+
if (!sessionId)
|
|
109
|
+
throw new Error('创建会话返回空 ID');
|
|
110
|
+
log.info({ sessionId }, 'Session created');
|
|
111
|
+
return { id: sessionId };
|
|
112
|
+
}
|
|
113
|
+
async sessionExists(sessionId) {
|
|
114
|
+
try {
|
|
115
|
+
const { data } = await this.client.session.get({ sessionID: sessionId });
|
|
116
|
+
return !!data;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async sendPromptAsync(sessionId, text) {
|
|
123
|
+
const { error, response } = await this.client.session.promptAsync({
|
|
124
|
+
sessionID: sessionId,
|
|
125
|
+
system: this.systemPrompt,
|
|
126
|
+
parts: [{ type: 'text', text: text }],
|
|
127
|
+
});
|
|
128
|
+
if (error) {
|
|
129
|
+
const errStr = serializeError(error);
|
|
130
|
+
const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
|
|
131
|
+
throw new Error(`发送消息失败: ${errStr}${statusText}`);
|
|
132
|
+
}
|
|
133
|
+
log.info({ sessionId, hasSystemPrompt: !!this.systemPrompt }, 'promptAsync fired');
|
|
134
|
+
}
|
|
135
|
+
async sendPrompt(sessionId, text) {
|
|
136
|
+
const { error, response } = await this.client.session.prompt({
|
|
137
|
+
sessionID: sessionId,
|
|
138
|
+
system: this.systemPrompt,
|
|
139
|
+
parts: [{ type: 'text', text: text }],
|
|
140
|
+
});
|
|
141
|
+
if (error) {
|
|
142
|
+
const errStr = serializeError(error);
|
|
143
|
+
const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
|
|
144
|
+
throw new Error(`发送消息失败: ${errStr}${statusText}`);
|
|
145
|
+
}
|
|
146
|
+
log.info({ sessionId }, 'Prompt sent, waiting for response');
|
|
147
|
+
return this.waitForResponse(sessionId);
|
|
148
|
+
}
|
|
149
|
+
async subscribeGlobalEvents() {
|
|
150
|
+
const result = await this.client.global.event({});
|
|
151
|
+
log.info('Global SSE stream connected');
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
async waitForResponse(sessionId) {
|
|
155
|
+
try {
|
|
156
|
+
await this.client.v2.session.wait({ sessionID: sessionId });
|
|
157
|
+
log.info({ sessionId }, 'Session completed');
|
|
158
|
+
for (let i = 0; i < 30; i++) {
|
|
159
|
+
const { data: messages } = await this.client.session.messages({ sessionID: sessionId });
|
|
160
|
+
if (messages && Array.isArray(messages) && messages.length > 0) {
|
|
161
|
+
const lastMsg = messages[messages.length - 1];
|
|
162
|
+
if (lastMsg.parts && lastMsg.parts.length > 0) {
|
|
163
|
+
const textPart = lastMsg.parts.find((p) => p.type === 'text');
|
|
164
|
+
if (textPart && textPart.text) {
|
|
165
|
+
return textPart.text;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
170
|
+
}
|
|
171
|
+
return '回复已生成但无法读取内容';
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
log.error({ err, sessionId }, '等待会话完成失败');
|
|
175
|
+
return '响应超时,请稍后重试';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async fetchLastMessageText(sessionId) {
|
|
179
|
+
try {
|
|
180
|
+
const { data: messages } = await this.client.session.messages({ sessionID: sessionId });
|
|
181
|
+
log.info({ messageCount: messages?.length }, 'Fetched messages');
|
|
182
|
+
if (messages && Array.isArray(messages) && messages.length > 0) {
|
|
183
|
+
// 从后往前找 AI 的回复
|
|
184
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
185
|
+
const msg = messages[i];
|
|
186
|
+
const role = msg.role || msg.author?.role;
|
|
187
|
+
log.info({ index: i, role, info: msg.info, keys: Object.keys(msg).slice(0, 10), hasParts: !!msg.parts, partCount: msg.parts?.length }, 'Checking message');
|
|
188
|
+
if (role === 'assistant' || role === 'model') {
|
|
189
|
+
if (msg.parts && msg.parts.length > 0) {
|
|
190
|
+
const textPart = msg.parts.find((p) => p.type === 'text');
|
|
191
|
+
if (textPart?.text) {
|
|
192
|
+
log.info({ textLength: textPart.text.length }, 'Found AI response');
|
|
193
|
+
return textPart.text;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// 如果没找到 assistant 消息,返回最后一条消息的文本(可能是不同格式)
|
|
199
|
+
const lastMsg = messages[messages.length - 1];
|
|
200
|
+
if (lastMsg.parts && lastMsg.parts.length > 0) {
|
|
201
|
+
const textPart = lastMsg.parts.find((p) => p.type === 'text');
|
|
202
|
+
if (textPart?.text) {
|
|
203
|
+
log.info({ role: lastMsg.role || lastMsg.author?.role, textLength: textPart.text.length }, 'Using last message as fallback');
|
|
204
|
+
return textPart.text;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
log.error({ err: err.message }, 'Failed to fetch messages');
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
async sendCommand(sessionId, command) {
|
|
215
|
+
try {
|
|
216
|
+
await this.client.session.prompt({
|
|
217
|
+
sessionID: sessionId,
|
|
218
|
+
parts: [{ type: 'text', text: command }],
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
log.warn({ err, sessionId, command }, 'Command failed');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async deleteSession(sessionId) {
|
|
226
|
+
try {
|
|
227
|
+
await this.client.session.delete({ sessionID: sessionId });
|
|
228
|
+
log.info({ sessionId }, 'Session deleted');
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
log.error({ err, sessionId }, '删除会话失败');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async listSessions() {
|
|
235
|
+
try {
|
|
236
|
+
const { data } = await this.client.session.list({});
|
|
237
|
+
return data || [];
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
export async function checkOpencodeStatus(opencodeUrl, password) {
|
|
245
|
+
const headers = {};
|
|
246
|
+
if (password) {
|
|
247
|
+
headers['Authorization'] = `Basic ${Buffer.from(`opencode:${password}`).toString('base64')}`;
|
|
248
|
+
}
|
|
249
|
+
// 尝试多个端点,因为不同版本的 OpenCode 可能响应不同的路径
|
|
250
|
+
const endpoints = [
|
|
251
|
+
`${opencodeUrl}/health`,
|
|
252
|
+
`${opencodeUrl}/api/health`,
|
|
253
|
+
`${opencodeUrl}/v1/health`,
|
|
254
|
+
opencodeUrl, // 最后尝试根路径
|
|
255
|
+
];
|
|
256
|
+
for (const url of endpoints) {
|
|
257
|
+
try {
|
|
258
|
+
log.debug({ url }, 'Trying OpenCode health endpoint');
|
|
259
|
+
const controller = new AbortController();
|
|
260
|
+
const timeoutId = setTimeout(() => controller.abort(), 2000);
|
|
261
|
+
const response = await fetch(url, { method: 'GET', headers, signal: controller.signal });
|
|
262
|
+
clearTimeout(timeoutId);
|
|
263
|
+
if (response.ok || response.status === 401) {
|
|
264
|
+
log.info({ url, status: response.status }, 'OpenCode status check success');
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
log.debug({ url, err: err.message }, 'OpenCode endpoint check failed');
|
|
270
|
+
// 继续尝试下一个端点
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
log.warn({ opencodeUrl }, 'OpenCode status check failed on all endpoints');
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { RongCloudClient } from '../rongcloud/client.js';
|
|
2
|
+
import type { SessionManager } from '../core/session-manager.js';
|
|
3
|
+
import type { OpenCodeClient } from './client.js';
|
|
4
|
+
import type { ClawMessengerConfig } from '../core/types.js';
|
|
5
|
+
export declare class EventHandler {
|
|
6
|
+
private sessionManager;
|
|
7
|
+
private rongClient;
|
|
8
|
+
private opencode;
|
|
9
|
+
private streamAPI;
|
|
10
|
+
private config;
|
|
11
|
+
private isRunning;
|
|
12
|
+
private sentSessions;
|
|
13
|
+
private streamStates;
|
|
14
|
+
private streamQueue;
|
|
15
|
+
constructor(sessionManager: SessionManager, rongClient: RongCloudClient, opencode: OpenCodeClient, config: ClawMessengerConfig);
|
|
16
|
+
start(eventStream: {
|
|
17
|
+
stream: AsyncGenerator<any, void, unknown>;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
stop(): void;
|
|
20
|
+
/**
|
|
21
|
+
* 获取发送者ID
|
|
22
|
+
* 对于客服聊天,使用客服账号ID作为发送者,而不是当前节点ID
|
|
23
|
+
* 这样可以确保客服消息和普通消息在不同的会话中
|
|
24
|
+
*/
|
|
25
|
+
private getFromUserId;
|
|
26
|
+
private handleEvent;
|
|
27
|
+
/**
|
|
28
|
+
* 处理 message.part.delta 事件(细粒度 token 级流式增量)
|
|
29
|
+
* 从事件中直接提取增量文本,无需调用 fetchLastMessageText
|
|
30
|
+
*/
|
|
31
|
+
private handleMessagePartDelta;
|
|
32
|
+
private handleSessionIdle;
|
|
33
|
+
private handleMessagePartUpdated;
|
|
34
|
+
private handleMessageUpdated;
|
|
35
|
+
private handleStatusChange;
|
|
36
|
+
private handleError;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=event-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/opencode/event-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgB5D,qBAAa,YAAY;IACvB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,WAAW,CAAqB;gBAGtC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,mBAAmB;IASvB,KAAK,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvF,IAAI,IAAI,IAAI;IAIZ;;;;OAIG;IACH,OAAO,CAAC,aAAa;YAWP,WAAW;IAsCzB;;;OAGG;YACW,sBAAsB;YA8FtB,iBAAiB;YAiHjB,wBAAwB;YAgHxB,oBAAoB;IAyClC,OAAO,CAAC,kBAAkB;YAWZ,WAAW;CAoC1B"}
|