@zhin.js/core 1.1.15 → 1.1.16

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.
@@ -1,327 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Anthropic Provider
3
- * 支持 Claude 系列模型
4
- */
5
- import { BaseProvider } from './base.js';
6
- /**
7
- * Anthropic API 格式转换
8
- */
9
- function toAnthropicMessages(messages) {
10
- let system;
11
- const anthropicMessages = [];
12
- for (const msg of messages) {
13
- if (msg.role === 'system') {
14
- system = typeof msg.content === 'string'
15
- ? msg.content
16
- : msg.content.map(p => p.type === 'text' ? p.text : '').join('');
17
- continue;
18
- }
19
- if (msg.role === 'tool') {
20
- anthropicMessages.push({
21
- role: 'user',
22
- content: [{
23
- type: 'tool_result',
24
- tool_use_id: msg.tool_call_id,
25
- content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
26
- }],
27
- });
28
- continue;
29
- }
30
- let content;
31
- if (typeof msg.content === 'string') {
32
- content = msg.content;
33
- }
34
- else {
35
- content = msg.content.map((part) => {
36
- if (part.type === 'text') {
37
- return { type: 'text', text: part.text };
38
- }
39
- if (part.type === 'image_url') {
40
- // Anthropic 需要 base64 格式
41
- const url = part.image_url.url;
42
- if (url.startsWith('data:')) {
43
- const [meta, data] = url.split(',');
44
- // 使用更安全的正则表达式,避免 ReDoS
45
- const mediaType = meta.match(/^data:([^;]+);/)?.[1] || 'image/png';
46
- return {
47
- type: 'image',
48
- source: { type: 'base64', media_type: mediaType, data },
49
- };
50
- }
51
- return {
52
- type: 'image',
53
- source: { type: 'url', url },
54
- };
55
- }
56
- return { type: 'text', text: '' };
57
- });
58
- }
59
- // 处理 tool_calls
60
- if (msg.tool_calls?.length) {
61
- const toolUseContent = msg.tool_calls.map(tc => ({
62
- type: 'tool_use',
63
- id: tc.id,
64
- name: tc.function.name,
65
- input: JSON.parse(tc.function.arguments),
66
- }));
67
- if (typeof content === 'string' && content) {
68
- content = [{ type: 'text', text: content }, ...toolUseContent];
69
- }
70
- else if (Array.isArray(content)) {
71
- content = [...content, ...toolUseContent];
72
- }
73
- else {
74
- content = toolUseContent;
75
- }
76
- }
77
- anthropicMessages.push({
78
- role: msg.role === 'assistant' ? 'assistant' : 'user',
79
- content,
80
- });
81
- }
82
- return { system, messages: anthropicMessages };
83
- }
84
- /**
85
- * 转换工具定义
86
- */
87
- function toAnthropicTools(tools) {
88
- if (!tools?.length)
89
- return undefined;
90
- return tools.map(tool => ({
91
- name: tool.function.name,
92
- description: tool.function.description,
93
- input_schema: tool.function.parameters,
94
- }));
95
- }
96
- /**
97
- * 转换 Anthropic 响应为 OpenAI 格式
98
- */
99
- function fromAnthropicResponse(response) {
100
- const content = [];
101
- const toolCalls = [];
102
- for (const block of response.content || []) {
103
- if (block.type === 'text') {
104
- content.push({ type: 'text', text: block.text });
105
- }
106
- else if (block.type === 'tool_use') {
107
- toolCalls.push({
108
- id: block.id,
109
- type: 'function',
110
- function: {
111
- name: block.name,
112
- arguments: JSON.stringify(block.input),
113
- },
114
- });
115
- }
116
- }
117
- const textContent = content
118
- .filter(c => c.type === 'text')
119
- .map(c => c.text)
120
- .join('');
121
- return {
122
- id: response.id,
123
- object: 'chat.completion',
124
- created: Date.now(),
125
- model: response.model,
126
- choices: [{
127
- index: 0,
128
- message: {
129
- role: 'assistant',
130
- content: textContent,
131
- tool_calls: toolCalls.length ? toolCalls : undefined,
132
- },
133
- finish_reason: response.stop_reason === 'tool_use' ? 'tool_calls' : 'stop',
134
- }],
135
- usage: {
136
- prompt_tokens: response.usage?.input_tokens || 0,
137
- completion_tokens: response.usage?.output_tokens || 0,
138
- total_tokens: (response.usage?.input_tokens || 0) + (response.usage?.output_tokens || 0),
139
- },
140
- };
141
- }
142
- export class AnthropicProvider extends BaseProvider {
143
- name = 'anthropic';
144
- models = [
145
- 'claude-opus-4-20250514',
146
- 'claude-sonnet-4-20250514',
147
- 'claude-3-7-sonnet-20250219',
148
- 'claude-3-5-sonnet-20241022',
149
- 'claude-3-5-haiku-20241022',
150
- 'claude-3-opus-20240229',
151
- 'claude-3-sonnet-20240229',
152
- 'claude-3-haiku-20240307',
153
- ];
154
- contextWindow;
155
- capabilities = { vision: true, streaming: true, toolCalling: true, thinking: false };
156
- baseUrl;
157
- anthropicVersion;
158
- constructor(config = {}) {
159
- super(config);
160
- this.contextWindow = config.contextWindow ?? 200000;
161
- this.baseUrl = config.baseUrl || 'https://api.anthropic.com';
162
- this.anthropicVersion = config.anthropicVersion || '2023-06-01';
163
- if (config.models?.length)
164
- this.models = config.models;
165
- }
166
- async fetch(url, options = {}) {
167
- const { json, ...fetchOptions } = options;
168
- const headers = {
169
- 'Content-Type': 'application/json',
170
- 'x-api-key': this.config.apiKey || '',
171
- 'anthropic-version': this.anthropicVersion,
172
- ...this.config.headers,
173
- ...options.headers,
174
- };
175
- const controller = new AbortController();
176
- const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
177
- try {
178
- const response = await globalThis.fetch(url, {
179
- ...fetchOptions,
180
- headers,
181
- body: json ? JSON.stringify(json) : fetchOptions.body,
182
- signal: controller.signal,
183
- });
184
- if (!response.ok) {
185
- const error = await response.text();
186
- throw new Error(`Anthropic API Error (${response.status}): ${error}`);
187
- }
188
- return response.json();
189
- }
190
- finally {
191
- clearTimeout(timeoutId);
192
- }
193
- }
194
- async chat(request) {
195
- const { system, messages } = toAnthropicMessages(request.messages);
196
- const anthropicRequest = {
197
- model: request.model,
198
- messages,
199
- max_tokens: request.max_tokens || 4096,
200
- };
201
- if (system) {
202
- anthropicRequest.system = system;
203
- }
204
- if (request.temperature !== undefined) {
205
- anthropicRequest.temperature = request.temperature;
206
- }
207
- if (request.top_p !== undefined) {
208
- anthropicRequest.top_p = request.top_p;
209
- }
210
- if (request.stop) {
211
- anthropicRequest.stop_sequences = Array.isArray(request.stop) ? request.stop : [request.stop];
212
- }
213
- const tools = toAnthropicTools(request.tools);
214
- if (tools) {
215
- anthropicRequest.tools = tools;
216
- }
217
- const response = await this.fetch(`${this.baseUrl}/v1/messages`, {
218
- method: 'POST',
219
- json: anthropicRequest,
220
- });
221
- return fromAnthropicResponse(response);
222
- }
223
- async *chatStream(request) {
224
- const { system, messages } = toAnthropicMessages(request.messages);
225
- const anthropicRequest = {
226
- model: request.model,
227
- messages,
228
- max_tokens: request.max_tokens || 4096,
229
- stream: true,
230
- };
231
- if (system) {
232
- anthropicRequest.system = system;
233
- }
234
- if (request.temperature !== undefined) {
235
- anthropicRequest.temperature = request.temperature;
236
- }
237
- const tools = toAnthropicTools(request.tools);
238
- if (tools) {
239
- anthropicRequest.tools = tools;
240
- }
241
- const headers = {
242
- 'Content-Type': 'application/json',
243
- 'x-api-key': this.config.apiKey || '',
244
- 'anthropic-version': this.anthropicVersion,
245
- };
246
- const response = await globalThis.fetch(`${this.baseUrl}/v1/messages`, {
247
- method: 'POST',
248
- headers,
249
- body: JSON.stringify(anthropicRequest),
250
- });
251
- if (!response.ok) {
252
- const error = await response.text();
253
- throw new Error(`Anthropic API Error (${response.status}): ${error}`);
254
- }
255
- if (!response.body) {
256
- throw new Error('Response body is empty');
257
- }
258
- const reader = response.body.getReader();
259
- const decoder = new TextDecoder();
260
- let buffer = '';
261
- let messageId = '';
262
- let model = request.model;
263
- while (true) {
264
- const { done, value } = await reader.read();
265
- if (done)
266
- break;
267
- buffer += decoder.decode(value, { stream: true });
268
- const lines = buffer.split('\n');
269
- buffer = lines.pop() || '';
270
- for (const line of lines) {
271
- const trimmed = line.trim();
272
- if (trimmed.startsWith('data: ')) {
273
- const data = trimmed.slice(6);
274
- if (data === '[DONE]')
275
- continue;
276
- try {
277
- const event = JSON.parse(data);
278
- if (event.type === 'message_start') {
279
- messageId = event.message?.id || '';
280
- model = event.message?.model || model;
281
- }
282
- else if (event.type === 'content_block_delta') {
283
- if (event.delta?.type === 'text_delta') {
284
- yield {
285
- id: messageId,
286
- object: 'chat.completion.chunk',
287
- created: Date.now(),
288
- model,
289
- choices: [{
290
- index: 0,
291
- delta: { content: event.delta.text },
292
- finish_reason: null,
293
- }],
294
- };
295
- }
296
- }
297
- else if (event.type === 'message_delta') {
298
- yield {
299
- id: messageId,
300
- object: 'chat.completion.chunk',
301
- created: Date.now(),
302
- model,
303
- choices: [{
304
- index: 0,
305
- delta: {},
306
- finish_reason: event.delta?.stop_reason === 'tool_use' ? 'tool_calls' : 'stop',
307
- }],
308
- usage: event.usage ? {
309
- prompt_tokens: event.usage.input_tokens || 0,
310
- completion_tokens: event.usage.output_tokens || 0,
311
- total_tokens: (event.usage.input_tokens || 0) + (event.usage.output_tokens || 0),
312
- } : undefined,
313
- };
314
- }
315
- }
316
- catch {
317
- // 忽略解析错误
318
- }
319
- }
320
- }
321
- }
322
- }
323
- async listModels() {
324
- return this.models;
325
- }
326
- }
327
- //# sourceMappingURL=anthropic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/ai/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Base Provider
3
- * AI Provider 抽象基类
4
- */
5
- import type { AIProvider, ProviderConfig, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk } from '../types.js';
6
- /**
7
- * Provider 基类
8
- * 提供通用的 HTTP 请求和流式解析能力
9
- */
10
- export declare abstract class BaseProvider implements AIProvider {
11
- abstract name: string;
12
- abstract models: string[];
13
- protected config: ProviderConfig;
14
- protected abortControllers: Map<string, AbortController>;
15
- constructor(config?: ProviderConfig);
16
- abstract chat(request: ChatCompletionRequest): Promise<ChatCompletionResponse>;
17
- abstract chatStream(request: ChatCompletionRequest): AsyncIterable<ChatCompletionChunk>;
18
- /**
19
- * 发送 HTTP 请求
20
- */
21
- protected fetch<T>(url: string, options?: RequestInit & {
22
- json?: any;
23
- }): Promise<T>;
24
- /**
25
- * 发送流式请求
26
- */
27
- protected fetchStream(url: string, options?: RequestInit & {
28
- json?: any;
29
- }): AsyncIterable<string>;
30
- /**
31
- * 取消所有进行中的请求
32
- */
33
- cancelAll(): void;
34
- /**
35
- * 健康检查
36
- */
37
- healthCheck(): Promise<boolean>;
38
- /**
39
- * 列出可用模型(子类可覆盖)
40
- */
41
- listModels(): Promise<string[]>;
42
- }
43
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,8BAAsB,YAAa,YAAW,UAAU;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAa;gBAEzD,MAAM,GAAE,cAAmB;IAQvC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAC9E,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAEvF;;OAEG;cACa,KAAK,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAO,GACzC,OAAO,CAAC,CAAC,CAAC;IAoCb;;OAEG;cACc,WAAW,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAO,GACzC,aAAa,CAAC,MAAM,CAAC;IA+DxB;;OAEG;IACH,SAAS,IAAI,IAAI;IAOjB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGtC"}
@@ -1,137 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Base Provider
3
- * AI Provider 抽象基类
4
- */
5
- /**
6
- * Provider 基类
7
- * 提供通用的 HTTP 请求和流式解析能力
8
- */
9
- export class BaseProvider {
10
- config;
11
- abortControllers = new Map();
12
- constructor(config = {}) {
13
- this.config = {
14
- timeout: 60000,
15
- maxRetries: 3,
16
- ...config,
17
- };
18
- }
19
- /**
20
- * 发送 HTTP 请求
21
- */
22
- async fetch(url, options = {}) {
23
- const { json, ...fetchOptions } = options;
24
- const headers = {
25
- 'Content-Type': 'application/json',
26
- ...this.config.headers,
27
- ...options.headers,
28
- };
29
- if (this.config.apiKey) {
30
- const scheme = this.config.authScheme !== undefined ? this.config.authScheme : 'Bearer ';
31
- headers['Authorization'] = scheme + this.config.apiKey;
32
- }
33
- const controller = new AbortController();
34
- const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
35
- try {
36
- const response = await fetch(url, {
37
- ...fetchOptions,
38
- headers,
39
- body: json ? JSON.stringify(json) : fetchOptions.body,
40
- signal: controller.signal,
41
- });
42
- if (!response.ok) {
43
- const error = await response.text();
44
- throw new Error(`API Error (${response.status}): ${error}`);
45
- }
46
- return response.json();
47
- }
48
- finally {
49
- clearTimeout(timeoutId);
50
- }
51
- }
52
- /**
53
- * 发送流式请求
54
- */
55
- async *fetchStream(url, options = {}) {
56
- const { json, ...fetchOptions } = options;
57
- const headers = {
58
- 'Content-Type': 'application/json',
59
- Accept: 'text/event-stream',
60
- ...this.config.headers,
61
- ...options.headers,
62
- };
63
- if (this.config.apiKey) {
64
- const scheme = this.config.authScheme !== undefined ? this.config.authScheme : 'Bearer ';
65
- headers['Authorization'] = scheme + this.config.apiKey;
66
- }
67
- const controller = new AbortController();
68
- const requestId = Math.random().toString(36).slice(2);
69
- this.abortControllers.set(requestId, controller);
70
- try {
71
- const response = await fetch(url, {
72
- ...fetchOptions,
73
- headers,
74
- body: json ? JSON.stringify(json) : fetchOptions.body,
75
- signal: controller.signal,
76
- });
77
- if (!response.ok) {
78
- const error = await response.text();
79
- throw new Error(`API Error (${response.status}): ${error}`);
80
- }
81
- if (!response.body) {
82
- throw new Error('Response body is empty');
83
- }
84
- const reader = response.body.getReader();
85
- const decoder = new TextDecoder();
86
- let buffer = '';
87
- while (true) {
88
- const { done, value } = await reader.read();
89
- if (done)
90
- break;
91
- buffer += decoder.decode(value, { stream: true });
92
- const lines = buffer.split('\n');
93
- buffer = lines.pop() || '';
94
- for (const line of lines) {
95
- const trimmed = line.trim();
96
- if (trimmed.startsWith('data: ')) {
97
- const data = trimmed.slice(6);
98
- if (data !== '[DONE]') {
99
- yield data;
100
- }
101
- }
102
- }
103
- }
104
- }
105
- finally {
106
- this.abortControllers.delete(requestId);
107
- }
108
- }
109
- /**
110
- * 取消所有进行中的请求
111
- */
112
- cancelAll() {
113
- for (const controller of this.abortControllers.values()) {
114
- controller.abort();
115
- }
116
- this.abortControllers.clear();
117
- }
118
- /**
119
- * 健康检查
120
- */
121
- async healthCheck() {
122
- try {
123
- await this.listModels?.();
124
- return true;
125
- }
126
- catch {
127
- return false;
128
- }
129
- }
130
- /**
131
- * 列出可用模型(子类可覆盖)
132
- */
133
- async listModels() {
134
- return this.models;
135
- }
136
- }
137
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/ai/providers/base.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Providers Index
3
- * 导出所有 Provider
4
- */
5
- export { BaseProvider } from './base.js';
6
- export { OpenAIProvider, DeepSeekProvider, MoonshotProvider, ZhipuProvider } from './openai.js';
7
- export { AnthropicProvider } from './anthropic.js';
8
- export { OllamaProvider } from './ollama.js';
9
- export type { OpenAIConfig } from './openai.js';
10
- export type { AnthropicConfig } from './anthropic.js';
11
- export type { OllamaConfig } from './ollama.js';
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Providers Index
3
- * 导出所有 Provider
4
- */
5
- export { BaseProvider } from './base.js';
6
- export { OpenAIProvider, DeepSeekProvider, MoonshotProvider, ZhipuProvider } from './openai.js';
7
- export { AnthropicProvider } from './anthropic.js';
8
- export { OllamaProvider } from './ollama.js';
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Ollama Provider
3
- * 支持本地 Ollama 模型
4
- */
5
- import { BaseProvider } from './base.js';
6
- import type { ProviderConfig, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk } from '../types.js';
7
- export interface OllamaConfig extends ProviderConfig {
8
- host?: string;
9
- models?: string[];
10
- /** Ollama 上下文窗口大小(token 数),默认 32768。影响多轮对话和技能指令的保持能力 */
11
- num_ctx?: number;
12
- }
13
- export declare class OllamaProvider extends BaseProvider {
14
- name: string;
15
- models: string[];
16
- contextWindow: number;
17
- capabilities: {
18
- vision: boolean;
19
- streaming: boolean;
20
- toolCalling: boolean;
21
- thinking: boolean;
22
- };
23
- private host;
24
- private numCtx;
25
- constructor(config?: OllamaConfig);
26
- chat(request: ChatCompletionRequest): Promise<ChatCompletionResponse>;
27
- chatStream(request: ChatCompletionRequest): AsyncIterable<ChatCompletionChunk>;
28
- listModels(): Promise<string[]>;
29
- /**
30
- * 拉取模型
31
- */
32
- pullModel(model: string): Promise<void>;
33
- healthCheck(): Promise<boolean>;
34
- }
35
- //# sourceMappingURL=ollama.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/ollama.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EAGpB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2DD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,IAAI,SAAY;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY;;;;;MAAwE;IAEpF,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,YAAiB;IAqB/B,IAAI,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2EpE,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAiF/E,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAWrC;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}