openpets 1.0.10 → 1.0.12

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 (72) hide show
  1. package/dist/data/api.json +3758 -7222
  2. package/dist/src/core/build-pet.d.ts.map +1 -1
  3. package/dist/src/core/build-pet.js +7 -0
  4. package/dist/src/core/build-pet.js.map +1 -1
  5. package/dist/src/core/cli.js +456 -130
  6. package/dist/src/core/cli.js.map +1 -1
  7. package/dist/src/core/ensure-npmignore.d.ts +30 -0
  8. package/dist/src/core/ensure-npmignore.d.ts.map +1 -0
  9. package/dist/src/core/ensure-npmignore.js +121 -0
  10. package/dist/src/core/ensure-npmignore.js.map +1 -0
  11. package/dist/src/core/index.d.ts +6 -3
  12. package/dist/src/core/index.d.ts.map +1 -1
  13. package/dist/src/core/index.js +9 -3
  14. package/dist/src/core/index.js.map +1 -1
  15. package/dist/src/core/mcp-generator.d.ts +56 -0
  16. package/dist/src/core/mcp-generator.d.ts.map +1 -0
  17. package/dist/src/core/mcp-generator.js +1438 -0
  18. package/dist/src/core/mcp-generator.js.map +1 -0
  19. package/dist/src/core/mcp-server.js +0 -0
  20. package/dist/src/core/openapi-generator.d.ts +59 -0
  21. package/dist/src/core/openapi-generator.d.ts.map +1 -0
  22. package/dist/src/core/openapi-generator.js +800 -0
  23. package/dist/src/core/openapi-generator.js.map +1 -0
  24. package/dist/src/core/pet-config.d.ts +107 -49
  25. package/dist/src/core/pet-config.d.ts.map +1 -1
  26. package/dist/src/core/pet-config.js +6 -4
  27. package/dist/src/core/pet-config.js.map +1 -1
  28. package/dist/src/core/pet-downloader.d.ts +16 -0
  29. package/dist/src/core/pet-downloader.d.ts.map +1 -1
  30. package/dist/src/core/pet-downloader.js +145 -3
  31. package/dist/src/core/pet-downloader.js.map +1 -1
  32. package/dist/src/core/publish-pet.d.ts +29 -0
  33. package/dist/src/core/publish-pet.d.ts.map +1 -0
  34. package/dist/src/core/publish-pet.js +372 -0
  35. package/dist/src/core/publish-pet.js.map +1 -0
  36. package/dist/src/core/sdk-generator.d.ts +92 -0
  37. package/dist/src/core/sdk-generator.d.ts.map +1 -0
  38. package/dist/src/core/sdk-generator.js +567 -0
  39. package/dist/src/core/sdk-generator.js.map +1 -0
  40. package/dist/src/core/search-pets.d.ts +5 -0
  41. package/dist/src/core/search-pets.d.ts.map +1 -1
  42. package/dist/src/core/search-pets.js +43 -0
  43. package/dist/src/core/search-pets.js.map +1 -1
  44. package/dist/src/core/security-scanner.d.ts +49 -0
  45. package/dist/src/core/security-scanner.d.ts.map +1 -0
  46. package/dist/src/core/security-scanner.js +255 -0
  47. package/dist/src/core/security-scanner.js.map +1 -0
  48. package/dist/src/core/tool-lister.d.ts +61 -0
  49. package/dist/src/core/tool-lister.d.ts.map +1 -0
  50. package/dist/src/core/tool-lister.js +333 -0
  51. package/dist/src/core/tool-lister.js.map +1 -0
  52. package/dist/src/core/validate-pet.d.ts +2 -0
  53. package/dist/src/core/validate-pet.d.ts.map +1 -1
  54. package/dist/src/core/validate-pet.js +93 -1
  55. package/dist/src/core/validate-pet.js.map +1 -1
  56. package/dist/src/sdk/plugin-factory.d.ts +86 -0
  57. package/dist/src/sdk/plugin-factory.d.ts.map +1 -1
  58. package/dist/src/sdk/plugin-factory.js +450 -53
  59. package/dist/src/sdk/plugin-factory.js.map +1 -1
  60. package/dist/src/sdk/prompts-manager.d.ts +6 -0
  61. package/dist/src/sdk/prompts-manager.d.ts.map +1 -0
  62. package/dist/src/sdk/prompts-manager.js +162 -0
  63. package/dist/src/sdk/prompts-manager.js.map +1 -0
  64. package/package.json +1 -1
  65. package/dist/src/core/local-cache.d.ts +0 -69
  66. package/dist/src/core/local-cache.d.ts.map +0 -1
  67. package/dist/src/core/local-cache.js +0 -212
  68. package/dist/src/core/local-cache.js.map +0 -1
  69. package/dist/src/core/plugin-factory.d.ts +0 -58
  70. package/dist/src/core/plugin-factory.d.ts.map +0 -1
  71. package/dist/src/core/plugin-factory.js +0 -212
  72. package/dist/src/core/plugin-factory.js.map +0 -1
@@ -0,0 +1,372 @@
1
+ /**
2
+ * Pet publishing module for the OpenPets CLI.
3
+ * Handles security checks, version management, and npm publishing.
4
+ */
5
+ import { join, dirname } from 'node:path';
6
+ import { existsSync, readFileSync, writeFileSync, readdirSync, statSync } from 'node:fs';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { spawn } from 'node:child_process';
9
+ import { ensureNpmIgnore } from './ensure-npmignore.js';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ /**
13
+ * Finds the project root by looking for pets/ directory and workspace config
14
+ */
15
+ function findProjectRoot() {
16
+ let currentDir = process.cwd();
17
+ for (let i = 0; i < 20; i++) {
18
+ const petsDir = join(currentDir, 'pets');
19
+ const packageJson = join(currentDir, 'package.json');
20
+ if (existsSync(petsDir) && existsSync(packageJson) && !currentDir.includes('node_modules')) {
21
+ try {
22
+ const pkg = JSON.parse(readFileSync(packageJson, 'utf8'));
23
+ if (pkg.workspaces && Array.isArray(pkg.workspaces) && pkg.workspaces.includes('pets/*')) {
24
+ return currentDir;
25
+ }
26
+ }
27
+ catch {
28
+ // Continue searching
29
+ }
30
+ }
31
+ const parent = dirname(currentDir);
32
+ if (parent === currentDir)
33
+ break;
34
+ currentDir = parent;
35
+ }
36
+ // Fall back to trying relative paths from this module
37
+ const possibleRoots = [
38
+ join(__dirname, '../..'),
39
+ join(__dirname, '../../..'),
40
+ process.cwd()
41
+ ];
42
+ for (const root of possibleRoots) {
43
+ const petsDir = join(root, 'pets');
44
+ if (existsSync(petsDir)) {
45
+ return root;
46
+ }
47
+ }
48
+ throw new Error(`Could not find project root from ${process.cwd()}`);
49
+ }
50
+ /**
51
+ * Finds an available version by checking npm registry
52
+ */
53
+ async function findAvailableVersion(pkgName, currentVersion) {
54
+ let [major, minor, patch] = currentVersion.split('.').map(Number);
55
+ let version = currentVersion;
56
+ let attempts = 0;
57
+ const maxAttempts = 10;
58
+ while (attempts < maxAttempts) {
59
+ try {
60
+ const result = await runCommand('npm', ['view', `${pkgName}@${version}`, 'version']);
61
+ const existingVersion = result.trim().split('\n')[0];
62
+ if (existingVersion === version) {
63
+ patch++;
64
+ const newVersion = `${major}.${minor}.${patch}`;
65
+ console.log(`⚠️ Version ${version} already published, trying ${newVersion}`);
66
+ version = newVersion;
67
+ attempts++;
68
+ }
69
+ else {
70
+ return version;
71
+ }
72
+ }
73
+ catch {
74
+ // Version doesn't exist, we can use it
75
+ return version;
76
+ }
77
+ }
78
+ throw new Error(`Could not find available version after ${maxAttempts} attempts`);
79
+ }
80
+ /**
81
+ * Runs a command and returns stdout
82
+ */
83
+ function runCommand(cmd, args, cwd) {
84
+ return new Promise((resolve, reject) => {
85
+ const child = spawn(cmd, args, {
86
+ cwd,
87
+ stdio: ['inherit', 'pipe', 'pipe'],
88
+ shell: process.platform === 'win32'
89
+ });
90
+ let stdout = '';
91
+ let stderr = '';
92
+ child.stdout?.on('data', (data) => {
93
+ stdout += data.toString();
94
+ });
95
+ child.stderr?.on('data', (data) => {
96
+ stderr += data.toString();
97
+ });
98
+ child.on('error', reject);
99
+ child.on('exit', (code) => {
100
+ if (code !== 0) {
101
+ reject(new Error(stderr || `Command failed with code ${code}`));
102
+ }
103
+ else {
104
+ resolve(stdout);
105
+ }
106
+ });
107
+ });
108
+ }
109
+ /**
110
+ * Runs a command with inherited stdio (for user-visible output)
111
+ */
112
+ function runCommandInherit(cmd, args, cwd) {
113
+ return new Promise((resolve, reject) => {
114
+ const child = spawn(cmd, args, {
115
+ cwd,
116
+ stdio: 'inherit',
117
+ shell: process.platform === 'win32'
118
+ });
119
+ child.on('error', reject);
120
+ child.on('exit', (code) => {
121
+ if (code !== 0) {
122
+ reject(new Error(`Command failed with code ${code}`));
123
+ }
124
+ else {
125
+ resolve();
126
+ }
127
+ });
128
+ });
129
+ }
130
+ /**
131
+ * Auto-detects pet name from current directory
132
+ */
133
+ function detectPetName() {
134
+ const cwd = process.cwd();
135
+ const pkgPath = join(cwd, 'package.json');
136
+ if (existsSync(pkgPath)) {
137
+ try {
138
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
139
+ if (pkg.name && pkg.name.startsWith('@openpets/')) {
140
+ return pkg.name.replace('@openpets/', '');
141
+ }
142
+ }
143
+ catch {
144
+ // Ignore parse errors
145
+ }
146
+ }
147
+ // Try to detect from path
148
+ if (cwd.includes('/pets/')) {
149
+ const parts = cwd.split('/pets/');
150
+ if (parts[1]) {
151
+ return parts[1].split('/')[0];
152
+ }
153
+ }
154
+ return null;
155
+ }
156
+ /**
157
+ * Gets list of available pets
158
+ */
159
+ function getAvailablePets(projectRoot) {
160
+ const petsDir = join(projectRoot, 'pets');
161
+ if (!existsSync(petsDir))
162
+ return [];
163
+ return readdirSync(petsDir).filter(dir => {
164
+ const petPath = join(petsDir, dir);
165
+ return statSync(petPath).isDirectory() && dir !== '_TEMPLATE_';
166
+ });
167
+ }
168
+ /**
169
+ * Publishes a pet to npm.
170
+ *
171
+ * @param petName - Name of the pet to publish (auto-detects if not provided)
172
+ * @param options - Publishing options
173
+ * @returns Result of the publish operation
174
+ */
175
+ export async function publishPet(petName, options = {}) {
176
+ const { preview = false, channel = 'latest', scope = '@openpets', otp } = options;
177
+ // Normalize scope (ensure it starts with @ if provided, or empty for unscoped)
178
+ const normalizedScope = scope === '' ? '' : (scope.startsWith('@') ? scope : `@${scope}`);
179
+ // Auto-detect pet name if not provided
180
+ let finalPetName = petName;
181
+ if (!finalPetName) {
182
+ finalPetName = detectPetName();
183
+ if (finalPetName) {
184
+ console.log(`📦 Detected pet: ${finalPetName}`);
185
+ }
186
+ }
187
+ if (!finalPetName) {
188
+ const projectRoot = findProjectRoot();
189
+ const availablePets = getAvailablePets(projectRoot);
190
+ console.error('❌ Pet name required');
191
+ console.error('Usage: pets publish <pet-name> [--preview] [--channel <channel>] [--scope <scope>] [--otp <code>]');
192
+ if (availablePets.length > 0) {
193
+ console.error('\nAvailable pets:');
194
+ availablePets.forEach(pet => console.error(` - ${pet}`));
195
+ }
196
+ return { success: false, message: 'Pet name required' };
197
+ }
198
+ // Find pet directory
199
+ const projectRoot = findProjectRoot();
200
+ const petDir = join(projectRoot, 'pets', finalPetName);
201
+ const packageJsonPath = join(petDir, 'package.json');
202
+ if (!existsSync(petDir)) {
203
+ return { success: false, message: `Pet directory not found: pets/${finalPetName}` };
204
+ }
205
+ if (!existsSync(packageJsonPath)) {
206
+ return { success: false, message: `package.json not found in pets/${finalPetName}` };
207
+ }
208
+ // Build the full package name based on scope
209
+ const fullPackageName = normalizedScope ? `${normalizedScope}/${finalPetName}` : finalPetName;
210
+ console.log(`Publishing ${fullPackageName}...`);
211
+ console.log(`Channel: ${channel}`);
212
+ console.log(`Preview: ${preview}`);
213
+ if (normalizedScope !== '@openpets') {
214
+ console.log(`Scope: ${normalizedScope || '(unscoped)'}`);
215
+ }
216
+ // Step 0: Ensure .npmignore exists
217
+ console.log("🔍 Ensuring .npmignore exists...");
218
+ const npmignoreResult = await ensureNpmIgnore(petDir);
219
+ if (npmignoreResult.action === "created") {
220
+ console.log("✅ Created .npmignore with secure defaults");
221
+ }
222
+ else {
223
+ console.log("✓ .npmignore already exists");
224
+ }
225
+ // Security check will be done on tarball contents (more accurate as it respects .npmignore)
226
+ console.log("🔒 Security will be checked on tarball contents...");
227
+ // Read and prepare package.json
228
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
229
+ const originalPkg = JSON.parse(JSON.stringify(pkg));
230
+ // Ensure correct package name based on scope
231
+ if (!pkg.name || normalizedScope !== '@openpets') {
232
+ // Override package name if no name set, or if using a custom scope
233
+ pkg.name = fullPackageName;
234
+ }
235
+ else if (!pkg.name.startsWith('@openpets/')) {
236
+ // Default behavior: force @openpets scope if no custom scope specified
237
+ pkg.name = fullPackageName;
238
+ }
239
+ // Step 2: Check and auto-bump version if needed
240
+ if (!preview) {
241
+ console.log(`🔍 Checking version availability for ${pkg.name}@${pkg.version}...`);
242
+ const availableVersion = await findAvailableVersion(pkg.name, pkg.version);
243
+ if (availableVersion !== pkg.version) {
244
+ console.log(`✨ Auto-bumping to ${availableVersion}`);
245
+ pkg.version = availableVersion;
246
+ originalPkg.version = availableVersion;
247
+ writeFileSync(packageJsonPath, JSON.stringify(originalPkg, null, 2) + '\n');
248
+ }
249
+ else {
250
+ console.log(`✓ Version ${pkg.version} is available`);
251
+ }
252
+ }
253
+ // Set publish config
254
+ pkg.publishConfig = { access: "public" };
255
+ // Set files whitelist
256
+ pkg.files = [
257
+ "index.ts",
258
+ "index.js",
259
+ "client.ts",
260
+ "client.js",
261
+ "*.d.ts",
262
+ "lib/**/*",
263
+ "src/**/*",
264
+ "commands.json",
265
+ "public/**/*",
266
+ "prompts/**/*",
267
+ "README.md"
268
+ ];
269
+ // Resolve workspace dependencies
270
+ const tempPkg = JSON.parse(JSON.stringify(pkg));
271
+ const depTypes = ['dependencies', 'devDependencies', 'peerDependencies'];
272
+ for (const depType of depTypes) {
273
+ if (tempPkg[depType]) {
274
+ const resolvedDeps = {};
275
+ for (const [dep, version] of Object.entries(tempPkg[depType])) {
276
+ if (typeof version === 'string') {
277
+ if (version.startsWith('workspace:')) {
278
+ // Resolve workspace dependency to published version
279
+ if (dep === 'openpets' || dep === 'pets' || dep === 'openpets-sdk') {
280
+ // Read version from SDK package.json
281
+ const sdkPackagePath = join(projectRoot, 'src', 'sdk', 'package.json');
282
+ if (existsSync(sdkPackagePath)) {
283
+ const sdkPackage = JSON.parse(readFileSync(sdkPackagePath, 'utf-8'));
284
+ resolvedDeps[sdkPackage.name] = `^${sdkPackage.version}`;
285
+ }
286
+ }
287
+ else {
288
+ // Skip other workspace deps
289
+ continue;
290
+ }
291
+ }
292
+ else {
293
+ resolvedDeps[dep] = version;
294
+ }
295
+ }
296
+ }
297
+ tempPkg[depType] = Object.keys(resolvedDeps).length > 0 ? resolvedDeps : undefined;
298
+ }
299
+ }
300
+ // Write temporary package.json for publishing
301
+ writeFileSync(packageJsonPath, JSON.stringify(tempPkg, null, 2));
302
+ // Step 3: Verify tarball contents
303
+ console.log("📦 Creating test tarball to verify contents...");
304
+ try {
305
+ const packOutput = await runCommand('npm', ['pack', '--dry-run'], petDir);
306
+ const forbiddenPatterns = [
307
+ /\.env/,
308
+ /\.pem$/,
309
+ /\.key$/,
310
+ /credentials.*\.json/,
311
+ /private[_-]?key/,
312
+ /\breference\//,
313
+ /\breports?\//
314
+ ];
315
+ const lines = packOutput.split('\n');
316
+ for (const line of lines) {
317
+ for (const pattern of forbiddenPatterns) {
318
+ if (pattern.test(line)) {
319
+ // Restore original package.json
320
+ writeFileSync(packageJsonPath, JSON.stringify(originalPkg, null, 2) + '\n');
321
+ throw new Error(`🔴 CRITICAL: Forbidden file would be published: ${line.trim()}`);
322
+ }
323
+ }
324
+ }
325
+ console.log("✅ Tarball verification passed - no sensitive files detected");
326
+ }
327
+ catch (e) {
328
+ // Restore original package.json on error
329
+ writeFileSync(packageJsonPath, JSON.stringify(originalPkg, null, 2) + '\n');
330
+ if (e.message.includes('CRITICAL')) {
331
+ return { success: false, message: e.message };
332
+ }
333
+ // Non-critical error, continue
334
+ console.log("⚠️ Tarball verification skipped:", e.message);
335
+ }
336
+ // Step 4: Publish
337
+ if (!preview) {
338
+ const isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';
339
+ const publishArgs = ['publish', '--tag', channel, '--access', 'public'];
340
+ if (isCI) {
341
+ publishArgs.push('--provenance');
342
+ }
343
+ if (otp) {
344
+ publishArgs.push('--otp', otp);
345
+ }
346
+ try {
347
+ await runCommandInherit('npm', publishArgs, petDir);
348
+ }
349
+ catch (e) {
350
+ // Restore original package.json
351
+ writeFileSync(packageJsonPath, JSON.stringify(originalPkg, null, 2) + '\n');
352
+ return { success: false, message: `Publish failed: ${e.message}` };
353
+ }
354
+ }
355
+ else {
356
+ console.log("Preview mode - skipping actual publish");
357
+ console.log("Would publish:", JSON.stringify(tempPkg, null, 2));
358
+ }
359
+ // Restore original package.json (but keep version bump)
360
+ writeFileSync(packageJsonPath, JSON.stringify(originalPkg, null, 2) + '\n');
361
+ const message = preview
362
+ ? `Preview completed for ${fullPackageName}`
363
+ : `${fullPackageName}@${pkg.version} published successfully`;
364
+ console.log(`✓ ${message}`);
365
+ return {
366
+ success: true,
367
+ message,
368
+ version: pkg.version,
369
+ packageName: fullPackageName
370
+ };
371
+ }
372
+ //# sourceMappingURL=publish-pet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-pet.js","sourceRoot":"","sources":["../../../publish-pet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * SDK Tool Generator
3
+ *
4
+ * Generates OpenPets-compatible tool definitions from TypeScript SDK packages.
5
+ * Similar to how hey-api generates TypeScript clients from OpenAPI specs.
6
+ *
7
+ * Usage:
8
+ * pets generate-sdk # Run from inside a pet directory with sdkGenerator in package.json
9
+ * pets generate-sdk --output client.ts # Custom output file
10
+ *
11
+ * This tool:
12
+ * 1. Reads SDK configuration from package.json
13
+ * 2. Generates OpenPets-compatible ToolDefinition[] exports
14
+ * 3. Creates a client.ts file that wraps the SDK methods as tools
15
+ */
16
+ /**
17
+ * SDK method definition for a single API method
18
+ */
19
+ export interface SDKMethod {
20
+ name: string;
21
+ description: string;
22
+ namespace: string;
23
+ fullPath: string;
24
+ inputSchema: {
25
+ type: string;
26
+ properties: Record<string, {
27
+ type: string;
28
+ description?: string;
29
+ required?: boolean;
30
+ enum?: string[];
31
+ }>;
32
+ required: string[];
33
+ };
34
+ outputType?: string;
35
+ isPaginated?: boolean;
36
+ isReadOnly?: boolean;
37
+ }
38
+ /**
39
+ * SDK namespace configuration
40
+ */
41
+ export interface SDKNamespaceConfig {
42
+ name: string;
43
+ methods: string[];
44
+ readOnlyMethods?: string[];
45
+ }
46
+ /**
47
+ * Full SDK generator configuration
48
+ */
49
+ export interface SDKGeneratorConfig {
50
+ /** NPM package name of the SDK (e.g., "@polar-sh/sdk") */
51
+ sdkPackage: string;
52
+ /** Pet name for tool naming (e.g., "polar") */
53
+ petName: string;
54
+ /** Main class name exported by SDK (e.g., "Polar") */
55
+ mainClassName: string;
56
+ /** Environment variable name for the token (e.g., "POLAR_TOKEN") */
57
+ tokenEnvVar: string;
58
+ /** Description of the SDK */
59
+ description: string;
60
+ /** Optional organization ID env var */
61
+ orgIdEnvVar?: string;
62
+ /** Namespace definitions with methods */
63
+ namespaces: SDKNamespaceConfig[];
64
+ }
65
+ /**
66
+ * Options for the SDK generator
67
+ */
68
+ export interface GenerateSDKOptions {
69
+ outputFile?: string;
70
+ dryRun?: boolean;
71
+ verbose?: boolean;
72
+ }
73
+ /**
74
+ * Result of SDK generation
75
+ */
76
+ export interface GenerateSDKResult {
77
+ success: boolean;
78
+ message: string;
79
+ toolCount?: number;
80
+ outputPath?: string;
81
+ methods?: SDKMethod[];
82
+ }
83
+ /**
84
+ * Built-in Polar SDK configuration
85
+ */
86
+ declare function createPolarSDKConfig(): SDKGeneratorConfig;
87
+ /**
88
+ * Main SDK generation function
89
+ */
90
+ export declare function generateSDKTools(options?: GenerateSDKOptions): Promise<GenerateSDKResult>;
91
+ export { createPolarSDKConfig };
92
+ //# sourceMappingURL=sdk-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-generator.d.ts","sourceRoot":"","sources":["../../../sdk-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;YAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAChB,CAAC,CAAA;QACF,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAA;IACrB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,UAAU,EAAE,kBAAkB,EAAE,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CACtB;AA+DD;;GAEG;AACH,iBAAS,oBAAoB,IAAI,kBAAkB,CAqGlD;AAiWD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0EnG;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAA"}