skillshield 1.0.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.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +400 -0
  3. package/dist/channels/discord.d.ts +18 -0
  4. package/dist/channels/discord.d.ts.map +1 -0
  5. package/dist/channels/discord.js +275 -0
  6. package/dist/channels/discord.js.map +1 -0
  7. package/dist/channels/index.d.ts +67 -0
  8. package/dist/channels/index.d.ts.map +1 -0
  9. package/dist/channels/index.js +127 -0
  10. package/dist/channels/index.js.map +1 -0
  11. package/dist/channels/slack.d.ts +20 -0
  12. package/dist/channels/slack.d.ts.map +1 -0
  13. package/dist/channels/slack.js +296 -0
  14. package/dist/channels/slack.js.map +1 -0
  15. package/dist/channels/telegram.d.ts +20 -0
  16. package/dist/channels/telegram.d.ts.map +1 -0
  17. package/dist/channels/telegram.js +223 -0
  18. package/dist/channels/telegram.js.map +1 -0
  19. package/dist/channels/whatsapp.d.ts +25 -0
  20. package/dist/channels/whatsapp.d.ts.map +1 -0
  21. package/dist/channels/whatsapp.js +187 -0
  22. package/dist/channels/whatsapp.js.map +1 -0
  23. package/dist/cli/commands/badge.d.ts +11 -0
  24. package/dist/cli/commands/badge.d.ts.map +1 -0
  25. package/dist/cli/commands/badge.js +98 -0
  26. package/dist/cli/commands/badge.js.map +1 -0
  27. package/dist/cli/commands/config.d.ts +3 -0
  28. package/dist/cli/commands/config.d.ts.map +1 -0
  29. package/dist/cli/commands/config.js +140 -0
  30. package/dist/cli/commands/config.js.map +1 -0
  31. package/dist/cli/commands/deploy.d.ts +3 -0
  32. package/dist/cli/commands/deploy.d.ts.map +1 -0
  33. package/dist/cli/commands/deploy.js +56 -0
  34. package/dist/cli/commands/deploy.js.map +1 -0
  35. package/dist/cli/commands/init.d.ts +3 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -0
  37. package/dist/cli/commands/init.js +99 -0
  38. package/dist/cli/commands/init.js.map +1 -0
  39. package/dist/cli/commands/install.d.ts +3 -0
  40. package/dist/cli/commands/install.d.ts.map +1 -0
  41. package/dist/cli/commands/install.js +90 -0
  42. package/dist/cli/commands/install.js.map +1 -0
  43. package/dist/cli/commands/list.d.ts +3 -0
  44. package/dist/cli/commands/list.d.ts.map +1 -0
  45. package/dist/cli/commands/list.js +76 -0
  46. package/dist/cli/commands/list.js.map +1 -0
  47. package/dist/cli/commands/run.d.ts +3 -0
  48. package/dist/cli/commands/run.d.ts.map +1 -0
  49. package/dist/cli/commands/run.js +160 -0
  50. package/dist/cli/commands/run.js.map +1 -0
  51. package/dist/cli/commands/scan.d.ts +3 -0
  52. package/dist/cli/commands/scan.d.ts.map +1 -0
  53. package/dist/cli/commands/scan.js +133 -0
  54. package/dist/cli/commands/scan.js.map +1 -0
  55. package/dist/cli/commands/search.d.ts +3 -0
  56. package/dist/cli/commands/search.d.ts.map +1 -0
  57. package/dist/cli/commands/search.js +56 -0
  58. package/dist/cli/commands/search.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +70 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/core/config.d.ts +167 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +398 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/parser.d.ts +34 -0
  68. package/dist/core/parser.d.ts.map +1 -0
  69. package/dist/core/parser.js +462 -0
  70. package/dist/core/parser.js.map +1 -0
  71. package/dist/core/runtime.d.ts +68 -0
  72. package/dist/core/runtime.d.ts.map +1 -0
  73. package/dist/core/runtime.js +560 -0
  74. package/dist/core/runtime.js.map +1 -0
  75. package/dist/core/types.d.ts +525 -0
  76. package/dist/core/types.d.ts.map +1 -0
  77. package/dist/core/types.js +44 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/guard/index.d.ts +57 -0
  80. package/dist/guard/index.d.ts.map +1 -0
  81. package/dist/guard/index.js +238 -0
  82. package/dist/guard/index.js.map +1 -0
  83. package/dist/guard/patterns.d.ts +21 -0
  84. package/dist/guard/patterns.d.ts.map +1 -0
  85. package/dist/guard/patterns.js +797 -0
  86. package/dist/guard/patterns.js.map +1 -0
  87. package/dist/hub/index.d.ts +44 -0
  88. package/dist/hub/index.d.ts.map +1 -0
  89. package/dist/hub/index.js +144 -0
  90. package/dist/hub/index.js.map +1 -0
  91. package/dist/hub/registry.d.ts +52 -0
  92. package/dist/hub/registry.d.ts.map +1 -0
  93. package/dist/hub/registry.js +192 -0
  94. package/dist/hub/registry.js.map +1 -0
  95. package/dist/i18n/index.d.ts +19 -0
  96. package/dist/i18n/index.d.ts.map +1 -0
  97. package/dist/i18n/index.js +92 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/i18n/locales/en.d.ts +110 -0
  100. package/dist/i18n/locales/en.d.ts.map +1 -0
  101. package/dist/i18n/locales/en.js +123 -0
  102. package/dist/i18n/locales/en.js.map +1 -0
  103. package/dist/i18n/locales/es.d.ts +110 -0
  104. package/dist/i18n/locales/es.d.ts.map +1 -0
  105. package/dist/i18n/locales/es.js +123 -0
  106. package/dist/i18n/locales/es.js.map +1 -0
  107. package/dist/i18n/locales/pt.d.ts +110 -0
  108. package/dist/i18n/locales/pt.d.ts.map +1 -0
  109. package/dist/i18n/locales/pt.js +123 -0
  110. package/dist/i18n/locales/pt.js.map +1 -0
  111. package/dist/i18n/locales/zh.d.ts +110 -0
  112. package/dist/i18n/locales/zh.d.ts.map +1 -0
  113. package/dist/i18n/locales/zh.js +123 -0
  114. package/dist/i18n/locales/zh.js.map +1 -0
  115. package/dist/index.d.ts +168 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +275 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/router/index.d.ts +89 -0
  120. package/dist/router/index.d.ts.map +1 -0
  121. package/dist/router/index.js +292 -0
  122. package/dist/router/index.js.map +1 -0
  123. package/dist/router/providers.d.ts +48 -0
  124. package/dist/router/providers.d.ts.map +1 -0
  125. package/dist/router/providers.js +733 -0
  126. package/dist/router/providers.js.map +1 -0
  127. package/dist/runtime/executor.d.ts +96 -0
  128. package/dist/runtime/executor.d.ts.map +1 -0
  129. package/dist/runtime/executor.js +389 -0
  130. package/dist/runtime/executor.js.map +1 -0
  131. package/dist/sandbox/index.d.ts +52 -0
  132. package/dist/sandbox/index.d.ts.map +1 -0
  133. package/dist/sandbox/index.js +248 -0
  134. package/dist/sandbox/index.js.map +1 -0
  135. package/dist/security/skillguard.d.ts +25 -0
  136. package/dist/security/skillguard.d.ts.map +1 -0
  137. package/dist/security/skillguard.js +137 -0
  138. package/dist/security/skillguard.js.map +1 -0
  139. package/dist/tools/index.d.ts +55 -0
  140. package/dist/tools/index.d.ts.map +1 -0
  141. package/dist/tools/index.js +276 -0
  142. package/dist/tools/index.js.map +1 -0
  143. package/dist/tools/web-engine.d.ts +158 -0
  144. package/dist/tools/web-engine.d.ts.map +1 -0
  145. package/dist/tools/web-engine.js +802 -0
  146. package/dist/tools/web-engine.js.map +1 -0
  147. package/dist/tools/web-tools.d.ts +173 -0
  148. package/dist/tools/web-tools.d.ts.map +1 -0
  149. package/dist/tools/web-tools.js +251 -0
  150. package/dist/tools/web-tools.js.map +1 -0
  151. package/dist/utils/errors.d.ts +44 -0
  152. package/dist/utils/errors.d.ts.map +1 -0
  153. package/dist/utils/errors.js +130 -0
  154. package/dist/utils/errors.js.map +1 -0
  155. package/dist/utils/logger.d.ts +28 -0
  156. package/dist/utils/logger.d.ts.map +1 -0
  157. package/dist/utils/logger.js +121 -0
  158. package/dist/utils/logger.js.map +1 -0
  159. package/examples/basic-usage.ts +276 -0
  160. package/examples/code-reviewer.skill.md +83 -0
  161. package/examples/creative-writer.skill.md +80 -0
  162. package/examples/data-analyzer.skill.md +61 -0
  163. package/examples/hello-world.skill.md +36 -0
  164. package/examples/sample-skill.md +156 -0
  165. package/examples/summarizer.skill.md +62 -0
  166. package/examples/translator.skill.md +45 -0
  167. package/package.json +110 -0
@@ -0,0 +1,398 @@
1
+ /**
2
+ * SkillKit Configuration Management
3
+ * Handles loading, saving, and managing configuration from ~/.skillkit/config.json
4
+ * Uses 'conf' package for OS-specific config directory handling
5
+ */
6
+ import { homedir } from 'os';
7
+ import { join, resolve } from 'path';
8
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
9
+ import { ModelProvider } from './types.js';
10
+ /**
11
+ * Default configuration
12
+ */
13
+ const DEFAULT_CONFIG = {
14
+ defaultProvider: ModelProvider.ANTHROPIC,
15
+ models: {
16
+ [ModelProvider.OPENAI]: {
17
+ model: 'gpt-4-turbo',
18
+ temperature: 0.7,
19
+ maxTokens: 4096,
20
+ },
21
+ [ModelProvider.ANTHROPIC]: {
22
+ model: 'claude-3-5-sonnet-20241022',
23
+ temperature: 0.7,
24
+ maxTokens: 4096,
25
+ },
26
+ [ModelProvider.GOOGLE]: {
27
+ model: 'gemini-2.0-flash',
28
+ temperature: 0.7,
29
+ maxTokens: 4096,
30
+ },
31
+ [ModelProvider.OLLAMA]: {
32
+ model: 'llama2',
33
+ baseUrl: 'http://localhost:11434',
34
+ temperature: 0.7,
35
+ maxTokens: 2048,
36
+ },
37
+ [ModelProvider.DEEPSEEK]: {
38
+ model: 'deepseek-chat',
39
+ temperature: 0.7,
40
+ maxTokens: 4096,
41
+ },
42
+ [ModelProvider.QWEN]: {
43
+ model: 'qwen-turbo',
44
+ temperature: 0.7,
45
+ maxTokens: 2048,
46
+ },
47
+ [ModelProvider.GROQ]: {
48
+ model: 'mixtral-8x7b-32768',
49
+ temperature: 0.7,
50
+ maxTokens: 2048,
51
+ },
52
+ [ModelProvider.TOGETHER]: {
53
+ model: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
54
+ temperature: 0.7,
55
+ maxTokens: 2048,
56
+ },
57
+ [ModelProvider.FIREWORKS]: {
58
+ model: 'accounts/fireworks/models/llama-v2-13b-chat',
59
+ temperature: 0.7,
60
+ maxTokens: 2048,
61
+ },
62
+ [ModelProvider.LOCAL]: {
63
+ model: 'local-model',
64
+ temperature: 0.7,
65
+ maxTokens: 2048,
66
+ },
67
+ },
68
+ language: 'en',
69
+ sandbox: true,
70
+ timeout: 30000,
71
+ maxTokens: 4096,
72
+ skillsDirectory: join(homedir(), '.skillkit', 'skills'),
73
+ clawHubUrl: 'https://hub.claw.ai/api',
74
+ securityLevel: 'normal',
75
+ telemetry: false,
76
+ };
77
+ /**
78
+ * Configuration manager
79
+ */
80
+ export class ConfigManager {
81
+ /**
82
+ * Initialize config manager
83
+ */
84
+ constructor(configDir) {
85
+ this.isDirty = false;
86
+ this.configDir = configDir || join(homedir(), '.skillkit');
87
+ this.configPath = join(this.configDir, 'config.json');
88
+ // Ensure config directory exists
89
+ if (!existsSync(this.configDir)) {
90
+ mkdirSync(this.configDir, { recursive: true });
91
+ }
92
+ // Load or create config
93
+ this.config = this.loadConfig();
94
+ }
95
+ /**
96
+ * Load configuration from disk
97
+ */
98
+ loadConfig() {
99
+ if (existsSync(this.configPath)) {
100
+ try {
101
+ const content = readFileSync(this.configPath, 'utf-8');
102
+ const saved = JSON.parse(content);
103
+ // Merge with defaults to handle new fields
104
+ return this.mergeConfig(DEFAULT_CONFIG, saved);
105
+ }
106
+ catch (error) {
107
+ console.warn(`Failed to load config from ${this.configPath}, using defaults`);
108
+ return { ...DEFAULT_CONFIG };
109
+ }
110
+ }
111
+ // First run - create default config
112
+ this.config = { ...DEFAULT_CONFIG };
113
+ this.save();
114
+ return this.config;
115
+ }
116
+ /**
117
+ * Merge saved config with defaults
118
+ */
119
+ mergeConfig(defaults, saved) {
120
+ return {
121
+ ...defaults,
122
+ ...saved,
123
+ models: {
124
+ ...defaults.models,
125
+ ...(saved.models || {}),
126
+ },
127
+ custom: {
128
+ ...defaults.custom,
129
+ ...(saved.custom || {}),
130
+ },
131
+ };
132
+ }
133
+ /**
134
+ * Get complete configuration
135
+ */
136
+ getConfig() {
137
+ return { ...this.config };
138
+ }
139
+ /**
140
+ * Get configuration by provider
141
+ */
142
+ getModelConfig(provider) {
143
+ return { ...this.config.models[provider] };
144
+ }
145
+ /**
146
+ * Set model API key
147
+ */
148
+ setApiKey(provider, apiKey) {
149
+ if (!this.config.models[provider]) {
150
+ this.config.models[provider] = { model: 'default' };
151
+ }
152
+ this.config.models[provider].apiKey = apiKey;
153
+ this.isDirty = true;
154
+ }
155
+ /**
156
+ * Get API key for provider
157
+ */
158
+ getApiKey(provider) {
159
+ return this.config.models[provider]?.apiKey;
160
+ }
161
+ /**
162
+ * Set default provider
163
+ */
164
+ setDefaultProvider(provider) {
165
+ this.config.defaultProvider = provider;
166
+ this.isDirty = true;
167
+ }
168
+ /**
169
+ * Get default provider
170
+ */
171
+ getDefaultProvider() {
172
+ return this.config.defaultProvider;
173
+ }
174
+ /**
175
+ * Set default model for provider
176
+ */
177
+ setModel(provider, model) {
178
+ if (!this.config.models[provider]) {
179
+ this.config.models[provider] = { model };
180
+ }
181
+ else {
182
+ this.config.models[provider].model = model;
183
+ }
184
+ this.isDirty = true;
185
+ }
186
+ /**
187
+ * Get default model for provider
188
+ */
189
+ getModel(provider) {
190
+ return this.config.models[provider]?.model || 'unknown';
191
+ }
192
+ /**
193
+ * Set language preference
194
+ */
195
+ setLanguage(language) {
196
+ this.config.language = language;
197
+ this.isDirty = true;
198
+ }
199
+ /**
200
+ * Get language preference
201
+ */
202
+ getLanguage() {
203
+ return this.config.language;
204
+ }
205
+ /**
206
+ * Set skills directory
207
+ */
208
+ setSkillsDirectory(directory) {
209
+ const resolved = resolve(directory);
210
+ if (!existsSync(resolved)) {
211
+ mkdirSync(resolved, { recursive: true });
212
+ }
213
+ this.config.skillsDirectory = resolved;
214
+ this.isDirty = true;
215
+ }
216
+ /**
217
+ * Get skills directory
218
+ */
219
+ getSkillsDirectory() {
220
+ return this.config.skillsDirectory;
221
+ }
222
+ /**
223
+ * Set security level
224
+ */
225
+ setSecurityLevel(level) {
226
+ this.config.securityLevel = level;
227
+ this.isDirty = true;
228
+ }
229
+ /**
230
+ * Get security level
231
+ */
232
+ getSecurityLevel() {
233
+ return this.config.securityLevel;
234
+ }
235
+ /**
236
+ * Enable/disable telemetry
237
+ */
238
+ setTelemetry(enabled) {
239
+ this.config.telemetry = enabled;
240
+ this.isDirty = true;
241
+ }
242
+ /**
243
+ * Get telemetry status
244
+ */
245
+ isTelemetryEnabled() {
246
+ return this.config.telemetry;
247
+ }
248
+ /**
249
+ * Set execution timeout
250
+ */
251
+ setTimeout(timeoutMs) {
252
+ this.config.timeout = timeoutMs;
253
+ this.isDirty = true;
254
+ }
255
+ /**
256
+ * Get execution timeout
257
+ */
258
+ getTimeout() {
259
+ return this.config.timeout;
260
+ }
261
+ /**
262
+ * Set max tokens
263
+ */
264
+ setMaxTokens(maxTokens) {
265
+ this.config.maxTokens = maxTokens;
266
+ this.isDirty = true;
267
+ }
268
+ /**
269
+ * Get max tokens
270
+ */
271
+ getMaxTokens() {
272
+ return this.config.maxTokens;
273
+ }
274
+ /**
275
+ * Update model configuration
276
+ */
277
+ updateModelConfig(provider, config) {
278
+ if (!this.config.models[provider]) {
279
+ this.config.models[provider] = { model: 'default' };
280
+ }
281
+ this.config.models[provider] = {
282
+ ...this.config.models[provider],
283
+ ...config,
284
+ };
285
+ this.isDirty = true;
286
+ }
287
+ /**
288
+ * Set custom configuration value
289
+ */
290
+ setCustom(key, value) {
291
+ if (!this.config.custom) {
292
+ this.config.custom = {};
293
+ }
294
+ this.config.custom[key] = value;
295
+ this.isDirty = true;
296
+ }
297
+ /**
298
+ * Get custom configuration value
299
+ */
300
+ getCustom(key, defaultValue) {
301
+ return this.config.custom?.[key] ?? defaultValue;
302
+ }
303
+ /**
304
+ * Set user ID
305
+ */
306
+ setUserId(userId) {
307
+ this.config.userId = userId;
308
+ this.isDirty = true;
309
+ }
310
+ /**
311
+ * Get user ID
312
+ */
313
+ getUserId() {
314
+ return this.config.userId;
315
+ }
316
+ /**
317
+ * Save configuration to disk
318
+ */
319
+ save() {
320
+ try {
321
+ const content = JSON.stringify(this.config, null, 2);
322
+ writeFileSync(this.configPath, content, 'utf-8');
323
+ this.isDirty = false;
324
+ }
325
+ catch (error) {
326
+ throw new Error(`Failed to save config to ${this.configPath}: ${error instanceof Error ? error.message : String(error)}`);
327
+ }
328
+ }
329
+ /**
330
+ * Check if config has unsaved changes
331
+ */
332
+ isDirtyConfig() {
333
+ return this.isDirty;
334
+ }
335
+ /**
336
+ * Reset to default configuration
337
+ */
338
+ reset() {
339
+ this.config = { ...DEFAULT_CONFIG };
340
+ this.isDirty = true;
341
+ this.save();
342
+ }
343
+ /**
344
+ * Get config file path
345
+ */
346
+ getConfigPath() {
347
+ return this.configPath;
348
+ }
349
+ /**
350
+ * Get config directory
351
+ */
352
+ getConfigDirectory() {
353
+ return this.configDir;
354
+ }
355
+ /**
356
+ * Validate that all required API keys are set
357
+ */
358
+ validateApiKeys(providers) {
359
+ const missing = [];
360
+ for (const provider of providers) {
361
+ const apiKey = this.getApiKey(provider);
362
+ if (!apiKey && provider !== ModelProvider.OLLAMA && provider !== ModelProvider.LOCAL) {
363
+ missing.push(provider);
364
+ }
365
+ }
366
+ return {
367
+ valid: missing.length === 0,
368
+ missing,
369
+ };
370
+ }
371
+ }
372
+ /**
373
+ * Global config instance
374
+ */
375
+ let globalConfig = null;
376
+ /**
377
+ * Initialize global config (call once on startup)
378
+ */
379
+ export function initializeConfig(configDir) {
380
+ globalConfig = new ConfigManager(configDir);
381
+ return globalConfig;
382
+ }
383
+ /**
384
+ * Get global config instance
385
+ */
386
+ export function getConfig() {
387
+ if (!globalConfig) {
388
+ globalConfig = new ConfigManager();
389
+ }
390
+ return globalConfig;
391
+ }
392
+ /**
393
+ * Reset global config
394
+ */
395
+ export function resetConfig() {
396
+ globalConfig = null;
397
+ }
398
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * SkillKit SKILL.md Parser
3
+ * Parses and validates SKILL.md files in both OpenClaw and ArtefactForge formats.
4
+ * This is the heart of SkillKit - it transforms markdown skill definitions into executable structures.
5
+ */
6
+ import { SkillDefinition } from './types.js';
7
+ /**
8
+ * Validate parsed skill definition
9
+ */
10
+ export declare function validateSkill(skill: SkillDefinition): {
11
+ valid: boolean;
12
+ errors: string[];
13
+ };
14
+ /**
15
+ * Main parser function - parse SKILL.md file
16
+ */
17
+ export declare function parseSkillFile(filePath: string): SkillDefinition;
18
+ /**
19
+ * Parse SKILL.md content from string
20
+ */
21
+ export declare function parseSkillContent(content: string, filePath?: string): SkillDefinition;
22
+ /**
23
+ * Get skill name from file path
24
+ */
25
+ export declare function getSkillNameFromPath(filePath: string): string;
26
+ /**
27
+ * Extract metadata from SKILL.md without full parsing (lightweight)
28
+ */
29
+ export declare function extractMetadata(content: string): Partial<SkillDefinition['metadata']>;
30
+ /**
31
+ * Check if content looks like valid SKILL.md
32
+ */
33
+ export declare function isValidSkillFormat(content: string): boolean;
34
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACL,eAAe,EAOhB,MAAM,YAAY,CAAC;AAsUpB;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA6D1F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAIhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CA6DrF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CASrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU3D"}