@mutagent/cli 0.1.30 → 0.1.32
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/dist/bin/cli.js +101 -35
- package/dist/bin/cli.js.map +7 -7
- package/dist/index.js +9 -2
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/bin/cli.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { cosmiconfigSync } from 'cosmiconfig';\nimport { z } from 'zod';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport type { Config } from '../types/index.js';\n\nconst configSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().default('https://api.mutagent.io'),\n format: z.enum(['table', 'json']).default('table'),\n timeout: z.number().default(30000),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n});\n\nconst credentialsSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().optional(),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n expiresAt: z.string().optional(),\n}).loose();\n\nexport interface FullCredentials {\n apiKey: string;\n endpoint?: string;\n workspaceId?: string;\n organizationId?: string;\n expiresAt?: string;\n}\n\nconst CREDENTIALS_DIR = join(homedir(), '.config', 'mutagent');\nconst CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');\n\nfunction parseJsonSafe<T>(content: string, schema: z.ZodType<T>): T | null {\n try {\n const parsed: unknown = JSON.parse(content);\n return schema.parse(parsed);\n } catch {\n return null;\n }\n}\n\nexport function loadConfig(): Config {\n // Load from cosmiconfig (rc files)\n const explorer = cosmiconfigSync('mutagent');\n const result = explorer.search();\n\n // Safely extract config from cosmiconfig result\n const rcConfig = result?.config as Record<string, unknown> | undefined;\n\n // Load from credentials file\n let credentials: z.infer<typeof credentialsSchema> | null = null;\n if (existsSync(CREDENTIALS_FILE)) {\n credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n }\n\n // Merge configs: ENV > credentials > rc files > defaults\n const merged = {\n providers: {},\n environment: 'production',\n ...rcConfig,\n ...credentials,\n apiKey: process.env.MUTAGENT_API_KEY ?? credentials?.apiKey ?? (rcConfig?.apiKey as string | undefined),\n endpoint: process.env.MUTAGENT_ENDPOINT ?? credentials?.endpoint ?? (rcConfig?.endpoint as string | undefined),\n defaultWorkspace: credentials?.defaultWorkspace ?? (rcConfig?.defaultWorkspace as string | undefined),\n defaultOrganization: credentials?.defaultOrganization ?? (rcConfig?.defaultOrganization as string | undefined),\n };\n\n return configSchema.parse(merged) as Config;\n}\n\nexport function saveCredentials(apiKey: string, endpoint?: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n const config = loadConfig();\n const credentials = {\n apiKey,\n endpoint: endpoint ?? config.endpoint,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\n/**\n * Save full credentials including workspace and organization info\n * Used by browser auth flow which returns complete credential set\n */\nexport function saveFullCredentials(creds: FullCredentials): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n // Load existing credentials to preserve any custom settings\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const credentials = {\n ...existingCredentials,\n apiKey: creds.apiKey,\n endpoint: creds.endpoint ?? existingCredentials.endpoint ?? 'https://api.mutagent.io',\n defaultWorkspace: creds.workspaceId ?? existingCredentials.defaultWorkspace,\n defaultOrganization: creds.organizationId ?? existingCredentials.defaultOrganization,\n expiresAt: creds.expiresAt,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\nexport function clearCredentials(): void {\n if (existsSync(CREDENTIALS_FILE)) {\n writeFileSync(CREDENTIALS_FILE, JSON.stringify({}));\n }\n}\n\nexport function hasCredentials(): boolean {\n if (process.env.MUTAGENT_API_KEY) return true;\n if (!existsSync(CREDENTIALS_FILE)) return false;\n\n const credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n return credentials?.apiKey !== undefined && credentials.apiKey !== '';\n}\n\nexport function getApiKey(): string | undefined {\n return process.env.MUTAGENT_API_KEY ?? loadConfig().apiKey;\n}\n\nexport function setDefaultWorkspace(workspaceId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultWorkspace: workspaceId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n\nexport function setDefaultOrganization(organizationId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultOrganization: organizationId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n",
|
|
6
6
|
"export class MutagentError extends Error {\n constructor(\n public code: string,\n message: string,\n public suggestion?: string,\n public exitCode = 1\n ) {\n super(message);\n this.name = 'MutagentError';\n }\n\n toJSON(): { success: false; error: string; code: string; suggestedAction?: string } {\n return {\n success: false,\n error: this.message,\n code: this.code,\n suggestedAction: this.suggestion,\n };\n }\n}\n\nexport interface AuthenticationErrorOptions {\n suggestions?: string[];\n cause?: Error;\n}\n\nexport const AUTH_REMEDIATION_MESSAGE = [\n 'Authentication required. Options:',\n ' Interactive: mutagent auth login --browser',\n ' Non-interactive: export MUTAGENT_API_KEY=<your-key>',\n ' CI/CD: mutagent auth login --api-key <key>',\n].join('\\n');\n\nexport class AuthenticationError extends MutagentError {\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message?: string,\n options: AuthenticationErrorOptions = {}\n ) {\n super(\n 'AUTH_REQUIRED',\n message ?? 'Authentication required. Please run \"mutagent auth login\"',\n options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser',\n 2\n );\n this.suggestions = options.suggestions ?? [\n 'mutagent auth login --browser',\n 'export MUTAGENT_API_KEY=<your-key>',\n 'mutagent auth login --api-key <key>',\n ];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser';\n this.cause = options.cause;\n }\n}\n\nexport class ApiError extends MutagentError {\n readonly statusCode: number;\n\n constructor(status: number, message: string) {\n super(\n `API_${String(status)}`,\n message,\n status === 401 ? 'Check your API key with: mutagent auth status' : undefined,\n 1\n );\n this.statusCode = status;\n }\n}\n\nexport const WORKSPACE_REMEDIATION_MESSAGE = [\n 'Workspace context missing. To fix:',\n ' mutagent config set workspace <workspace-id> # Set default workspace',\n ' mutagent workspaces list # List available workspaces',\n].join('\\n');\n\nexport class WorkspaceContextError extends MutagentError {\n constructor(message?: string) {\n super(\n 'WORKSPACE_REQUIRED',\n message ?? 'Workspace context is required but not configured',\n 'Run: mutagent config set workspace <workspace-id>',\n 3\n );\n }\n}\n\nexport class ValidationError extends MutagentError {\n constructor(message: string) {\n super(\n 'VALIDATION_ERROR',\n message,\n 'Check the command syntax with: mutagent <command> --help',\n 1\n );\n }\n}\n\n// =============================================================================\n// Additional Error Classes for Configuration & Auth System\n// =============================================================================\n\nexport class CredentialsExpiredError extends AuthenticationError {\n readonly expiredAt: Date;\n\n constructor(expiredAt: Date) {\n super();\n this.expiredAt = expiredAt;\n this.code = 'AUTH_EXPIRED';\n this.message = `Credentials expired at ${expiredAt.toISOString()}`;\n this.suggestion = 'Run \"mutagent auth login\" to refresh your credentials';\n }\n}\n\nexport class InvalidApiKeyError extends MutagentError {\n constructor(keyPreview?: string) {\n const preview = keyPreview ? ` (received: \"${keyPreview}...\")` : '';\n super(\n 'INVALID_API_KEY',\n `Invalid API key format${preview}`,\n 'API keys should start with \"sk_\" or \"sk-\" and be at least 20 characters',\n 2\n );\n }\n}\n\nexport interface ConfigErrorOptions {\n cause?: Error;\n suggestions?: string[];\n configPath?: string;\n}\n\nexport class ConfigError extends MutagentError {\n readonly configPath?: string;\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message: string,\n options: ConfigErrorOptions = {}\n ) {\n super(\n 'CONFIG_ERROR',\n message,\n options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration',\n 3\n );\n this.configPath = options.configPath;\n this.suggestions = options.suggestions ?? ['Run \"mutagent config validate\" to check your configuration'];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration';\n this.cause = options.cause;\n }\n}\n\nexport class ConfigNotFoundError extends ConfigError {\n constructor(configPath: string) {\n super(\n `Configuration file not found: ${configPath}`,\n { suggestions: ['Create a configuration file with \"mutagent config init\" or use --config'] }\n );\n this.code = 'CONFIG_NOT_FOUND';\n this.suggestion = 'Create a configuration file with \"mutagent config init\" or use --config';\n }\n}\n\nexport class ConfigParseError extends ConfigError {\n readonly parseError: Error;\n\n constructor(\n configPath: string,\n parseError: Error\n ) {\n super(\n `Failed to parse configuration file: ${configPath}`,\n { suggestions: ['Validate your JSON/JavaScript syntax and check for trailing commas'] }\n );\n this.code = 'CONFIG_PARSE_ERROR';\n this.suggestion = 'Validate your JSON/JavaScript syntax and check for trailing commas';\n this.parseError = parseError;\n }\n}\n\nexport interface PermissionErrorOptions {\n cause?: Error;\n}\n\nexport class PermissionError extends MutagentError {\n readonly path?: string;\n readonly operation: string;\n override readonly cause?: Error;\n\n constructor(\n operation: string,\n path?: string,\n options: PermissionErrorOptions = {}\n ) {\n const pathMsg = path ? ` at ${path}` : '';\n super(\n 'PERMISSION_ERROR',\n `Permission denied: ${operation}${pathMsg}`,\n 'Check file permissions and ensure the file is not read-only',\n 8\n );\n this.operation = operation;\n this.path = path;\n this.cause = options.cause;\n }\n}\n\nexport class NetworkError extends MutagentError {\n readonly url?: string;\n readonly statusCode?: number;\n\n constructor(\n message = 'Network error',\n url?: string,\n statusCode?: number\n ) {\n super(\n 'NETWORK_ERROR',\n message,\n 'Check your internet connection and verify the server URL',\n 5\n );\n this.url = url;\n this.statusCode = statusCode;\n }\n}\n\nexport class RateLimitError extends NetworkError {\n readonly retryAfter?: number;\n\n constructor(\n retryAfter?: number\n ) {\n super(\n 'Rate limit exceeded',\n undefined,\n 429\n );\n this.code = 'RATE_LIMIT_ERROR';\n this.suggestion = retryAfter \n ? `Wait ${String(retryAfter)} seconds before retrying`\n : 'Wait a few seconds before retrying';\n this.retryAfter = retryAfter;\n this.exitCode = 6;\n }\n}\n\nexport class NotFoundError extends MutagentError {\n constructor(resource: string, id: string) {\n super(\n 'NOT_FOUND',\n `${resource} not found: ${id}`,\n `Check the ID and try again. List available ${resource.toLowerCase()}s with the appropriate list command.`,\n 1\n );\n }\n}\n\nexport class QuotaExceededError extends MutagentError {\n constructor(message?: string) {\n super(\n 'QUOTA_EXCEEDED',\n message ?? 'Quota exceeded',\n 'Check your plan limits or contact support to upgrade',\n 1\n );\n }\n}\n\nexport class PrerequisiteMissingError extends MutagentError {\n constructor(what: string, howToFix: string) {\n super(\n 'PREREQUISITE_MISSING',\n what,\n howToFix,\n 1\n );\n }\n}\n\nexport class ProviderError extends MutagentError {\n constructor(message: string, suggestion?: string) {\n super(\n 'PROVIDER_ERROR',\n message,\n suggestion ?? 'Check your provider configuration with: mutagent providers list',\n 1\n );\n }\n}\n\n// =============================================================================\n// Error Factory Functions\n// =============================================================================\n\nexport function createErrorFromUnknown(error: unknown): MutagentError {\n if (error instanceof MutagentError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new MutagentError(\n 'UNKNOWN_ERROR',\n error.message,\n undefined,\n 1\n );\n }\n\n return new MutagentError(\n 'UNKNOWN_ERROR',\n typeof error === 'string' ? error : 'An unknown error occurred',\n undefined,\n 1\n );\n}\n\nexport function handleError(error: unknown, isJson: boolean): never {\n if (error instanceof MutagentError) {\n if (isJson) {\n const jsonOutput = error.toJSON();\n // Include remediation info for auth errors\n if (error instanceof AuthenticationError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'mutagent auth login --api-key <key>',\n };\n }\n // Include remediation info for workspace context errors\n if (error instanceof WorkspaceContextError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n setWorkspace: 'mutagent config set workspace <workspace-id>',\n listWorkspaces: 'mutagent workspaces list',\n };\n }\n // Include auth recovery hint for 403 API errors\n if (error instanceof ApiError && error.statusCode === 403) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n checkPermissions: 'Verify your API key has the required permissions',\n };\n }\n // Include _agentGuidance for AI agents to self-correct\n if (error.suggestion) {\n const helpMatch = /^Run:\\s+(mutagent\\s+[^\\n]+--help)/.exec(error.suggestion);\n const helpCommand = helpMatch ? helpMatch[1] : 'mutagent --help';\n (jsonOutput as Record<string, unknown>)._agentGuidance = {\n helpCommand,\n suggestion: error.suggestion,\n };\n }\n console.log(JSON.stringify(jsonOutput, null, 2));\n } else {\n console.error(`Error: ${error.message}`);\n if (error instanceof AuthenticationError) {\n console.error('');\n console.error(AUTH_REMEDIATION_MESSAGE);\n } else if (error instanceof WorkspaceContextError) {\n console.error('');\n console.error(WORKSPACE_REMEDIATION_MESSAGE);\n } else if (error instanceof ApiError && error.statusCode === 403) {\n console.error('');\n console.error('Access denied. To fix:');\n console.error(' mutagent auth login --browser # Re-authenticate');\n console.error(' export MUTAGENT_API_KEY=mt_xxx # Or use a different API key');\n } else if (error instanceof ValidationError) {\n if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n } else if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n // Show help hint for missing arguments or invalid input errors\n if (error.code === 'MISSING_ARGUMENTS' || error.code === 'INVALID_ARGUMENTS' || error.code === 'INVALID_INPUT') {\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n }\n }\n process.exit(error.exitCode);\n }\n\n // Catch Speakeasy SDK internal errors that leaked past sdk-client wrapper\n if (error && typeof error === 'object') {\n const sdkErr = error as { name?: string; rawValue?: unknown; rawMessage?: string; message?: string };\n if (\n sdkErr.name === 'SDKValidationError' ||\n sdkErr.name === 'SDKError' ||\n sdkErr.rawValue !== undefined ||\n sdkErr.rawMessage !== undefined\n ) {\n const friendlyMessage = sdkErr.rawMessage ?? sdkErr.message ?? 'Request failed';\n const wrapped = new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n if (isJson) {\n console.log(JSON.stringify(wrapped.toJSON(), null, 2));\n } else {\n console.error(`Error: ${wrapped.message}`);\n if (wrapped.suggestion) {\n console.error(`Suggestion: ${wrapped.suggestion}`);\n }\n }\n process.exit(1);\n }\n }\n\n // Unknown error\n const message = error instanceof Error ? error.message : 'Unknown error';\n if (isJson) {\n console.log(JSON.stringify({ success: false, error: message, code: 'UNKNOWN_ERROR' }, null, 2));\n } else {\n console.error(`Error: ${message}`);\n }\n process.exit(1);\n}\n",
|
|
7
|
-
"// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { UpdatePromptRequest } from '@mutagent/sdk/models/operations';\nimport type { Prompt, Dataset, DatasetItem, Evaluation, OptimizeJob as OptimizationJob, OptimizeStatus, Agent, CreateAgentInput, UpdateAgentInput, PromptExecutionResult, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n\n constructor(opts: { bearerAuth: string; serverURL?: string; workspaceId?: string; organizationId?: string }) {\n this.apiKey = opts.bearerAuth;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the MutagenT server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // PROMPTS\n // =========================================================================\n\n async listPrompts(): Promise<Prompt[]> {\n try {\n const response = await this.sdk.prompt.listPrompts();\n return response.result.data as Prompt[];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getPrompt(id: string): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.getPrompt({ id: parseInt(id, 10) });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createPrompt(data: Partial<Prompt>): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.createPrompt({\n name: data.name ?? '',\n description: data.description ?? undefined,\n version: data.version ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema ?? undefined,\n outputSchema: data.outputSchema ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updatePrompt(id: string, data: Partial<Prompt>): Promise<Prompt> {\n try {\n const body: Record<string, unknown> = {\n description: data.description ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema as Record<string, never> | undefined,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n };\n if (data.name !== undefined) {\n body.name = data.name;\n }\n const updateArgs: UpdatePromptRequest = { id: parseInt(id, 10), body };\n const response = await this.sdk.prompt.updatePrompt(updateArgs);\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deletePrompt(id: string): Promise<void> {\n try {\n await this.sdk.prompt.deletePrompt({ id: parseInt(id, 10) });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // DATASETS (scoped to prompt)\n // Using direct fetch as SDK types don't match CLI expectations\n // =========================================================================\n\n async listDatasets(promptId: string): Promise<Dataset[]> {\n try {\n const response = await this.request<Dataset[] | { data: Dataset[] }>(`/api/prompt/${promptId}/datasets`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async addDataset(promptId: string, fileContent: string, name?: string): Promise<Dataset & { itemCount?: number; missingExpectedOutputCount?: number }> {\n try {\n // Step 1: Parse content to extract items\n let parsed: unknown;\n try {\n parsed = JSON.parse(fileContent);\n } catch {\n // If not parseable as JSON (e.g., CSV), no items to extract\n parsed = null;\n }\n\n // Determine dataset name and items\n let datasetName = name ?? `Dataset ${new Date().toISOString().slice(0, 16)}`;\n let items: Record<string, unknown>[] | undefined;\n\n if (\n parsed !== null &&\n !Array.isArray(parsed) &&\n typeof parsed === 'object' &&\n 'name' in (parsed as Record<string, unknown>)\n ) {\n // Object with 'name' field: treat as dataset metadata (may contain items)\n const meta = parsed as Record<string, unknown>;\n datasetName = (meta.name as string | undefined) ?? datasetName;\n if (Array.isArray(meta.items)) {\n items = meta.items as Record<string, unknown>[];\n }\n } else if (Array.isArray(parsed)) {\n items = parsed as Record<string, unknown>[];\n }\n\n // Step 2: Create dataset metadata via POST /api/prompt/:id/datasets\n const dataset = await this.request<Dataset>(`/api/prompt/${promptId}/datasets`, {\n method: 'POST',\n body: JSON.stringify({\n name: datasetName,\n }),\n });\n\n // Step 3: Bulk upload items if any via POST /api/prompts/datasets/:id/items/bulk\n let itemCount = 0;\n if (items && items.length > 0) {\n // Map items to the backend schema: { input, expectedOutput, ... }\n const mappedItems = items.map((item, index) => ({\n input: item.input ?? item,\n expectedOutput: item.expectedOutput ?? item.expected_output ?? undefined,\n name: (item.name as string | undefined) ?? `Item ${String(index + 1)}`,\n userFeedback: item.userFeedback as string | undefined,\n systemFeedback: item.systemFeedback as string | undefined,\n labels: item.labels as string[] | undefined,\n metadata: item.metadata as Record<string, unknown> | undefined,\n }));\n\n const missingExpectedOutputCount = mappedItems.filter(\n item => item.expectedOutput === undefined\n ).length;\n\n await this.request(`/api/prompts/datasets/${String(dataset.id)}/items/bulk`, {\n method: 'POST',\n body: JSON.stringify({ items: mappedItems }),\n });\n itemCount = mappedItems.length;\n\n return { ...dataset, itemCount, missingExpectedOutputCount };\n }\n\n return { ...dataset, itemCount };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listDatasetItems(datasetId: string): Promise<DatasetItem[]> {\n try {\n const response = await this.request<DatasetItem[] | { data: DatasetItem[] }>(`/api/prompts/datasets/${datasetId}/items`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteDataset(_promptId: string, datasetId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/datasets/${datasetId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // EVALUATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listEvaluations(promptId: string): Promise<Evaluation[]> {\n try {\n const response = await this.request<{ data: Evaluation[] }>(`/api/prompts/evaluations?promptId=${promptId}`);\n return response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getEvaluation(evaluationId: string): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>(`/api/prompts/evaluations/${evaluationId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createEvaluation(promptId: string, data: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>('/api/prompts/evaluations', {\n method: 'POST',\n body: JSON.stringify({\n promptId: parseInt(promptId, 10),\n name: data.name,\n description: data.description,\n evalConfig: data.evalConfig,\n llmConfig: data.llmConfig,\n tags: data.tags,\n metadata: data.metadata,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteEvaluation(evaluationId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/evaluations/${evaluationId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // OPTIMIZATIONS - Using direct fetch for consistent interface\n // NOTE: Optimization SDK types are empty stubs (OpenAPI spec gap being fixed).\n // These methods use raw HTTP with CLI-defined types until SDK types are populated.\n // =========================================================================\n\n async startOptimization(promptId: string, datasetId: string, evaluationId: string, config?: {\n maxIterations?: number;\n targetScore?: number;\n patience?: number;\n model?: string;\n evalModel?: string;\n }): Promise<OptimizationJob> {\n try {\n return await this.request<OptimizationJob>(`/api/prompt/${promptId}/optimize`, {\n method: 'POST',\n body: JSON.stringify({\n datasetId: parseInt(datasetId, 10),\n evaluationId: parseInt(evaluationId, 10),\n config: {\n maxIterations: config?.maxIterations ?? 1,\n targetScore: config?.targetScore ?? 0.8,\n patience: config?.patience,\n model: config?.model,\n ...(config?.evalModel ? { tuningParams: { evaluationModel: config.evalModel } } : {}),\n },\n executionMode: 'worker_loop',\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationStatus(jobId: string): Promise<OptimizeStatus> {\n try {\n const raw = await this.request<Record<string, unknown>>(`/api/optimization/${jobId}`);\n // Map API response fields to CLI OptimizeStatus type\n // API returns `id` + `progress`; CLI expects `jobId` + `progressPercent`\n const id = raw.id as string | undefined;\n return {\n ...raw,\n jobId: id ?? jobId,\n progressPercent: typeof raw.progress === 'number' ? raw.progress : 0,\n } as OptimizeStatus;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationResults(jobId: string): Promise<{\n job: { id: string; promptId: number; status: string; config?: { maxIterations?: number; model?: string } };\n prompt: Prompt;\n bestScore?: number;\n iterationsCompleted?: number;\n scoreProgression?: number[];\n originalPrompt?: Partial<Prompt>;\n }> {\n try {\n // Compose result from multiple API calls:\n // 1. Job details (status, config, promptId)\n const job = await this.request<{\n id?: string;\n promptId?: number;\n status?: string;\n bestScore?: number;\n currentIteration?: number;\n config?: { maxIterations?: number; model?: string };\n }>(`/api/optimization/${jobId}`);\n // 2. Progression data (score history per iteration)\n const progress = await this.request<{ jobId?: string; progression?: { iteration?: number; score?: number | null }[] }>(`/api/optimization/${jobId}/progress`);\n // 3. Prompt data (current/optimized prompt text)\n const prompt = await this.getPrompt(String(job.promptId ?? ''));\n\n return {\n job: {\n id: job.id ?? jobId,\n promptId: job.promptId ?? 0,\n status: job.status ?? 'unknown',\n config: job.config,\n },\n prompt,\n bestScore: job.bestScore,\n iterationsCompleted: job.currentIteration,\n scoreProgression: Array.isArray(progress.progression)\n ? progress.progression.map(p => (typeof p.score === 'number' ? p.score : 0))\n : undefined,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // TRACES - Using direct fetch since SDK doesn't have traces\n // =========================================================================\n\n async listTraces(filters?: { promptId?: string }): Promise<unknown[]> {\n const params = filters ? new URLSearchParams(filters as Record<string, string>).toString() : '';\n const response = await this.request<{ data?: unknown[]; total: number }>(`/api/traces${params ? `?${params}` : ''}`);\n return response.data ?? [];\n }\n\n async getTrace(id: string): Promise<unknown> {\n return this.request(`/api/traces/${id}`);\n }\n\n async analyzeTraces(promptId: string): Promise<Record<string, unknown>> {\n return this.request(`/api/prompts/${promptId}/trace-analysis`);\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: response.result.data as unknown as Agent[],\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = response.workspaces as unknown as Workspace[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return response as unknown as Workspace;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PLAYGROUND - Execute prompts\n // =========================================================================\n\n async executePrompt(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<PromptExecutionResult> {\n try {\n return await this.request<PromptExecutionResult>(`/api/prompt/${promptId}/playground/call`, {\n method: 'POST',\n body: JSON.stringify({ input, model: options?.model }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executePromptStream(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<Response> {\n const response = await fetch(`${this.endpoint}/api/prompt/${promptId}/execute/stream`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n },\n body: JSON.stringify({ input, ...options }),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response;\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: false,\n });\n // SDK returns { configs: [...], total } but CLI expects { data: [...], total }\n const configs = response.configs as unknown as Provider[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n getCurrentWorkspaceId(): string | undefined {\n return this.workspaceId;\n }\n\n getCurrentOrgId(): string | undefined {\n return this.organizationId;\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return response as unknown as ProviderTestResult;\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport function getSDKClient(): SDKClientWrapper {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n bearerAuth: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/organizations directly — it requires only x-api-key, no tenancy headers\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
|
|
7
|
+
"// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { UpdatePromptRequest } from '@mutagent/sdk/models/operations';\nimport type { Prompt, Dataset, DatasetItem, Evaluation, OptimizeJob as OptimizationJob, OptimizeStatus, Agent, CreateAgentInput, UpdateAgentInput, PromptExecutionResult, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n\n constructor(opts: { bearerAuth: string; serverURL?: string; workspaceId?: string; organizationId?: string }) {\n this.apiKey = opts.bearerAuth;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the MutagenT server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // PROMPTS\n // =========================================================================\n\n async listPrompts(): Promise<Prompt[]> {\n try {\n const response = await this.sdk.prompt.listPrompts();\n return response.result.data as Prompt[];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getPrompt(id: string): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.getPrompt({ id: parseInt(id, 10) });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createPrompt(data: Partial<Prompt>): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.createPrompt({\n name: data.name ?? '',\n description: data.description ?? undefined,\n version: data.version ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema ?? undefined,\n outputSchema: data.outputSchema ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updatePrompt(id: string, data: Partial<Prompt>): Promise<Prompt> {\n try {\n const body: Record<string, unknown> = {\n description: data.description ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema as Record<string, never> | undefined,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n };\n if (data.name !== undefined) {\n body.name = data.name;\n }\n const updateArgs: UpdatePromptRequest = { id: parseInt(id, 10), body };\n const response = await this.sdk.prompt.updatePrompt(updateArgs);\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deletePrompt(id: string): Promise<void> {\n try {\n await this.sdk.prompt.deletePrompt({ id: parseInt(id, 10) });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // DATASETS (scoped to prompt)\n // Using direct fetch as SDK types don't match CLI expectations\n // =========================================================================\n\n async listDatasets(promptId: string): Promise<Dataset[]> {\n try {\n const response = await this.request<Dataset[] | { data: Dataset[] }>(`/api/prompt/${promptId}/datasets`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async addDataset(promptId: string, fileContent: string, name?: string): Promise<Dataset & { itemCount?: number; missingExpectedOutputCount?: number }> {\n try {\n // Step 1: Parse content to extract items\n let parsed: unknown;\n try {\n parsed = JSON.parse(fileContent);\n } catch {\n // If not parseable as JSON (e.g., CSV), no items to extract\n parsed = null;\n }\n\n // Determine dataset name and items\n let datasetName = name ?? `Dataset ${new Date().toISOString().slice(0, 16)}`;\n let items: Record<string, unknown>[] | undefined;\n\n if (\n parsed !== null &&\n !Array.isArray(parsed) &&\n typeof parsed === 'object' &&\n 'name' in (parsed as Record<string, unknown>)\n ) {\n // Object with 'name' field: treat as dataset metadata (may contain items)\n const meta = parsed as Record<string, unknown>;\n datasetName = (meta.name as string | undefined) ?? datasetName;\n if (Array.isArray(meta.items)) {\n items = meta.items as Record<string, unknown>[];\n }\n } else if (Array.isArray(parsed)) {\n items = parsed as Record<string, unknown>[];\n }\n\n // Step 2: Create dataset metadata via POST /api/prompt/:id/datasets\n const dataset = await this.request<Dataset>(`/api/prompt/${promptId}/datasets`, {\n method: 'POST',\n body: JSON.stringify({\n name: datasetName,\n }),\n });\n\n // Step 3: Bulk upload items if any via POST /api/prompts/datasets/:id/items/bulk\n let itemCount = 0;\n if (items && items.length > 0) {\n // Map items to the backend schema: { input, expectedOutput, ... }\n const mappedItems = items.map((item, index) => ({\n input: item.input ?? item,\n expectedOutput: item.expectedOutput ?? item.expected_output ?? undefined,\n name: (item.name as string | undefined) ?? `Item ${String(index + 1)}`,\n userFeedback: item.userFeedback as string | undefined,\n systemFeedback: item.systemFeedback as string | undefined,\n labels: item.labels as string[] | undefined,\n metadata: item.metadata as Record<string, unknown> | undefined,\n }));\n\n const missingExpectedOutputCount = mappedItems.filter(\n item => item.expectedOutput === undefined\n ).length;\n\n await this.request(`/api/prompts/datasets/${String(dataset.id)}/items/bulk`, {\n method: 'POST',\n body: JSON.stringify({ items: mappedItems }),\n });\n itemCount = mappedItems.length;\n\n return { ...dataset, itemCount, missingExpectedOutputCount };\n }\n\n return { ...dataset, itemCount };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listDatasetItems(datasetId: string): Promise<DatasetItem[]> {\n try {\n const response = await this.request<DatasetItem[] | { data: DatasetItem[] }>(`/api/prompts/datasets/${datasetId}/items`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteDataset(_promptId: string, datasetId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/datasets/${datasetId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // EVALUATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listEvaluations(promptId: string): Promise<Evaluation[]> {\n try {\n const response = await this.request<{ data: Evaluation[] }>(`/api/prompts/evaluations?promptId=${promptId}`);\n return response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getEvaluation(evaluationId: string): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>(`/api/prompts/evaluations/${evaluationId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createEvaluation(promptId: string, data: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>('/api/prompts/evaluations', {\n method: 'POST',\n body: JSON.stringify({\n promptId: parseInt(promptId, 10),\n name: data.name,\n description: data.description,\n evalConfig: data.evalConfig,\n llmConfig: data.llmConfig,\n tags: data.tags,\n metadata: data.metadata,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteEvaluation(evaluationId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/evaluations/${evaluationId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // OPTIMIZATIONS - Using direct fetch for consistent interface\n // NOTE: Optimization SDK types are empty stubs (OpenAPI spec gap being fixed).\n // These methods use raw HTTP with CLI-defined types until SDK types are populated.\n // =========================================================================\n\n async startOptimization(promptId: string, datasetId: string, evaluationId: string, config?: {\n maxIterations?: number;\n targetScore?: number;\n patience?: number;\n model?: string;\n evalModel?: string;\n }): Promise<OptimizationJob> {\n try {\n return await this.request<OptimizationJob>(`/api/prompt/${promptId}/optimize`, {\n method: 'POST',\n body: JSON.stringify({\n datasetId: parseInt(datasetId, 10),\n evaluationId: parseInt(evaluationId, 10),\n config: {\n maxIterations: config?.maxIterations ?? 1,\n targetScore: config?.targetScore ?? 0.8,\n patience: config?.patience,\n model: config?.model,\n ...(config?.evalModel ? { tuningParams: { evaluationModel: config.evalModel } } : {}),\n },\n executionMode: 'worker_loop',\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationStatus(jobId: string): Promise<OptimizeStatus> {\n try {\n const raw = await this.request<Record<string, unknown>>(`/api/optimization/${jobId}`);\n // Map API response fields to CLI OptimizeStatus type\n // API returns `id` + `progress`; CLI expects `jobId` + `progressPercent`\n const id = raw.id as string | undefined;\n return {\n ...raw,\n jobId: id ?? jobId,\n progressPercent: typeof raw.progress === 'number' ? raw.progress : 0,\n } as OptimizeStatus;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationResults(jobId: string): Promise<{\n job: { id: string; promptId: number; status: string; config?: { maxIterations?: number; model?: string } };\n prompt: Prompt;\n bestScore?: number;\n iterationsCompleted?: number;\n scoreProgression?: number[];\n originalPrompt?: Partial<Prompt>;\n mutatedPromptText?: string;\n originalPromptText?: string;\n }> {\n try {\n // Compose result from multiple API calls:\n // 1. Job details (status, config, promptId)\n const job = await this.request<{\n id?: string;\n promptId?: number;\n status?: string;\n bestScore?: number;\n currentIteration?: number;\n config?: { maxIterations?: number; model?: string };\n }>(`/api/optimization/${jobId}`);\n // 2. Progression data (score history per iteration)\n const progress = await this.request<{ jobId?: string; progression?: { iteration?: number; score?: number | null }[] }>(`/api/optimization/${jobId}/progress`);\n // 3. Prompt data (current/optimized prompt text)\n const prompt = await this.getPrompt(String(job.promptId ?? ''));\n // 4. Get state snapshots for iteration context (mutated prompt lives here)\n const statesRes = await this.request<{\n states: {\n iteration: number;\n state: Record<string, unknown>;\n score: number | null;\n }[];\n }>(`/api/optimization/${jobId}/states`).catch(() => ({ states: [] as { iteration: number; state: Record<string, unknown>; score: number | null }[] }));\n\n // Extract prompt text from latest state's iteration context\n const latestState = statesRes.states[statesRes.states.length - 1];\n const iterCtx = latestState?.state.iterationContext as {\n basePrompt?: { prompt?: string; version?: number };\n currentPrompt?: { prompt?: string; version?: number };\n } | undefined;\n\n const mutatedPromptText = iterCtx?.currentPrompt?.prompt;\n const originalPromptText = iterCtx?.basePrompt?.prompt;\n\n return {\n job: {\n id: job.id ?? jobId,\n promptId: job.promptId ?? 0,\n status: job.status ?? 'unknown',\n config: job.config,\n },\n prompt,\n bestScore: job.bestScore,\n iterationsCompleted: job.currentIteration,\n scoreProgression: Array.isArray(progress.progression)\n ? progress.progression.map(p => (typeof p.score === 'number' ? p.score : 0))\n : undefined,\n mutatedPromptText,\n originalPromptText,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // TRACES - Using direct fetch since SDK doesn't have traces\n // =========================================================================\n\n async listTraces(filters?: { promptId?: string }): Promise<unknown[]> {\n const params = filters ? new URLSearchParams(filters as Record<string, string>).toString() : '';\n const response = await this.request<{ data?: unknown[]; total: number }>(`/api/traces${params ? `?${params}` : ''}`);\n return response.data ?? [];\n }\n\n async getTrace(id: string): Promise<unknown> {\n return this.request(`/api/traces/${id}`);\n }\n\n async analyzeTraces(promptId: string): Promise<Record<string, unknown>> {\n return this.request(`/api/prompts/${promptId}/trace-analysis`);\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: response.result.data as unknown as Agent[],\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = response.workspaces as unknown as Workspace[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return response as unknown as Workspace;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PLAYGROUND - Execute prompts\n // =========================================================================\n\n async executePrompt(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<PromptExecutionResult> {\n try {\n return await this.request<PromptExecutionResult>(`/api/prompt/${promptId}/playground/call`, {\n method: 'POST',\n body: JSON.stringify({ input, model: options?.model }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executePromptStream(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<Response> {\n const response = await fetch(`${this.endpoint}/api/prompt/${promptId}/execute/stream`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n },\n body: JSON.stringify({ input, ...options }),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response;\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: false,\n });\n // SDK returns { configs: [...], total } but CLI expects { data: [...], total }\n const configs = response.configs as unknown as Provider[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n getCurrentWorkspaceId(): string | undefined {\n return this.workspaceId;\n }\n\n getCurrentOrgId(): string | undefined {\n return this.organizationId;\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return response as unknown as ProviderTestResult;\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport function getSDKClient(): SDKClientWrapper {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n bearerAuth: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/organizations directly — it requires only x-api-key, no tenancy headers\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
|
|
8
8
|
"#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createPromptsCommand } from '../commands/prompts/index.js';\nimport { createTracesCommand } from '../commands/traces.js';\nimport { createIntegrateCommand } from '../commands/integrate.js';\nimport { createAgentsCommand } from '../commands/agents/index.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createPlaygroundCommand } from '../commands/playground.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createExploreCommand } from '../commands/explore.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version: compile-time define > package.json > hardcoded fallback\nlet cliVersion = '0.1.1';\nif (process.env.CLI_VERSION) {\n cliVersion = process.env.CLI_VERSION;\n} else {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n } catch {\n // Fallback to hardcoded version\n }\n}\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - AI-native prompt optimization platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n .version(cliVersion, '-v, --version', 'Display the version number')\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'MutagenT API key')\n .option('--endpoint <url>', 'MutagenT server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Central help hub — self-contained navigation for CI/CD, coding agents, and humans\nprogram.addHelpText('after', `\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n export MUTAGENT_API_KEY=mt_... ${chalk.dim('or')} --api-key mt_...\n --json ${chalk.dim('for structured output')} --non-interactive ${chalk.dim('to disable prompts')}\n\n${chalk.yellow('Command Navigation:')}\n mutagent auth login --browser ${chalk.dim('Authenticate (OAuth)')}\n mutagent auth status ${chalk.dim('Check auth + workspace')}\n mutagent init ${chalk.dim('Initialize project (.mutagentrc.json)')}\n mutagent explore ${chalk.dim('Discover prompts in codebase')}\n mutagent workspaces list --json ${chalk.dim('List workspaces (verify ID)')}\n mutagent config set workspace <id> ${chalk.dim('Set active workspace')}\n mutagent usage --json ${chalk.dim('Check plan limits')}\n\n mutagent prompts create --help ${chalk.dim('Upload prompt (read help first!)')}\n mutagent prompts list --json ${chalk.dim('List prompts')}\n mutagent prompts get <id> --json ${chalk.dim('Full prompt details + schemas')}\n\n mutagent prompts dataset add --help ${chalk.dim('Upload dataset (read help first!)')}\n mutagent prompts dataset list <id> ${chalk.dim('List datasets')}\n\n mutagent prompts evaluation create --help ${chalk.dim('Create eval (read help first!)')}\n mutagent prompts evaluation create <id> --guided --json ${chalk.dim('Guided eval workflow')}\n mutagent prompts evaluation list <id> --json ${chalk.dim('List evaluations')}\n\n mutagent prompts optimize start --help ${chalk.dim('Run optimization (read help first!)')}\n mutagent prompts optimize status <job-id> ${chalk.dim('Poll progress')}\n mutagent prompts optimize results <job-id> ${chalk.dim('View scorecard')}\n\n mutagent integrate <framework> ${chalk.dim('Framework integration guide')}\n mutagent playground run <id> --input '{...}' ${chalk.dim('Quick test')}\n\n${chalk.yellow('Workflow: Evaluate → Optimize:')}\n 1. mutagent prompts create --help ${chalk.dim('← read help')}\n 2. mutagent prompts create ... --json ${chalk.dim('← upload prompt with {variables} + inputSchema')}\n 3. mutagent prompts dataset add --help ${chalk.dim('← read help')}\n 4. mutagent prompts dataset add <id> ... --json ${chalk.dim('← upload dataset')}\n 5. mutagent prompts evaluation create <id> --guided --json ${chalk.dim('← guided eval')}\n 6. mutagent prompts optimize start <id> --dataset <d> --evaluation <e> --json\n\n${chalk.yellow('AI Agent Rules (MANDATORY for coding agents):')}\n 1. EVERY command MUST include --json (no exceptions)\n 2. Run <command> --help BEFORE first use of any command\n 3. Use --guided --json for evaluation creation (NEVER --guided alone)\n 4. Parse and display _directive.renderedCard after every mutation\n 5. After mutagent init, verify workspace: mutagent workspaces list --json\n 6. Use {single_braces} for template variables in prompts\n 7. Collect evaluation rubrics from the user — NEVER auto-generate\n${!hasCredentials() ? '\\n' + chalk.yellow(' Warning: Not authenticated. Run: mutagent auth login --browser') + '\\n' : ''}${!hasRcConfig() ? '\\n' + chalk.green(' Get started: mutagent init') + '\\n' : ''}`);\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createPromptsCommand());\nprogram.addCommand(createTracesCommand());\nprogram.addCommand(createIntegrateCommand());\nprogram.addCommand(createAgentsCommand());\nprogram.addCommand(createPlaygroundCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createExploreCommand()); // Codebase scanner\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\n\n// Parse arguments\nprogram.parse();\n",
|
|
9
9
|
"import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { clearCredentials, getApiKey, loadConfig, saveFullCredentials, hasCredentials } from '../lib/config.js';\nimport { validateApiKey, fetchOrganizations, fetchWorkspaces } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { performBrowserAuth, BrowserAuthError } from '../lib/browser-auth.js';\nimport { MutationContext } from '../lib/mutation-context.js';\nimport { runPostOnboarding } from './onboarding.js';\n\ninterface LoginOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\ninterface LoginAnswers {\n apiKey: string;\n endpoint: string;\n}\n\ninterface AuthMethodAnswer {\n method: 'browser' | 'apiKey';\n}\n\nexport function createAuthCommand(): Command {\n const auth = new Command('auth')\n .description('Authenticate with MutagenT platform')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login\n ${chalk.dim('$')} mutagent auth login --browser\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth logout\n `);\n\n // Login command\n auth\n .command('login')\n .description('Authenticate and store API key')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login ${chalk.dim('# Interactive (choose method)')}\n ${chalk.dim('$')} mutagent auth login --browser ${chalk.dim('# Browser OAuth flow')}\n ${chalk.dim('$')} mutagent auth login --non-interactive ${chalk.dim('# Auto browser flow (AI agents)')}\n\nEnvironment Variables:\n MUTAGENT_API_KEY API key (skips login entirely)\n MUTAGENT_ENDPOINT Custom API endpoint\n MUTAGENT_NON_INTERACTIVE=true Non-interactive mode (auto browser auth)\n CI=true Enables non-interactive mode\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const wasFirstLogin = !hasCredentials();\n let apiKey: string | undefined = process.env.MUTAGENT_API_KEY;\n let endpoint: string = process.env.MUTAGENT_ENDPOINT ?? options.endpoint;\n let workspaceName: string | undefined;\n let organizationName: string | undefined;\n let loginWorkspaceId: string | undefined;\n let loginOrgId: string | undefined;\n\n // If MUTAGENT_API_KEY env var is set, use direct flow\n if (apiKey) {\n // Validate API key\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Fetch org/workspace context for the API key\n const orgs = await fetchOrganizations(apiKey, endpoint);\n let orgId: string | undefined;\n let wsId: string | undefined;\n\n if (orgs.length >= 1 && orgs[0]) {\n orgId = orgs[0].id;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n wsId = defaultWs?.id ?? workspaces[0]?.id;\n }\n\n // Save full credentials with workspace/org context\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: wsId,\n organizationId: orgId,\n });\n\n output.success('Authenticated successfully');\n if (isJson) {\n output.output({\n success: true,\n authenticated: true,\n endpoint,\n workspace: wsId ? { id: wsId } : null,\n organization: orgId ? { id: orgId } : null,\n _directive: {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent prompts list --json'],\n },\n });\n } else {\n output.info(`Endpoint: ${endpoint}`);\n output.info('Next: mutagent workspaces list --json');\n }\n return;\n }\n\n // Detect non-interactive environment\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n // In JSON-only mode without API key, we cannot proceed at all\n if (isJson && !options.browser && isNonInteractive) {\n throw new MutagentError(\n 'INTERACTIVE_REQUIRED',\n 'No API key provided. Set MUTAGENT_API_KEY env var or add --browser for browser auth.',\n 'Run: export MUTAGENT_API_KEY=<key> or mutagent auth login --browser --non-interactive'\n );\n }\n\n // Show welcome message for first-time users (only in interactive mode)\n if (!isNonInteractive && !hasCredentials()) {\n console.log('\\n' + chalk.bold.cyan(' Welcome to MutagenT CLI!') + '\\n');\n console.log(' No credentials found. Please authenticate to continue.\\n');\n }\n\n // Determine auth method\n let useLocalBrowserAuth = options.browser === true;\n\n // In non-interactive mode, auto-select browser auth (skip the prompt menu)\n if (!useLocalBrowserAuth && isNonInteractive) {\n output.info('Non-interactive environment detected. Using browser authentication.');\n useLocalBrowserAuth = true;\n }\n\n if (!useLocalBrowserAuth) {\n // Ask user which method to use (interactive only)\n const methodAnswer = await inquirer.prompt<AuthMethodAnswer>([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to authenticate?',\n choices: [\n {\n name: 'Login (opens browser)',\n value: 'browser',\n },\n {\n name: 'API Key (paste existing key)',\n value: 'apiKey',\n },\n ],\n },\n ]);\n\n useLocalBrowserAuth = methodAnswer.method === 'browser';\n }\n\n if (useLocalBrowserAuth) {\n // Browser authentication flow\n const spinner = ora({\n text: 'Opening browser for authentication...',\n spinner: 'dots',\n });\n\n try {\n spinner.start();\n\n const result = await performBrowserAuth(\n {\n endpoint,\n timeout: 300000, // 5 minutes\n pollInterval: 2000, // 2 seconds\n },\n (message) => {\n spinner.text = message;\n }\n );\n\n spinner.succeed('Authenticated successfully!');\n\n // Save full credentials including workspace info\n saveFullCredentials({\n apiKey: result.apiKey,\n endpoint,\n workspaceId: result.workspaceId,\n organizationId: result.organizationId,\n expiresAt: result.expiresAt,\n });\n\n // Store for display\n apiKey = result.apiKey;\n workspaceName = result.workspaceName;\n organizationName = result.organizationName;\n loginWorkspaceId = result.workspaceId;\n loginOrgId = result.organizationId;\n\n console.log('');\n output.info('Workspace: ' + workspaceName);\n output.info('Organization: ' + organizationName);\n output.info('Endpoint: ' + endpoint);\n\n } catch (error) {\n spinner.fail('Authentication failed');\n\n if (error instanceof BrowserAuthError) {\n throw new MutagentError(\n error.code,\n error.message,\n error.getSuggestion()\n );\n }\n throw error;\n }\n } else {\n // API key paste flow\n const answers = await inquirer.prompt<LoginAnswers>([\n {\n type: 'input',\n name: 'endpoint',\n message: 'MutagenT endpoint:',\n default: endpoint,\n },\n {\n type: 'password',\n name: 'apiKey',\n message: 'API Key:',\n mask: '*',\n validate: (input: string): boolean | string => input.length > 0 || 'API key is required',\n },\n ]);\n\n apiKey = answers.apiKey;\n endpoint = answers.endpoint;\n\n // Validate API key\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Fetch organizations to get workspace/org context\n let selectedOrgId: string | undefined;\n let selectedOrgName: string | undefined;\n let selectedWsId: string | undefined;\n let selectedWsName: string | undefined;\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n if (orgs.length === 1 && orgs[0]) {\n // Auto-select sole org\n selectedOrgId = orgs[0].id;\n selectedOrgName = orgs[0].name;\n } else if (orgs.length > 1) {\n const orgAnswer = await inquirer.prompt<{ orgId: string }>([{\n type: 'list',\n name: 'orgId',\n message: 'Select organization:',\n choices: orgs.map(o => ({ name: o.name, value: o.id })),\n }]);\n selectedOrgId = orgAnswer.orgId;\n selectedOrgName = orgs.find(o => o.id === selectedOrgId)?.name;\n }\n\n if (selectedOrgId) {\n const workspaces = await fetchWorkspaces(apiKey, endpoint, selectedOrgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n if (workspaces.length === 1 && workspaces[0]) {\n selectedWsId = workspaces[0].id;\n selectedWsName = workspaces[0].name;\n } else if (defaultWs) {\n selectedWsId = defaultWs.id;\n selectedWsName = defaultWs.name;\n } else if (workspaces.length > 1) {\n const wsAnswer = await inquirer.prompt<{ wsId: string }>([{\n type: 'list',\n name: 'wsId',\n message: 'Select workspace:',\n choices: workspaces.map(w => ({ name: w.name + (w.isDefault ? ' (default)' : ''), value: w.id })),\n }]);\n selectedWsId = wsAnswer.wsId;\n selectedWsName = workspaces.find(w => w.id === selectedWsId)?.name;\n }\n }\n\n // Save full credentials with workspace/org context\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: selectedWsId,\n organizationId: selectedOrgId,\n });\n\n // Store for display\n workspaceName = selectedWsName;\n organizationName = selectedOrgName;\n loginWorkspaceId = selectedWsId;\n loginOrgId = selectedOrgId;\n\n output.success('Authenticated successfully');\n if (selectedOrgName) output.info('Organization: ' + selectedOrgName);\n if (selectedWsName) output.info('Workspace: ' + selectedWsName);\n output.info('Endpoint: ' + endpoint);\n }\n\n // JSON output for login success\n if (isJson) {\n output.output({\n success: true,\n authenticated: true,\n endpoint,\n workspace: loginWorkspaceId ? { id: loginWorkspaceId, name: workspaceName } : null,\n organization: loginOrgId ? { id: loginOrgId, name: organizationName } : null,\n _directive: {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent prompts list --json'],\n },\n });\n } else {\n output.info('Next: mutagent workspaces list --json');\n }\n\n // Post-onboarding flow: only on first interactive login\n if (wasFirstLogin && process.stdin.isTTY && !isJson) {\n await runPostOnboarding();\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n // Status command\n auth\n .command('status')\n .description('Check authentication status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth status --json\n `)\n .action(async () => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const apiKey = getApiKey();\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n\n if (!apiKey) {\n if (isJson) {\n output.output({ authenticated: false, message: 'Not authenticated' });\n } else {\n output.error('Not authenticated');\n output.info('Run: mutagent auth login');\n }\n process.exit(0);\n }\n\n // Validate the key\n const isValid = await validateApiKey(apiKey, endpoint);\n\n // Check onboarding and context state\n const cwd = process.cwd();\n const hasOnboarding = existsSync(join(cwd, '.mutagentrc.json'));\n const hasContextFile = existsSync(join(cwd, '.mutagent', 'mutation-context.md'));\n\n let contextSummary: { prompts: number; datasets: number; evaluations: number; integrated: string[] } | undefined;\n if (hasContextFile) {\n try {\n const ctx = MutationContext.load(cwd);\n contextSummary = ctx.getSummary();\n } catch {\n // Silently ignore parse errors\n }\n }\n\n if (isJson) {\n const statusResult: Record<string, unknown> = {\n authenticated: isValid,\n endpoint,\n keyPrefix: `${apiKey.slice(0, 8)}...`,\n defaultWorkspace: config.defaultWorkspace,\n defaultOrganization: config.defaultOrganization,\n onboarding: hasOnboarding,\n contextFile: hasContextFile,\n context: contextSummary ?? null,\n };\n if (!isValid) {\n statusResult.message = 'Authentication invalid — run `mutagent auth login --browser`';\n statusResult.remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'export MUTAGENT_API_KEY=<key>',\n };\n }\n output.output(statusResult);\n } else {\n if (isValid) {\n output.success('Authentication: Authenticated');\n output.info(`Endpoint: ${endpoint}`);\n output.info(`Key: ${apiKey.slice(0, 8)}...`);\n if (config.defaultWorkspace) {\n output.info(`Workspace: ${config.defaultWorkspace}`);\n }\n if (config.defaultOrganization) {\n output.info(`Organization: ${config.defaultOrganization}`);\n }\n } else {\n output.error('Authentication: Invalid — run `mutagent auth login --browser`');\n console.error('');\n console.error('Authentication required. Options:');\n console.error(' Interactive: mutagent auth login --browser');\n console.error(' Non-interactive: export MUTAGENT_API_KEY=<your-key>');\n console.error(' CI/CD: export MUTAGENT_API_KEY=<key>');\n }\n\n // Onboarding status\n if (hasOnboarding) {\n output.success('Onboarding: Complete (.mutagentrc.json found)');\n } else {\n output.warn('Onboarding: Not initialized (run `mutagent init`)');\n }\n\n // Context file status\n if (hasContextFile && contextSummary) {\n const parts = [\n `${String(contextSummary.prompts)} prompts`,\n `${String(contextSummary.datasets)} datasets`,\n `${String(contextSummary.evaluations)} evaluations`,\n ];\n output.success(`Context File: .mutagent/mutation-context.md (${parts.join(', ')})`);\n } else if (hasContextFile) {\n output.success('Context File: .mutagent/mutation-context.md');\n } else {\n output.warn('Context File: Not found (run `mutagent explore`)');\n }\n\n // Integration status\n if (contextSummary && contextSummary.integrated.length > 0) {\n output.success(`Integration: ${contextSummary.integrated.join(', ')} (active)`);\n }\n }\n });\n\n // Logout command\n auth\n .command('logout')\n .description('Clear stored credentials')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth logout\n `)\n .action(() => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n clearCredentials();\n output.success('Logged out successfully');\n });\n\n return auth;\n}\n",
|
|
10
10
|
"import chalk from 'chalk';\nimport type { Command } from 'commander';\nimport type { OutputFormat } from '../types/index.js';\n\n/**\n * Safely extract the --json flag from Commander options chain.\n * Handles the `any` type from Commander's opts() method.\n */\nexport function getJsonFlag(command: Command | undefined): boolean {\n if (!command) return false;\n // Navigate up the parent chain to find the root command options\n \n const parentOpts = command.parent ? command.parent.opts() : null;\n \n const ownOpts = command.opts();\n \n return Boolean(parentOpts?.json ?? ownOpts.json);\n}\n\nexport class OutputFormatter {\n constructor(private format: OutputFormat) {}\n\n output(data: unknown): void {\n if (this.format === 'json') {\n console.log(JSON.stringify(data, null, 2));\n } else {\n this.formatTable(data);\n }\n }\n\n private formatTable(data: unknown): void {\n if (Array.isArray(data)) {\n this.formatArray(data);\n } else if (data && typeof data === 'object') {\n this.formatObject(data as Record<string, unknown>);\n } else {\n console.log(data);\n }\n }\n\n private formatArray(data: unknown[]): void {\n if (data.length === 0) {\n console.log(chalk.gray('No results'));\n return;\n }\n\n // Get columns from first item\n const firstItem = data[0];\n if (!firstItem || typeof firstItem !== 'object') {\n data.forEach(item => { console.log(` ${String(item)}`); });\n return;\n }\n\n const keys = Object.keys(firstItem);\n \n // Helper to convert any value to display string\n const toDisplayString = (val: unknown): string => {\n if (val === null || val === undefined) return '';\n if (typeof val === 'object') return JSON.stringify(val);\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean' || typeof val === 'bigint') {\n return val.toString();\n }\n return JSON.stringify(val);\n };\n\n // Calculate column widths\n const widths: Record<string, number> = {};\n keys.forEach(key => {\n widths[key] = Math.max(\n key.length,\n ...data.map(item => toDisplayString((item as Record<string, unknown>)[key]).length)\n );\n });\n\n // Print header\n const header = keys.map(key => chalk.bold(key.toUpperCase().padEnd(widths[key] ?? 10))).join(' ');\n console.log(header);\n console.log(keys.map(key => '-'.repeat(widths[key] ?? 10)).join(' '));\n\n // Print rows\n data.forEach(item => {\n const row = keys.map(key => {\n const value = toDisplayString((item as Record<string, unknown>)[key]);\n const width = widths[key] ?? 10;\n return value.padEnd(width).slice(0, width);\n }).join(' ');\n console.log(row);\n });\n\n console.log(chalk.gray(`\\n${String(data.length)} result(s)`));\n }\n\n private formatObject(data: Record<string, unknown>): void {\n const maxKeyLength = Math.max(...Object.keys(data).map(k => k.length));\n\n Object.entries(data).forEach(([key, value]) => {\n const formattedKey = chalk.bold(key.padEnd(maxKeyLength));\n let formattedValue: string;\n\n if (value === null || value === undefined) {\n formattedValue = '';\n } else if (typeof value === 'object') {\n formattedValue = JSON.stringify(value, null, 2);\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n formattedValue = value.toString();\n } else {\n formattedValue = JSON.stringify(value);\n }\n\n console.log(`${formattedKey} ${formattedValue}`);\n });\n }\n\n success(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ success: true, message }, null, 2));\n } else {\n console.log(chalk.green(`✓ ${message}`));\n }\n }\n\n error(message: string, code?: string, suggestedAction?: string): void {\n if (this.format === 'json') {\n const result: Record<string, unknown> = { success: false, error: message };\n if (code) result.code = code;\n if (suggestedAction) result.suggestedAction = suggestedAction;\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(chalk.red(`✗ ${message}`));\n }\n }\n\n info(message: string): void {\n if (this.format !== 'json') {\n console.log(chalk.blue(`ℹ ${message}`));\n }\n }\n\n warn(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ warning: message }, null, 2));\n } else {\n console.log(chalk.yellow(`⚠ ${message}`));\n }\n }\n}\n\ninterface Spinner {\n start: () => Promise<unknown> | undefined;\n stop?: () => void;\n succeed?: () => void;\n fail?: () => void;\n}\n\nexport function createSpinner(text: string, isJson: boolean): Spinner {\n if (isJson) {\n // No-op spinner for JSON mode - returns undefined to match interface\n const noop = (): undefined => undefined;\n return {\n start: noop,\n stop: noop,\n succeed: noop,\n fail: noop,\n };\n }\n\n // Dynamic import for ora (ESM)\n const start = async (): Promise<unknown> => {\n const { default: ora } = await import('ora');\n return ora(text).start();\n };\n\n return { start };\n}\n",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n promptLinks, promptLink, promptsDashboardLink,\n formatCreationHints,\n promptCreatedDirective, promptUpdatedDirective, promptDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport {\n isValidJsonSchema, formatSchemaWarning,\n validateSchemaDescriptions,\n} from '../../lib/schema-helpers.js';\nimport type { Prompt } from '../../types/index.js';\nimport {\n updateMutationContext, isSchemaEmpty, parseSchemaOption,\n type ListOptions, type GetOptions, type CreateOptions,\n type UpdateOptions, type DeleteOptions,\n} from './index.js';\n\nexport function registerPromptsCrud(prompts: Command): void {\n // List prompts\n prompts\n .command('list')\n .description('List all prompts')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts list --limit 10\n ${chalk.dim('$')} mutagent prompts list --json\n\n${chalk.dim('Tip: Use --json for machine-readable output (AI agents, CI pipelines).')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const promptsList = await client.listPrompts();\n\n // Limit results\n const limit = parseInt(options.limit, 10) || 50;\n const limited = promptsList.slice(0, limit);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts get <id>` for full details.\n const withLinks = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n isLatest: p.isLatest,\n updatedAt: p.updatedAt,\n _links: promptLinks(p.id),\n }));\n output.output(withLinks);\n } else {\n // Show workspace context\n const wsId = client.getCurrentWorkspaceId();\n if (wsId) {\n output.info(`Workspace: ${wsId}`);\n }\n\n if (limited.length === 0) {\n output.info(\"No prompts found in current workspace. Run 'mutagent config list' to check workspace context.\");\n } else {\n // Format for table\n const formatted = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n updated: p.updatedAt ? new Date(p.updatedAt).toLocaleDateString() : 'N/A',\n url: promptLink(p.id),\n }));\n output.output(formatted);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get prompt\n prompts\n .command('get')\n .description('Get prompt details with nested data')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--with-datasets', 'Include datasets')\n .option('--with-evals', 'Include evaluations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts get <id>\n ${chalk.dim('$')} mutagent prompts get <id> --with-datasets --with-evals\n ${chalk.dim('$')} mutagent prompts get <id> --json\n\n${chalk.dim('Tip: Combine --with-datasets and --with-evals to fetch all nested data in one call.')}\n `)\n .action(async (id: string, options: GetOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(id);\n\n const result: Record<string, unknown> = { ...prompt };\n\n if (options.withDatasets) {\n const datasets = await client.listDatasets(id);\n result.datasets = datasets;\n }\n\n if (options.withEvals) {\n const evals = await client.listEvaluations(id);\n result.evaluations = evals;\n }\n\n if (isJson) {\n result._links = promptLinks(id);\n }\n output.output(result);\n if (!isJson) {\n output.info(`View in dashboard: ${promptLink(id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create prompt\n prompts\n .command('create')\n .description('Create a new prompt')\n .option('-d, --data <json>', 'Prompt as JSON string (recommended — curl-style inline)')\n .option('--raw-file <path>', 'Create from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'Prompt name')\n .option('--description <text>', 'Prompt description (shown in dashboard)')\n .option('-c, --content <content>', 'Prompt content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .option('--output-schema <json>', 'Output schema as JSON string (required for optimization)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts create --name \"my-prompt\" --description \"Greeting prompt for customers\" --system \"You are helpful\" --human \"{input}\" --output-schema '{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\",\"description\":\"The result\"}}}'\n ${chalk.dim('$')} mutagent prompts create --name \"raw-prompt\" --raw \"Summarize: {text}\" --output-schema '{\"type\":\"object\",\"properties\":{\"summary\":{\"type\":\"string\",\"description\":\"Summary\"}}}'\n ${chalk.dim('$')} mutagent prompts create -d '{\"name\":\"summarizer\",\"systemPrompt\":\"Summarize\",\"humanPrompt\":\"{text}\",\"outputSchema\":{\"type\":\"object\",\"properties\":{\"summary\":{\"type\":\"string\",\"description\":\"Summary\"}}}}'\n\nPrompt Input Methods (pick one, priority order):\n --system/--human Structured system + user message pair ${chalk.green('(recommended)')}\n --raw Single raw prompt text with {variables}\n -d, --data Inline JSON object (CI/scripts/agents)\n --messages Full messages array as JSON\n --raw-file Load plain text file as raw prompt\n\nExpected JSON (--data):\n ${chalk.dim('\\'{\"name\":\"my-prompt\",\"systemPrompt\":\"You are...\",\"humanPrompt\":\"{input}\",\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\",\"description\":\"The result\"}}},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"User input\"}}}}\\'')}\n\n${chalk.yellow('Variable Syntax:')}\n MutagenT uses {single_braces} for template variables.\n humanPrompt: \"Analyze this: {document}\" ${chalk.green('✓ correct')}\n humanPrompt: \"Analyze this: {{document}}\" ${chalk.red('✗ wrong')}\n\n Variables in humanPrompt MUST also appear in inputSchema.properties.\n Static prompts (no variables) cannot substitute inputs during optimization.\n\n${chalk.red('outputSchema is required.')}\n\n${chalk.yellow('AI Agent: ALWAYS append --json to this command.')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt>;\n\n // Priority: --data > --raw-file > individual flags\n if (options.data) {\n // Parse inline JSON\n try {\n data = JSON.parse(options.data) as Partial<Prompt>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts create --help\\nProvide a valid JSON object, e.g., \\'{\"name\":\"my-prompt\",\"systemPrompt\":\"You are helpful\"}\\''\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.description) data.description = options.description;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Run: mutagent prompts create --help\\nCheck the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data = {\n name: options.name ?? options.rawFile.replace(/^.*[\\\\/]/, '').replace(/\\.[^.]+$/, ''),\n description: options.description,\n rawPrompt: textContent,\n };\n } else if (options.name) {\n // Handle different prompt style formats\n data = { name: options.name, description: options.description };\n\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Run: mutagent prompts create --help\\nProvide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Prompt content required',\n 'Run: mutagent prompts create --help\\nUse --data, --raw-file, --raw, --system/--human, or --messages to specify prompt content'\n );\n }\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --data, --raw-file, or --name with prompt content is required',\n 'Run: mutagent prompts create --help\\nUse --data for inline JSON, --raw-file for plain text, or provide --name with --raw, --system/--human, or --messages'\n );\n }\n\n // --output-schema flag overrides any outputSchema from --data\n if (options.outputSchema) {\n try {\n data.outputSchema = JSON.parse(options.outputSchema) as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --output-schema flag',\n 'Run: mutagent prompts create --help\\nProvide a valid JSON Schema, e.g., \\'{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}\\''\n );\n }\n }\n\n // outputSchema is REQUIRED — error if missing\n if (isSchemaEmpty(data.outputSchema)) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'outputSchema is required for prompt creation',\n 'Run: mutagent prompts create --help\\nUse --output-schema \\'{\"type\":\"object\",\"properties\":{...}}\\' or include outputSchema in --data'\n );\n }\n\n // Enforce inputSchema is present and valid (hard block)\n if (isSchemaEmpty(data.inputSchema)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'inputSchema is required. Optimization cannot run without defined input variables.',\n 'Run: mutagent prompts create --help\\nProvide inputSchema via --data. Example:\\n' +\n ' --data \\'{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"User query\"}}}}\\''\n );\n } else if (!isValidJsonSchema(data.inputSchema)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'inputSchema is not a valid JSON Schema object.',\n 'Run: mutagent prompts create --help\\n' + formatSchemaWarning('inputSchema')\n );\n } else {\n const missingDescs = validateSchemaDescriptions(data.inputSchema);\n if (missingDescs.length > 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `inputSchema properties missing descriptions: ${missingDescs.join(', ')}`,\n \"Run: mutagent prompts create --help\\nAdd a 'description' field to each property in your inputSchema. Example: { \\\"properties\\\": { \\\"field\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"What this field contains\\\" } } }\"\n );\n }\n }\n\n // Warn about missing/invalid outputSchema (non-blocking)\n if (isSchemaEmpty(data.outputSchema)) {\n output.warn('No outputSchema provided. This may limit optimization effectiveness.');\n } else if (!isValidJsonSchema(data.outputSchema)) {\n output.warn(formatSchemaWarning('outputSchema'));\n }\n\n const client = getSDKClient();\n const prompt = await client.createPrompt(data);\n\n if (isJson) {\n const directive = promptCreatedDirective(prompt.id, prompt.name);\n output.output({ ...prompt, _links: promptLinks(prompt.id), _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n output.info(`Workspace: ${client.getCurrentWorkspaceId() ?? 'auto-inferred from API key'}`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n if (options.rawFile) {\n const rawFilePath = options.rawFile;\n updateMutationContext(ctx => {\n const preview = (data.rawPrompt ?? data.systemPrompt ?? data.name ?? '').slice(0, 50);\n ctx.addDiscoveredPrompt(rawFilePath, 1, preview);\n ctx.markPromptUploaded(rawFilePath, String(prompt.id), prompt.version);\n });\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update prompt\n prompts\n .command('update')\n .description('Update a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Update fields as JSON string (recommended — curl-style inline)')\n .option('--raw-file <path>', 'Update from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'New name')\n .option('--description <text>', 'New description (shown in dashboard)')\n .option('-c, --content <content>', 'New content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .option('--input-schema <json>', 'Input schema as JSON string')\n .option('--input-schema-file <path>', 'Input schema from JSON file')\n .option('--output-schema <json>', 'Output schema as JSON string')\n .option('--output-schema-file <path>', 'Output schema from JSON file')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts update <id> --system \"Updated system prompt\" --human \"{input}\"\n ${chalk.dim('$')} mutagent prompts update <id> --name \"new-name\" --description \"Updated description\"\n ${chalk.dim('$')} mutagent prompts update <id> --raw \"Summarize: {text}\"\n ${chalk.dim('$')} mutagent prompts update <id> -d '{\"name\":\"new-name\",\"systemPrompt\":\"Updated prompt\"}'\n ${chalk.dim('$')} mutagent prompts update <id> --input-schema '{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Input text\"}}}'\n\n${chalk.dim('CLI flags (--name) override --data fields.')}\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt> = {};\n\n // Priority: --data > --raw-file > individual flags\n if (options.data) {\n try {\n data = JSON.parse(options.data) as Partial<Prompt>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts update --help\\n' +\n 'Provide a valid JSON object, e.g., \\'{\"name\":\"new-name\",\"systemPrompt\":\"Updated prompt\"}\\''\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.description) data.description = options.description;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Run: mutagent prompts update --help\\n' +\n 'Check the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data.rawPrompt = textContent;\n if (options.name) data.name = options.name;\n if (options.description) data.description = options.description;\n } else {\n if (options.name) data.name = options.name;\n if (options.description) data.description = options.description;\n\n // Handle different prompt style formats\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Run: mutagent prompts update --help\\n' +\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n }\n }\n\n // Parse --input-schema / --input-schema-file\n const parsedInputSchema = parseSchemaOption(\n options.inputSchema, options.inputSchemaFile,\n 'input-schema', 'mutagent prompts update --help'\n );\n if (parsedInputSchema) data.inputSchema = parsedInputSchema;\n\n // Parse --output-schema / --output-schema-file\n const parsedOutputSchema = parseSchemaOption(\n options.outputSchema, options.outputSchemaFile,\n 'output-schema', 'mutagent prompts update --help'\n );\n if (parsedOutputSchema) data.outputSchema = parsedOutputSchema;\n\n // Validate inputSchema descriptions if provided\n if (data.inputSchema && isValidJsonSchema(data.inputSchema)) {\n const missingDescs = validateSchemaDescriptions(data.inputSchema);\n if (missingDescs.length > 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `inputSchema properties missing descriptions: ${missingDescs.join(', ')}`,\n 'Run: mutagent prompts update --help\\n' +\n \"Add a 'description' field to each property in your inputSchema. Example: { \\\"properties\\\": { \\\"field\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"What this field contains\\\" } } }\"\n );\n }\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Run: mutagent prompts update --help\\n' +\n 'Use --data, --raw-file, --name, --raw, --system/--human, --messages, --input-schema, or --output-schema'\n );\n }\n\n const client = getSDKClient();\n const prompt = await client.updatePrompt(id, data);\n\n if (isJson) {\n const directive = promptUpdatedDirective(prompt.id, prompt.name);\n output.output({ ...prompt, _links: promptLinks(prompt.id), _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Updated prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n if (options.rawFile) {\n const rawFilePath = options.rawFile;\n updateMutationContext(ctx => {\n ctx.markPromptUploaded(rawFilePath, String(prompt.id), prompt.version);\n });\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete prompt\n prompts\n .command('delete')\n .description('Delete a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts delete <id>\n ${chalk.dim('$')} mutagent prompts delete <id> --force\n ${chalk.dim('$')} mutagent prompts delete <id> --force --json\n\n${chalk.dim('Note: --force is required. The CLI is non-interactive — confirm with the user via your native flow, then pass --force.')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting prompt ${id} requires confirmation`,\n 'Run: mutagent prompts delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts delete ${id} --force`\n );\n }\n\n const client = getSDKClient();\n try {\n await client.deletePrompt(id);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = promptDeletedDirective(id);\n output.output({ success: true, deletedId: id, _links: { prompts: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Prompt ${id} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = promptDeletedDirective(id);\n output.output({ success: true, deletedId: id, _links: { prompts: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Deleted prompt: ${id}`);\n output.info(`View prompts: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
19
19
|
"/**\n * @fileoverview JSON Schema helper utilities for MutagenT CLI\n * @module @mutagent/cli/lib/schema-helpers\n *\n * Provides validation, building, and formatting utilities for JSON Schema\n * objects used with prompt inputSchema/outputSchema fields.\n */\n\n/**\n * Variable definition for building JSON Schema interactively.\n */\nexport interface SchemaVariable {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n description: string;\n}\n\n/**\n * Supported JSON Schema primitive types for interactive variable definition.\n */\nexport const SUPPORTED_SCHEMA_TYPES = ['string', 'number', 'boolean', 'array', 'object'] as const;\nexport type SupportedSchemaType = typeof SUPPORTED_SCHEMA_TYPES[number];\n\n/**\n * Check whether a value is a valid JSON Schema (basic structural validation).\n *\n * A valid JSON Schema for our purposes must:\n * - Be a non-null object\n * - Have a \"type\" property (usually \"object\")\n * - If type is \"object\", should have a \"properties\" property\n *\n * This is NOT a full JSON Schema meta-validation -- it checks the structural\n * conventions expected by MutagenT's prompt system.\n */\nexport function isValidJsonSchema(schema: unknown): boolean {\n if (schema === null || schema === undefined) return false;\n if (typeof schema !== 'object') return false;\n if (Array.isArray(schema)) return false;\n\n const obj = schema as Record<string, unknown>;\n\n // Must have \"type\" field\n if (!('type' in obj) || typeof obj.type !== 'string') return false;\n\n // If type is \"object\", should have \"properties\"\n if (obj.type === 'object') {\n if (!('properties' in obj) || typeof obj.properties !== 'object' || obj.properties === null) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Build a JSON Schema from an array of variable definitions.\n *\n * @example\n * ```typescript\n * const schema = buildSchemaFromVariables([\n * { name: 'customer_name', type: 'string', description: 'The customer full name' },\n * { name: 'age', type: 'number', description: 'Customer age' },\n * ]);\n * // Returns:\n * // {\n * // type: \"object\",\n * // properties: {\n * // customer_name: { type: \"string\", description: \"The customer full name\" },\n * // age: { type: \"number\", description: \"Customer age\" }\n * // }\n * // }\n * ```\n */\nexport function buildSchemaFromVariables(variables: SchemaVariable[]): Record<string, unknown> {\n const properties: Record<string, Record<string, unknown>> = {};\n\n for (const variable of variables) {\n properties[variable.name] = {\n type: variable.type,\n description: variable.description,\n };\n }\n\n return {\n type: 'object',\n properties,\n };\n}\n\n/**\n * Return a formatted JSON Schema example string for display in CLI help output.\n */\nexport function formatSchemaExample(): string {\n return JSON.stringify(\n {\n type: 'object',\n properties: {\n variable_name: { type: 'string', description: 'Description here' },\n },\n },\n null,\n 2,\n );\n}\n\n/**\n * Validate that all properties in a JSON schema have `description` fields.\n * Returns a list of property names missing descriptions.\n */\nexport function validateSchemaDescriptions(schema: unknown): string[] {\n if (schema === null || schema === undefined) return [];\n if (typeof schema !== 'object' || Array.isArray(schema)) return [];\n\n const obj = schema as Record<string, unknown>;\n const properties = obj.properties;\n if (!properties || typeof properties !== 'object' || Array.isArray(properties)) return [];\n\n const missing: string[] = [];\n const props = properties as Record<string, unknown>;\n for (const [key, value] of Object.entries(props)) {\n if (value === null || value === undefined || typeof value !== 'object') {\n missing.push(key);\n continue;\n }\n const prop = value as Record<string, unknown>;\n if (typeof prop.description !== 'string' || prop.description.trim() === '') {\n missing.push(key);\n }\n }\n\n return missing;\n}\n\n/**\n * Return a formatted warning message with schema example for invalid schemas.\n * Used by the create/update commands when inputSchema or outputSchema\n * does not look like valid JSON Schema.\n */\nexport function formatSchemaWarning(fieldName: string): string {\n return [\n `${fieldName} doesn't appear to be a valid JSON Schema.`,\n '',\n ' Expected format:',\n ' {',\n ' \"type\": \"object\",',\n ' \"properties\": {',\n ' \"variable_name\": { \"type\": \"string\", \"description\": \"Description here\" }',\n ' }',\n ' }',\n '',\n ' You can also provide a schema via --data: mutagent prompts create -d \\'{\"inputSchema\":{...},\"outputSchema\":{...}}\\'',\n ].join('\\n');\n}\n",
|
|
20
20
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n promptDatasetsLink, datasetLinks, datasetLink,\n formatCreationHints,\n datasetAddedDirective, datasetDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\n\ninterface DatasetAddOptions {\n data?: string;\n name?: string;\n}\n\n/**\n * Parse dataset file content based on format detection.\n * Supports JSON arrays, JSONL (one JSON object per line), and CSV passthrough.\n *\n * @param rawContent - The raw file content as a string\n * @param filePath - The file path (used for format detection and error messages)\n * @returns The parsed content as a JSON string suitable for the API\n */\nexport function parseDatasetFile(rawContent: string, filePath: string): string {\n const trimmed = rawContent.trim();\n\n // CSV files are passed through as-is (the API handles CSV parsing)\n if (filePath.endsWith('.csv')) {\n return rawContent;\n }\n\n // If content starts with '[', treat as JSON array\n if (trimmed.startsWith('[')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Expected a JSON array in dataset file',\n 'Run: mutagent prompts dataset add --help\\nDataset JSON files should contain an array of objects: [{...}, {...}]'\n );\n }\n return trimmed;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON array from ${filePath}`,\n 'Run: mutagent prompts dataset add --help\\nEnsure the file contains valid JSON. For line-delimited JSON, use .jsonl extension or put one object per line.'\n );\n }\n }\n\n // If content starts with '{' or doesn't start with '[', treat as JSONL\n // (one JSON object per line)\n const lines = trimmed.split('\\n').filter(line => line.trim().length > 0);\n const items: unknown[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n const trimmedLine = line.trim();\n try {\n items.push(JSON.parse(trimmedLine));\n } catch {\n throw new MutagentError(\n 'INVALID_JSONL',\n `Invalid JSON on line ${String(i + 1)} of ${filePath}`,\n `Run: mutagent prompts dataset add --help\\nEach line must be valid JSON. Problem line: \"${trimmedLine.substring(0, 80)}${trimmedLine.length > 80 ? '...' : ''}\"`\n );\n }\n }\n\n return JSON.stringify(items);\n}\n\nexport function registerDatasetCommands(prompts: Command): void {\n const dataset = new Command('dataset')\n .description('Manage datasets for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{...},\"expectedOutput\":{...}}]'\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n `)\n .action(() => {\n dataset.help();\n });\n prompts.addCommand(dataset);\n\n // List datasets\n dataset\n .command('list')\n .description('List datasets for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const datasets = await client.listDatasets(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts dataset get` for full details.\n const withLinks = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updatedAt: d.updatedAt,\n _links: datasetLinks(promptId, d.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updated: d.updatedAt ? new Date(String(d.updatedAt)).toLocaleDateString() : 'N/A',\n url: datasetLink(promptId, d.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Add dataset\n dataset\n .command('add')\n .description('Add dataset to a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Inline JSON array of dataset items')\n .option('-n, --name <name>', 'Dataset name')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]'\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]' --name \"My Dataset\"\n\nInline data format (-d):\n JSON array of objects, e.g.:\n ${chalk.dim('[{\"input\": {\"text\": \"hello\"}, \"expectedOutput\": {\"result\": \"world\"}}]')}\n\nExpected item format:\n ${chalk.dim('{\"input\": {\"<field>\": \"<value>\"}, \"expectedOutput\": {\"<field>\": \"<value>\"}}')}\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent prompts dataset add <id> -d '[...]' --json\n Items MUST have BOTH input AND expectedOutput.\n Keys must match prompt's inputSchema.properties (input) and outputSchema.properties (expectedOutput).\n expectedOutput is REQUIRED for evaluation scoring.\n Check schemas: mutagent prompts get <prompt-id> --json\n\n${chalk.red('Required: --data must be provided.')}\n `)\n .action(async (promptId: string, options: DatasetAddOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.data) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '-d/--data is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Use -d \\'[{...}]\\' to provide inline JSON data'\n );\n }\n\n let content: string;\n\n // Inline JSON data - validate it parses as an array\n try {\n const parsed: unknown = JSON.parse(options.data);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Inline data must be a JSON array',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n content = options.data;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in -d/--data flag',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a valid JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n\n // Dataset naming: use --name flag or error\n const datasetName = options.name;\n if (!datasetName) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Dataset name is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n `[Agent: Ask the user for a dataset name via AskUserQuestion, then pass --name]\\n` +\n `Use --name <name>, e.g., mutagent prompts dataset add ${promptId} --name \"my-dataset\" -d '[...]'`\n );\n }\n\n const client = getSDKClient();\n const datasetResult = await client.addDataset(promptId, content, datasetName);\n\n if (isJson) {\n let rsState: ResourceState | undefined;\n try {\n const evals = await client.listEvaluations(promptId);\n rsState = { evaluations: evals.length };\n } catch { /* non-critical */ }\n const directive = datasetAddedDirective(promptId, datasetResult.id, datasetResult.name, datasetResult.itemCount, rsState);\n output.output({\n ...datasetResult,\n _links: datasetLinks(promptId, datasetResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Added dataset \"${datasetResult.name}\" to prompt: ${promptId} (id: ${String(datasetResult.id)})`);\n if (datasetResult.itemCount !== undefined && datasetResult.itemCount > 0) {\n output.info(`Items uploaded: ${String(datasetResult.itemCount)}`);\n }\n if (datasetResult.missingExpectedOutputCount !== undefined && datasetResult.missingExpectedOutputCount > 0) {\n output.warn(\n `${String(datasetResult.missingExpectedOutputCount)} of ${String(datasetResult.itemCount ?? 0)} items have no expectedOutput. Optimization may fail without expected outputs.`\n );\n }\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: datasetResult.id,\n name: datasetResult.name,\n dashboardUrl: datasetLink(promptId, datasetResult.id),\n apiPath: `/api/prompts/${promptId}/datasets/${String(datasetResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n updateMutationContext(ctx => {\n ctx.addDiscoveredDataset('inline-data', datasetResult.name, datasetResult.itemCount ?? 0);\n ctx.markDatasetUploaded('inline-data', String(datasetResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete dataset\n dataset\n .command('delete')\n .description('Delete a dataset from a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force --json\n `)\n .action(async (promptId: string, datasetId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting dataset ${datasetId} from prompt ${promptId} requires confirmation`,\n 'Run: mutagent prompts dataset delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts dataset delete ${promptId} ${datasetId} --force`\n );\n }\n\n const client = getSDKClient();\n try {\n await client.deleteDataset(promptId, datasetId);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Dataset ${datasetId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Deleted dataset ${datasetId} from prompt ${promptId}`);\n output.info(`View datasets: ${promptDatasetsLink(promptId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
21
|
-
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n promptsDashboardLink, evaluationLinks, evaluationLink,\n formatCreationHints,\n evaluationCreatedDirective, evaluationDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\nimport { buildGuidedWorkflow, type GuidedWorkflowResult } from './guided-workflow.js';\n\ninterface EvaluationCreateOptions {\n data?: string;\n name?: string;\n description?: string;\n guided?: boolean;\n}\n\nexport function registerEvaluationCommands(prompts: Command): void {\n const evaluation = new Command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n `)\n .action(() => {\n evaluation.help();\n });\n prompts.addCommand(evaluation);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts evaluation get` for full details.\n const withLinks = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updatedAt: e.updatedAt,\n _links: evaluationLinks(promptId, e.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updated: e.updatedAt ? new Date(String(e.updatedAt)).toLocaleDateString() : 'N/A',\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation details\n evaluation\n .command('get')\n .description('Get evaluation details including criteria')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id> --json\n `)\n .action(async (evaluationId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evalObj = await client.getEvaluation(evaluationId);\n\n if (isJson) {\n output.output({\n ...evalObj,\n _links: evaluationLinks(evalObj.promptGroupId, evalObj.id),\n });\n } else {\n output.success(`Evaluation: ${evalObj.name} (ID: ${String(evalObj.id)})`);\n if (evalObj.description) {\n console.log(` Description: ${evalObj.description}`);\n }\n console.log(` Created: ${evalObj.createdAt ? new Date(String(evalObj.createdAt)).toLocaleDateString() : 'N/A'}`);\n console.log('');\n\n // Display criteria\n const config = evalObj.evalConfig as { criteria?: { name: string; description: string; evaluationParameter: string }[] } | null;\n const criteria = config?.criteria;\n if (criteria && Array.isArray(criteria) && criteria.length > 0) {\n console.log(' Criteria:');\n for (const c of criteria) {\n console.log(` ${chalk.cyan(c.name)}`);\n if (c.description) {\n console.log(` Description: ${c.description}`);\n }\n if (c.evaluationParameter) {\n console.log(` Parameter: ${c.evaluationParameter}`);\n }\n console.log('');\n }\n } else {\n console.log(' No criteria defined.');\n }\n\n // Display LLM config if present\n const llmConfig = evalObj.llmConfig as Record<string, unknown> | null;\n if (llmConfig && Object.keys(llmConfig).length > 0) {\n console.log(' LLM Config:');\n for (const [key, value] of Object.entries(llmConfig)) {\n console.log(` ${key}: ${String(value)}`);\n }\n console.log('');\n }\n\n output.info(`View in dashboard: ${evaluationLink(evalObj.promptGroupId, evalObj.id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Evaluation as JSON string (for pre-validated criteria only)')\n .option('-n, --name <name>', 'Evaluation name (required unless --guided)')\n .option('--description <text>', 'Evaluation description')\n .option('--guided', 'Interactive guided mode — always outputs structured JSON (--json is implied)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided ${chalk.dim('# recommended: shows workflow guide + schema fields')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided --json ${chalk.dim('# structured workflow for AI agents')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy\" -d '{\"evalConfig\":{\"criteria\":[...]}}' ${chalk.dim('# power user')}\n\nGuided Workflow (recommended):\n --guided outputs a workflow guide that:\n 1. Fetches your prompt's inputSchema + outputSchema fields\n 2. Shows available fields for evaluation criteria\n 3. Provides a criteria template and example command\n 4. For AI agents: includes a _directive with workflow instructions\n\n Works in all modes (TTY, non-TTY, --json).\n\nAI Agent (MANDATORY):\n 1. Run: mutagent prompts evaluation create --help\n 2. Run: mutagent prompts evaluation create <id> --guided --json\n 3. Parse askUserQuestions from the JSON output\n 4. Use AskUserQuestion to collect DETAILED rubrics from the user\n 5. NEVER auto-generate criteria. NEVER use vague rubrics.\n 6. Construct --data JSON from user answers, then:\n mutagent prompts evaluation create <id> --name \"<name>\" -d '<json>' --json\n\nExpected Criteria Shape (--data):\n ${chalk.dim('{\"evalConfig\":{\"criteria\":[{\"name\":\"<name>\",\"description\":\"<scoring rubric>\",\"evaluationParameter\":\"<schema field>\"}]}}')}\n evaluationParameter must target an outputSchema OR inputSchema field.\n\n${chalk.red('Required: --name (unless --guided). Criteria must include evaluationParameter.')}\n${chalk.dim('CLI flags (--name, --description) override --data fields.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (promptId: string, options: EvaluationCreateOptions) => {\n // --guided always implies --json — agents must never use --guided without --json\n let isJson = getJsonFlag(prompts);\n if (options.guided) {\n isJson = true;\n }\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Render the guided workflow (shared between --guided and auto-trigger)\n const renderGuidedWorkflow = (wf: GuidedWorkflowResult): void => {\n const { inputFields, outputFields, allFields } = wf._meta;\n if (isJson) {\n const { _meta: _discarded, ...cleanWorkflow } = wf;\n void _discarded;\n output.output(cleanWorkflow);\n echoDirectiveToStderr(wf._directive);\n } else {\n output.success(`Guided Evaluation Workflow for prompt: ${wf.prompt.name} (ID: ${promptId})`);\n console.log('');\n if (outputFields.length > 0) {\n console.log(` Output Schema Fields: ${outputFields.join(', ')}`);\n }\n if (inputFields.length > 0) {\n console.log(` Input Schema Fields: ${inputFields.join(', ')}`);\n }\n console.log('');\n console.log(' For each field, define what correct output looks like:');\n for (const { field, source } of allFields) {\n console.log(` ${chalk.cyan(field)} (${source})`);\n console.log(` → What makes a correct vs incorrect \"${field}\"?`);\n }\n console.log('');\n console.log(' Then create the evaluation:');\n console.log(` mutagent prompts evaluation create ${promptId} --name \"My Eval\" \\\\`);\n console.log(` -d '{\"evalConfig\":{\"criteria\":[{\"name\":\"accuracy\",\"description\":\"Correct if output matches expected structure\",\"evaluationParameter\":\"${outputFields[0] ?? '<field>'}\"}]}}'`);\n console.log('');\n }\n };\n\n // Guided mode: dump structured workflow/template (non-interactive)\n if (options.guided) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n\n // No criteria source — auto-return guided workflow in --json/TTY mode\n if (!options.data) {\n if (isJson || process.stdout.isTTY) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No criteria source provided',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n\n // Non-guided: --name is required\n if (!options.name) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Evaluation name is required',\n 'Run: mutagent prompts evaluation create --help\\n' +\n '[Agent: Ask the user for an evaluation name via AskUserQuestion, then pass --name]\\n' +\n 'Use --name <name>, e.g., mutagent prompts evaluation create ' + promptId + ' --name \"My Eval\" --data \\'...\\''\n );\n }\n\n const evalData: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Parse inline JSON\n try {\n const parsed = JSON.parse(options.data) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Provide a valid JSON object, e.g., \\'{\"evalConfig\":{\"criteria\":[...]},\"llmConfig\":{\"model\":\"gpt-4\"}}\\''\n );\n }\n\n // CLI flags override --data fields\n if (options.name) evalData.name = options.name;\n if (options.description) evalData.description = options.description;\n\n // Validate evaluation criteria exist and are well-formed\n const criteria = evalData.evalConfig?.criteria;\n if (!criteria || !Array.isArray(criteria) || criteria.length === 0) {\n // Always throw — suggest --guided for workflow\n let fieldsHint = '';\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n const fields = Object.keys(props as Record<string, unknown>);\n if (fields.length > 0) {\n fieldsHint = `\\nDetected output fields from prompt schema: ${fields.join(', ')}\\n`;\n }\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'Evaluation criteria are required. Provide criteria via --data.',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json\\n' +\n fieldsHint +\n '\\nExample JSON (--data flag):\\n' +\n ' --data \\'{\"evalConfig\":{\"criteria\":[{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"}]}}\\'\\n'\n );\n }\n for (const c of criteria as Record<string, unknown>[]) {\n // Accept both new format (description/evaluationParameter) and legacy (scoringRubric/targetField)\n // Normalize legacy fields to new format for storage FIRST\n if (c.scoringRubric && !c.description) {\n c.description = c.scoringRubric;\n delete c.scoringRubric;\n }\n if (c.targetField && !c.evaluationParameter) {\n const tf = c.targetField as string;\n c.evaluationParameter = tf.startsWith('output.') ? tf.slice('output.'.length)\n : tf.startsWith('input.') ? tf.slice('input.'.length) : tf;\n delete c.targetField;\n }\n\n const hasDescription = c.description;\n const hasEvalParam = c.evaluationParameter;\n if (!c.name || !hasDescription || !hasEvalParam) {\n const cName = typeof c.name === 'string' ? c.name : 'unnamed';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Criterion \"${cName}\" is missing required fields. Need: name, description, evaluationParameter.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Detect duplicate evaluationParameter values\n const seenParams = new Set<string>();\n const duplicateParams: string[] = [];\n for (const c of criteria as { evaluationParameter?: string }[]) {\n const param = c.evaluationParameter;\n if (param) {\n if (seenParams.has(param)) {\n duplicateParams.push(param);\n }\n seenParams.add(param);\n }\n }\n if (duplicateParams.length > 0) {\n // Best-effort: fetch prompt outputSchema to show available fields\n let availableFields: string[] = [];\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n availableFields = Object.keys(props as Record<string, unknown>);\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n const uniqueDupes = [...new Set(duplicateParams)];\n const fieldsHint = availableFields.length > 0\n ? `\\nAvailable output fields: ${availableFields.join(', ')}`\n : '';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Duplicate evaluationParameter: \"${uniqueDupes.join('\", \"')}\". Each criterion must target a unique output field.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Each criterion scores a different output field. Fix by changing the evaluationParameter to a unique field.' +\n fieldsHint +\n '\\n\\nExample:\\n --data \\'{\"evalConfig\":{\"criteria\":[' +\n '{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"},' +\n '{\"name\":\"Confidence\",\"description\":\"...\",\"evaluationParameter\":\"confidence\"}' +\n ']}}\\''\n );\n }\n\n const client = getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n const criteriaLen = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n let rsState: ResourceState | undefined;\n try {\n const datasets = await client.listDatasets(promptId);\n rsState = { datasets: datasets.length };\n } catch { /* non-critical */ }\n const directive = evaluationCreatedDirective(promptId, evalResult.id, evalResult.name, criteriaLen, rsState);\n output.output({\n ...evalResult,\n _links: evaluationLinks(promptId, evalResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created evaluation: ${evalResult.name} (id: ${String(evalResult.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Evaluation',\n id: evalResult.id,\n name: evalResult.name,\n dashboardUrl: evaluationLink(promptId, evalResult.id),\n apiPath: `/api/prompts/${promptId}/evaluations/${String(evalResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n const criteriaCount = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n updateMutationContext(ctx => {\n ctx.addEvaluation(evalResult.name, criteriaCount, String(evalResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete evaluation\n evaluation\n .command('delete')\n .description('Delete an evaluation')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force --json\n `)\n .action(async (evaluationId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting evaluation ${evaluationId} requires confirmation`,\n `Run: mutagent prompts evaluation delete --help\\n` +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts evaluation delete ${evaluationId} --force`\n );\n }\n\n const client = getSDKClient();\n try {\n await client.deleteEvaluation(evaluationId);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} deleted successfully`);\n output.info(`View evaluations: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
22
|
-
"import { getSDKClient } from '../../lib/sdk-client.js';\n\ninterface FieldInfo {\n field: string;\n source: 'inputSchema' | 'outputSchema';\n fieldSchema?: { type?: string; description?: string };\n}\n\nexport interface GuidedWorkflowResult {\n prompt: { id: string; name: string };\n inputSchema: { fields: string[] };\n outputSchema: { fields: string[] };\n workflow: {\n description: string;\n steps: { step: number; action: string; detail: string }[];\n criteriaTemplate: Record<string, unknown>;\n exampleCommand: string;\n };\n askUserQuestions: {\n question: string;\n header: string;\n options: { label: string; description: string }[];\n multiSelect: boolean;\n context: Record<string, unknown>;\n }[];\n _directive: {\n display: string;\n instruction: string;\n aiAgentDecisionTree: Record<string, string>;\n };\n _meta: { inputFields: string[]; outputFields: string[]; allFields: FieldInfo[] };\n}\n\n/**\n * Build a guided workflow object for a prompt's evaluation.\n * Fetches prompt schemas and optional dataset examples to construct\n * a structured workflow that agents use to collect rubrics from users.\n */\nexport async function buildGuidedWorkflow(promptId: string): Promise<GuidedWorkflowResult> {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n\n const truncate = (s: string, max: number): string => s.length > max ? s.slice(0, max) + '...' : s;\n\n const outputProperties = prompt.outputSchema && typeof prompt.outputSchema === 'object'\n ? ((prompt.outputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n const inputProperties = prompt.inputSchema && typeof prompt.inputSchema === 'object'\n ? ((prompt.inputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n\n const inputFields = Object.keys(inputProperties);\n const outputFields = Object.keys(outputProperties);\n\n const allFields: FieldInfo[] = [\n ...
|
|
23
|
-
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport { optimizerLink, promptLink, echoDirectiveToStderr } from '../../lib/ui-links.js';\nimport {\n renderScorecard, showPromptDiff,\n renderOptimizationStartCard, renderOptimizationStatusCard,\n startDirective, statusDirective,\n} from '../../lib/scorecard.js';\nimport type { Prompt } from '../../types/index.js';\nimport {\n updateMutationContext, parseValidationErrors, isSchemaEmpty,\n buildResultsScorecardText, PREREQUISITES_TEXT,\n} from './index.js';\n\ninterface OptimizeStartOptions {\n dataset: string;\n evaluation: string;\n maxIterations?: string;\n targetScore?: string;\n patience?: string;\n model?: string;\n evalModel?: string;\n}\n\nexport function registerOptimizeCommands(prompts: Command): void {\n const optimize = new Command('optimize')\n .description('Manage prompt optimization jobs')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n\nWorkflow: start -> status (poll) -> results\n `)\n .action(() => {\n optimize.help();\n });\n prompts.addCommand(optimize);\n\n // Start optimization\n optimize\n .command('start')\n .description('Start prompt optimization')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-d, --dataset <id>', 'Dataset ID for optimization (from: mutagent prompts dataset list <prompt-id>)')\n .requiredOption('-e, --evaluation <id>', 'Evaluation ID for scoring (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--max-iterations <n>', 'Max optimization iterations (default: 1)')\n .option('--target-score <n>', 'Target accuracy 0-1 (default: 0.8)')\n .option('--patience <n>', 'Iterations without improvement before stopping')\n .option('--model <model-id>', 'Target LLM model (e.g., \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model-id>', 'Evaluation model (defaults to target model)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --max-iterations 5\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --target-score 0.95 --model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --json\n${chalk.yellow('Pre-Optimization Checklist (auto-validated by preflight):')}\n □ inputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ outputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ Evaluation criteria ${chalk.dim('(warns if no evaluationParameter set)')}\n □ Dataset items ${chalk.dim('(warns if expectedOutput missing)')}\n □ Criteria ↔ Schema ${chalk.dim('(warns if criteria reference unknown fields)')}\n\n${PREREQUISITES_TEXT}\n\n${chalk.dim('Monitor progress with: mutagent prompts optimize status <job-id>')}\n\n${chalk.yellow('AI Agent: ALWAYS append --json to this command.')}\n `)\n .action(async (promptId: string, options: OptimizeStartOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // [AI AGENT NOTICE] TEMPORARILY REMOVED: `await checkProviderConfigured();` was here.\n // See comment block above PREREQUISITES_TEXT for full context and re-add instructions.\n const client = getSDKClient();\n\n // Pre-flight validation — runs in ALL modes (JSON + interactive)\n if (!isJson) {\n output.info('Running pre-flight checks...');\n }\n\n const prompt = await client.getPrompt(promptId);\n\n // Collect all preflight check results\n const preflightChecks: Record<string, { passed: boolean; error?: string; warning?: string }> = {};\n\n // Check 1: Prompt has outputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.outputSchema)) {\n preflightChecks.outputSchema = {\n passed: false,\n error: 'Missing outputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.outputSchema = { passed: true };\n }\n\n // Check 2: Prompt has inputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.inputSchema)) {\n preflightChecks.inputSchema = {\n passed: false,\n error: 'Missing inputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.inputSchema = { passed: true };\n }\n\n // Check 3: Validate the specified evaluation has proper criteria\n let evaluation: { evalConfig?: { criteria?: { evaluationParameter?: string; targetField?: string; name?: string }[] } } | undefined;\n try {\n const evalObj = await client.getEvaluation(options.evaluation);\n evaluation = evalObj;\n const evalConfig = evalObj.evalConfig as { criteria?: { evaluationParameter?: string; targetField?: string }[] } | undefined;\n const criteria = evalConfig?.criteria;\n if (!criteria || criteria.length === 0) {\n preflightChecks.evaluation = {\n passed: true,\n warning: `Evaluation ${options.evaluation} has no criteria defined. ` +\n `Re-create: mutagent prompts evaluation create ${promptId} --guided`,\n };\n } else {\n const hasCriteriaWithParam = criteria.some((c) => c.evaluationParameter ?? c.targetField);\n if (!hasCriteriaWithParam) {\n preflightChecks.evaluation = {\n passed: true,\n warning: `Evaluation ${options.evaluation} has criteria but none have evaluationParameter set. ` +\n `Re-create: mutagent prompts evaluation create ${promptId} --guided`,\n };\n } else {\n preflightChecks.evaluation = { passed: true };\n if (!isJson) {\n output.info(`Using evaluation ${options.evaluation} with ${String(criteria.length)} criteria.`);\n }\n }\n }\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n preflightChecks.evaluation = {\n passed: true,\n warning: `Could not validate evaluation ${options.evaluation}. Proceeding anyway.`,\n };\n }\n\n // Check 4: Validate dataset items have expectedOutput\n try {\n const datasetItems = await client.listDatasetItems(options.dataset);\n if (datasetItems.length === 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Dataset ${options.dataset} has no items. Optimization requires test data.`,\n };\n } else {\n const missingExpected = datasetItems.filter(item => !item.expectedOutput);\n if (missingExpected.length > 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `${String(missingExpected.length)} of ${String(datasetItems.length)} dataset items missing expectedOutput. ` +\n 'Optimization works best when all items have expected outputs.',\n };\n } else {\n preflightChecks.datasetItems = { passed: true };\n }\n }\n } catch {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Could not validate dataset items for ${options.dataset}. Proceeding anyway.`,\n };\n }\n\n // Check 5: Validate evaluation criteria match schema fields\n if (evaluation && preflightChecks.inputSchema.passed && preflightChecks.outputSchema.passed) {\n const inputProps = (prompt.inputSchema as Record<string, unknown> | null)?.properties;\n const outputProps = (prompt.outputSchema as Record<string, unknown> | null)?.properties;\n const schemaFields = [\n ...Object.keys((inputProps as Record<string, unknown> | undefined) ?? {}),\n ...Object.keys((outputProps as Record<string, unknown> | undefined) ?? {}),\n ];\n const evalCfg = evaluation.evalConfig as { criteria?: { evaluationParameter?: string; name?: string }[] } | undefined;\n const evalCriteria = evalCfg?.criteria ?? [];\n const unmatchedCriteria = evalCriteria.filter(\n (c) => c.evaluationParameter && !schemaFields.includes(c.evaluationParameter)\n );\n if (unmatchedCriteria.length > 0) {\n const names = unmatchedCriteria.map(c => c.evaluationParameter ?? c.name).join(', ');\n preflightChecks.criteriaMatch = {\n passed: true,\n warning: `Evaluation criteria reference fields not in schema: ${names}. ` +\n `Available schema fields: ${schemaFields.join(', ') || '(none)'}`,\n };\n } else {\n preflightChecks.criteriaMatch = { passed: true };\n }\n }\n\n // Determine if any hard failures exist\n const hardFailures = Object.entries(preflightChecks).filter(\n ([, check]) => !check.passed\n );\n\n if (hardFailures.length > 0) {\n if (isJson) {\n // Structured preflight error with all results\n const suggestedActions: string[] = [];\n if (!preflightChecks.inputSchema.passed) {\n suggestedActions.push(\n 'Update the prompt with inputSchema derived from template variables.\\n' +\n `Run: mutagent prompts get ${promptId} --json\\n` +\n `Run: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n );\n }\n if (!preflightChecks.outputSchema.passed) {\n suggestedActions.push(\n `Update your prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n );\n }\n output.output({\n success: false,\n error: 'Preflight validation failed',\n code: 'PREFLIGHT_FAILED',\n suggestedAction: suggestedActions.join('\\n'),\n preflightChecks,\n });\n return;\n }\n\n // Interactive mode: print each failure\n for (const [name, check] of hardFailures) {\n console.error(chalk.red(`Error: ${name} — ${check.error ?? 'Failed'}`));\n }\n // Print suggestions\n if (!preflightChecks.outputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n ));\n }\n if (!preflightChecks.inputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n ));\n }\n process.exitCode = 1;\n return;\n }\n\n // Print warnings (non-JSON mode only)\n if (!isJson) {\n for (const [, check] of Object.entries(preflightChecks)) {\n if (check.warning) {\n output.warn(check.warning);\n }\n }\n }\n\n const job = await client.startOptimization(promptId, options.dataset, options.evaluation, {\n maxIterations: options.maxIterations ? parseInt(options.maxIterations, 10) : 1,\n targetScore: options.targetScore ? parseFloat(options.targetScore) : undefined,\n patience: options.patience ? parseInt(options.patience, 10) : undefined,\n model: options.model,\n evalModel: options.evalModel,\n });\n\n if (isJson) {\n const directive = startDirective(job, promptId, options.dataset, options.evaluation);\n output.output({\n ...job,\n _links: {\n dashboard: optimizerLink(job.id),\n api: `/api/prompts/${promptId}/optimizations/${job.id}`,\n },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStartCard({ job, promptId, datasetId: options.dataset });\n }\n } catch (error) {\n // Enhanced error handling: parse validation errors for actionable messages\n if (error instanceof ApiError) {\n const messages = parseValidationErrors(error);\n const errorText = messages.join(' ');\n\n // Pattern-match known pipeline errors for actionable guidance\n const suggestions: string[] = [];\n if (errorText.includes('Output Schema is not present') || errorText.includes('outputSchema')) {\n suggestions.push(`Update prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{...}}}'`);\n }\n if (errorText.includes('Outputs are not valid') || errorText.includes('Parameters Mismatch')) {\n suggestions.push('Dataset items may not match the prompt schema. Check expectedOutput fields in your dataset.');\n }\n if (errorText.includes('Inputs are not valid')) {\n suggestions.push(\"Dataset item inputs don't match the prompt's inputSchema. Verify field names and types.\");\n }\n if (errorText.includes('has no items') || (errorText.includes('Dataset') && errorText.includes('not found'))) {\n suggestions.push(`Upload data: mutagent prompts dataset add ${promptId} -d '[...]' --name \"my-dataset\"`);\n }\n if (errorText.includes('Evaluations are not present')) {\n suggestions.push(`Create evaluation: mutagent prompts evaluation create ${promptId} --guided`);\n }\n if (errorText.includes('Trial') && errorText.includes('limit')) {\n suggestions.push('Trial optimization limit reached. Contact support to upgrade.');\n }\n\n if (!isJson) {\n console.error(chalk.red('\\nOptimization failed:'));\n for (const msg of messages) {\n console.error(chalk.red(` ${msg}`));\n }\n if (suggestions.length > 0) {\n console.error(chalk.yellow('\\nSuggested fixes:'));\n for (const s of suggestions) {\n console.error(chalk.yellow(` → ${s}`));\n }\n }\n console.error('');\n console.error(PREREQUISITES_TEXT);\n }\n }\n handleError(error, isJson);\n }\n });\n\n // Optimization status\n optimize\n .command('status')\n .description('Check optimization status')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const status = await client.getOptimizationStatus(jobId);\n\n if (isJson) {\n const directive = statusDirective(status);\n output.output({\n ...status,\n _links: { optimizer: optimizerLink(jobId) },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStatusCard(status);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Optimization results\n optimize\n .command('results')\n .description('Get optimization results')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .option('--apply', 'Apply the optimized prompt as new version')\n .option('--diff', 'Show the prompt diff (before/after)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> ${chalk.dim('# view scorecard')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --diff ${chalk.dim('# view prompt diff')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --apply ${chalk.dim('# apply optimized prompt')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --json ${chalk.dim('# structured output')}\n\nAfter viewing results:\n --apply Apply the optimized prompt (replaces current version)\n --diff Show detailed before/after diff\n ${chalk.dim('No flag = view scorecard only.')}\n\n ${chalk.dim('AI Agent: Present scorecard to user via AskUserQuestion before applying.')}\n `)\n .action(async (jobId: string, options: { apply?: boolean; diff?: boolean }) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getOptimizationResults(jobId);\n const resultData = results as Record<string, unknown>;\n\n if (isJson) {\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n const scorecardText = buildResultsScorecardText(resultData);\n const directive = {\n display: 'scorecard',\n instruction: 'Present the before/after scorecard to the user. Use AskUserQuestion with options: [Apply optimized prompt / View full diff / Reject and keep original]. Do NOT auto-apply.',\n renderedCard: scorecardText,\n next: isCompleted ? [\n `mutagent prompts optimize results ${jobId} --apply --json`,\n `mutagent prompts optimize results ${jobId} --diff --json`,\n ] : [],\n };\n output.output({ ...resultData, _links: { optimizer: optimizerLink(jobId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n // Render scorecard\n renderScorecard(resultData as unknown as Parameters<typeof renderScorecard>[0]);\n\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n\n // Show diff if requested\n if (options.diff) {\n const original = (resultData.originalPrompt as Partial<Prompt> | undefined);\n const optimized = resultData.prompt as Partial<Prompt> | undefined;\n showPromptDiff(\n original?.systemPrompt ?? original?.rawPrompt ?? null,\n optimized?.systemPrompt ?? optimized?.rawPrompt ?? null,\n );\n }\n\n // Apply optimized prompt if requested\n if (options.apply && isCompleted) {\n const optimizedPrompt = resultData.prompt as Partial<Prompt> | undefined;\n const promptIdStr = String(jobData.promptId);\n if (optimizedPrompt && promptIdStr) {\n output.info('Applying optimized prompt...');\n const updateData: Partial<Prompt> = {};\n if (optimizedPrompt.systemPrompt) updateData.systemPrompt = optimizedPrompt.systemPrompt;\n if (optimizedPrompt.humanPrompt) updateData.humanPrompt = optimizedPrompt.humanPrompt;\n if (optimizedPrompt.rawPrompt) updateData.rawPrompt = optimizedPrompt.rawPrompt;\n\n await client.updatePrompt(promptIdStr, updateData);\n output.success('Optimized prompt applied as new version!');\n output.info(`View prompt: ${promptLink(promptIdStr)}`);\n\n updateMutationContext(ctx => {\n ctx.markPromptUploaded(\n `optimization:${jobId}`,\n promptIdStr,\n 'optimized',\n );\n });\n }\n } else if (options.apply && !isCompleted) {\n output.error('Cannot apply — optimization is not yet completed.');\n } else if (isCompleted && !options.apply) {\n // Show available actions (non-interactive)\n output.info('Actions:');\n output.info(` Apply optimized prompt: mutagent prompts optimize results ${jobId} --apply`);\n output.info(` View diff: mutagent prompts optimize results ${jobId} --diff`);\n output.info(' Reject (keep original): no action needed');\n } else if (!isCompleted) {\n const statusStr = (jobData?.status as string | undefined) ?? 'unknown';\n output.info(`Job status: ${statusStr}. Results may be partial.`);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
24
|
-
"import chalk from 'chalk';\nimport { optimizerLink, AI_DIRECTIVE, renderPlainCard } from './ui-links.js';\nimport type { Prompt, OptimizeStatus, OptimizationJob } from '../types/index.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface OptimizationStartData {\n job: OptimizationJob;\n promptId: string;\n datasetId: string;\n}\n\ninterface OptimizationResultData {\n job: {\n id: string;\n promptId: number;\n status: string;\n config?: {\n maxIterations?: number;\n model?: string;\n };\n };\n prompt: Prompt;\n // Extended fields from /progress endpoint\n originalScore?: number;\n bestScore?: number;\n iterationsCompleted?: number;\n scoreProgression?: number[];\n originalPrompt?: Partial<Prompt>;\n criteriaScores?: {\n name: string;\n before?: number;\n after?: number;\n }[];\n}\n\nexport interface ScorecardAction {\n action: 'apply' | 'reject' | 'details';\n}\n\n// =============================================================================\n// Formatting Helpers\n// =============================================================================\n\nfunction truncateText(text: string, maxLen: number): string {\n if (text.length <= maxLen) return text;\n return text.substring(0, maxLen - 3) + '...';\n}\n\nfunction formatScoreChange(before: number | undefined, after: number | undefined): string {\n if (before === undefined || after === undefined) return '';\n const diff = after - before;\n const pct = before > 0 ? Math.round((diff / before) * 100) : 0;\n if (diff > 0) return chalk.green(` (+${String(pct)}%)`);\n if (diff < 0) return chalk.red(` (${String(pct)}%)`);\n return chalk.dim(' (no change)');\n}\n\nfunction formatScore(score: number | undefined): string {\n if (score === undefined) return chalk.dim('N/A');\n return score >= 0.8 ? chalk.green(score.toFixed(2)) : score >= 0.5 ? chalk.yellow(score.toFixed(2)) : chalk.red(score.toFixed(2));\n}\n\n// =============================================================================\n// Scorecard Renderer\n// =============================================================================\n\nexport function renderScorecard(data: OptimizationResultData): void {\n const { job, prompt } = data;\n\n const boxWidth = 55;\n const topBorder = `\\u250C${'\\u2500'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'\\u2500'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'\\u2500'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // Strip ANSI for length calculation\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n const originalScore = data.originalScore;\n const bestScore = data.bestScore;\n const iterations = data.iterationsCompleted ?? job.config?.maxIterations ?? 0;\n\n // Get prompt texts\n const originalText = data.originalPrompt?.systemPrompt\n ?? data.originalPrompt?.rawPrompt\n ?? '(original prompt)';\n const optimizedText = prompt.systemPrompt ?? prompt.rawPrompt ?? prompt.humanPrompt ?? '(optimized prompt)';\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('Optimization Results')));\n console.log(separator);\n\n // Before\n console.log(line(chalk.dim('BEFORE')));\n console.log(line(` Prompt: ${chalk.dim(truncateText(originalText, 38))}`));\n console.log(line(` Score: ${formatScore(originalScore)}`));\n console.log(line(''));\n\n // After\n console.log(line(chalk.bold('AFTER')));\n console.log(line(` Prompt: ${chalk.cyan(truncateText(optimizedText, 38))}`));\n console.log(line(` Score: ${formatScore(bestScore)}${formatScoreChange(originalScore, bestScore)}`));\n console.log(separator);\n\n // Per-criterion breakdown\n if (data.criteriaScores && data.criteriaScores.length > 0) {\n console.log(line(chalk.dim(' Criterion Before After Change')));\n console.log(line(chalk.dim(' ' + '\\u2500'.repeat(45))));\n for (const c of data.criteriaScores) {\n const name = c.name.length > 16 ? c.name.substring(0, 13) + '...' : c.name;\n const paddedName = name + ' '.repeat(18 - name.length);\n const beforeStr = c.before !== undefined ? c.before.toFixed(2) : 'N/A ';\n const afterStr = c.after !== undefined ? c.after.toFixed(2) : 'N/A ';\n const changeStr = c.before !== undefined && c.after !== undefined && c.before > 0\n ? ((): string => {\n const pct = Math.round(((c.after - c.before) / c.before) * 100);\n if (pct > 0) return chalk.green(`+${String(pct)}%`);\n if (pct < 0) return chalk.red(`${String(pct)}%`);\n return chalk.dim('0%');\n })()\n : '';\n console.log(line(` ${paddedName}${beforeStr} ${afterStr} ${changeStr}`));\n }\n console.log(line(chalk.dim(' ' + '\\u2500'.repeat(45))));\n const overallBefore = originalScore !== undefined ? originalScore.toFixed(2) : 'N/A ';\n const overallAfter = bestScore !== undefined ? bestScore.toFixed(2) : 'N/A ';\n const overallChange = originalScore !== undefined && bestScore !== undefined && originalScore > 0\n ? ((): string => {\n const pct = Math.round(((bestScore - originalScore) / originalScore) * 100);\n if (pct > 0) return chalk.green(`+${String(pct)}%`);\n if (pct < 0) return chalk.red(`${String(pct)}%`);\n return chalk.dim('0%');\n })()\n : '';\n console.log(line(` ${'Overall' + ' '.repeat(11)}${overallBefore} ${overallAfter} ${overallChange}`));\n console.log(separator);\n }\n\n // Stats\n const statusStr = job.status === 'completed' ? chalk.green('completed') : chalk.yellow(job.status);\n console.log(line(`Status: ${statusStr} | Iterations: ${String(iterations)}`));\n\n if (job.config?.model) {\n console.log(line(`Model: ${chalk.dim(job.config.model)}`));\n }\n\n // Score progression with ASCII bar visualization\n if (data.scoreProgression && data.scoreProgression.length > 0) {\n console.log(line(''));\n console.log(line(chalk.dim('Score Progression:')));\n const barWidth = 10;\n for (let i = 0; i < data.scoreProgression.length; i++) {\n const s = data.scoreProgression[i] ?? 0;\n const filled = Math.round(s * barWidth);\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\n console.log(line(chalk.dim(` #${String(i + 1)}: ${bar} ${s.toFixed(2)}`)));\n }\n }\n\n console.log(separator);\n console.log(line(`Dashboard: ${chalk.underline(optimizerLink(job.id))}`));\n console.log(bottomBorder);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Start Card\n// =============================================================================\n\nexport function renderOptimizationStartCard(data: OptimizationStartData): void {\n const { job } = data;\n const boxWidth = 60;\n const topBorder = `\\u250C${'─'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'─'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'─'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n const maxIter = job.config.maxIterations;\n const model = job.config.model ?? 'default';\n const target = job.config.targetScore ?? 0.8;\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('\\u26A1 Optimization Started')));\n console.log(separator);\n console.log(line(`Job ID: ${chalk.cyan(job.id)}`));\n console.log(line(`Prompt: ${chalk.dim(data.promptId)}`));\n console.log(line(`Dataset: ${chalk.dim(data.datasetId)}`));\n console.log(line(`Iterations: ${chalk.bold(String(maxIter))} | Target: ${chalk.bold(target.toFixed(2))}`));\n console.log(line(`Model: ${chalk.dim(model)}`));\n console.log(line(`Status: ${chalk.yellow(job.status)}`));\n console.log(separator);\n console.log(line(`\\uD83D\\uDD17 Monitor: ${chalk.underline(optimizerLink(job.id))}`));\n console.log(line(chalk.dim(`Next: mutagent prompts optimize status ${job.id}`)));\n console.log(bottomBorder);\n console.log(AI_DIRECTIVE);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Status Card\n// =============================================================================\n\nexport function renderOptimizationStatusCard(status: OptimizeStatus): void {\n const boxWidth = 60;\n const topBorder = `\\u250C${'─'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'─'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'─'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n // Progress bar\n const progress = status.progressPercent;\n const barWidth = 20;\n const filled = Math.round((progress / 100) * barWidth);\n const progressBar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\n\n // Status color\n const statusColor = status.status === 'completed' ? chalk.green\n : status.status === 'failed' ? chalk.red\n : status.status === 'cancelled' ? chalk.gray\n : status.status === 'running' ? chalk.cyan\n : chalk.yellow;\n\n // Score display\n const scoreStr = status.bestScore !== undefined\n ? formatScore(status.bestScore)\n : chalk.dim('pending');\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('\\uD83D\\uDCCA Optimization Status')));\n console.log(separator);\n console.log(line(`Job ID: ${chalk.cyan(status.jobId)}`));\n console.log(line(`Status: ${statusColor(status.status)}`));\n console.log(line(`Iteration: ${chalk.bold(`${String(status.currentIteration)}/${String(status.maxIterations)}`)}`));\n console.log(line(`Best Score: ${scoreStr}`));\n console.log(line(''));\n console.log(line(`Progress: [${progressBar}] ${String(progress)}%`));\n if (status.message) {\n console.log(line(`Message: ${chalk.dim(status.message)}`));\n }\n console.log(separator);\n console.log(line(`\\uD83D\\uDD17 Monitor: ${chalk.underline(optimizerLink(status.jobId))}`));\n if (status.status === 'completed') {\n console.log(line(chalk.dim(`Next: mutagent prompts optimize results ${status.jobId}`)));\n } else if (status.status === 'running' || status.status === 'queued') {\n console.log(line(chalk.dim(`Refresh: mutagent prompts optimize status ${status.jobId}`)));\n }\n console.log(bottomBorder);\n console.log(AI_DIRECTIVE);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Start/Status JSON Directives\n// =============================================================================\n\nexport function startDirective(job: OptimizationJob, promptId: string, datasetId?: string, evaluationId?: string): Record<string, unknown> {\n const title = `Optimization Started — Prompt ${promptId}`;\n const monitorUrl = optimizerLink(job.id);\n const apiUrl = `/api/prompts/${promptId}/optimizations/${job.id}`;\n const rows = [\n { label: 'Job ID', value: job.id },\n { label: 'Prompt', value: promptId },\n { label: 'Dataset', value: datasetId ?? 'N/A' },\n { label: 'Evaluation', value: evaluationId ?? 'N/A' },\n { label: 'Status', value: job.status },\n { label: 'Max Iterations', value: String(job.config.maxIterations) },\n { label: 'Target Score', value: String(job.config.targetScore ?? 0.8) },\n { label: 'Model', value: job.config.model ?? 'default' },\n ];\n const cardLinks = [\n { label: 'Monitor', url: monitorUrl },\n { label: 'API', url: apiUrl },\n ];\n const next = [`mutagent prompts optimize status ${job.id} --json`];\n return {\n display: 'status_card',\n template: 'optimization_started',\n title,\n fields: {\n jobId: job.id,\n promptId,\n datasetId: datasetId ?? null,\n evaluationId: evaluationId ?? null,\n status: job.status,\n maxIterations: job.config.maxIterations,\n targetScore: job.config.targetScore ?? 0.8,\n model: job.config.model ?? 'default',\n },\n links: { monitor: monitorUrl, api: apiUrl },\n next,\n instruction: 'STOP. Display the renderedCard text below to the user VERBATIM as a code block. Do NOT summarize, rephrase, or omit any lines. After displaying, follow the suggested next steps.',\n renderedCard: renderPlainCard({ title, icon: '⚡', rows, links: cardLinks, next }),\n };\n}\n\nexport function statusDirective(status: OptimizeStatus): Record<string, unknown> {\n const next = status.status === 'completed'\n ? [`mutagent prompts optimize results ${status.jobId} --json`]\n : status.status === 'running' || status.status === 'queued'\n ? [`mutagent prompts optimize status ${status.jobId} --json`]\n : [];\n\n // ETA calculation based on elapsed time per iteration\n let eta = 'Calculating...';\n const startedAt = (status as unknown as Record<string, unknown>).startedAt as string | undefined;\n if (status.currentIteration > 1 && startedAt) {\n const elapsed = Date.now() - new Date(startedAt).getTime();\n const perIteration = elapsed / status.currentIteration;\n const remaining = (status.maxIterations - status.currentIteration) * perIteration;\n const minutes = Math.ceil(remaining / 60000);\n eta = `~${String(minutes)} min remaining`;\n }\n\n const icon = status.status === 'completed' ? '✓' : status.status === 'failed' ? '✗' : '◉';\n const title = `Optimization ${status.status} — ${status.jobId}`;\n const rows = [\n { label: 'Job ID', value: status.jobId },\n { label: 'Status', value: status.status },\n { label: 'Iteration', value: `${String(status.currentIteration)}/${String(status.maxIterations)}` },\n { label: 'Best Score', value: status.bestScore !== undefined ? String(status.bestScore) : 'pending' },\n { label: 'Progress', value: `${String(status.progressPercent)}%` },\n { label: 'ETA', value: eta },\n ...(status.message ? [{ label: 'Message', value: status.message }] : []),\n ];\n const monitorUrl = optimizerLink(status.jobId);\n const cardLinks = [{ label: 'Monitor', url: monitorUrl }];\n\n return {\n display: 'status_card',\n template: 'optimization_progress',\n title,\n fields: {\n jobId: status.jobId,\n status: status.status,\n iteration: `${String(status.currentIteration)}/${String(status.maxIterations)}`,\n bestScore: status.bestScore,\n progress: `${String(status.progressPercent)}%`,\n eta,\n message: status.message,\n },\n links: { monitor: monitorUrl },\n next,\n instruction: 'STOP. Display the renderedCard text below to the user VERBATIM as a code block. Do NOT summarize, rephrase, or omit any lines. After displaying, follow the suggested next steps.',\n renderedCard: renderPlainCard({ title, icon, rows, links: cardLinks, next }),\n };\n}\n\n// =============================================================================\n// Apply/Reject Prompt\n// =============================================================================\n\nexport async function promptScorecardAction(): Promise<ScorecardAction> {\n const inquirer = (await import('inquirer')).default;\n\n const { action } = await inquirer.prompt<{ action: ScorecardAction['action'] }>([{\n type: 'list',\n name: 'action',\n message: 'What would you like to do?',\n choices: [\n { name: chalk.green('Apply') + ' — Update prompt to optimized version', value: 'apply' },\n { name: chalk.red('Reject') + ' — Keep original prompt', value: 'reject' },\n { name: chalk.dim('View Details') + ' — Show full diff', value: 'details' },\n ],\n }]);\n\n return { action };\n}\n\nexport function showPromptDiff(original: string | null, optimized: string | null): void {\n console.log('');\n console.log(chalk.bold(' Prompt Diff:'));\n console.log('');\n console.log(chalk.red(' - ' + (original ?? '(empty)')));\n console.log(chalk.green(' + ' + (optimized ?? '(empty)')));\n console.log('');\n}\n",
|
|
21
|
+
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n promptsDashboardLink, evaluationLinks, evaluationLink,\n formatCreationHints,\n evaluationCreatedDirective, evaluationDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\nimport { buildGuidedWorkflow, type GuidedWorkflowResult } from './guided-workflow.js';\n\ninterface EvaluationCreateOptions {\n data?: string;\n name?: string;\n description?: string;\n guided?: boolean;\n}\n\nexport function registerEvaluationCommands(prompts: Command): void {\n const evaluation = new Command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n `)\n .action(() => {\n evaluation.help();\n });\n prompts.addCommand(evaluation);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts evaluation get` for full details.\n const withLinks = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updatedAt: e.updatedAt,\n _links: evaluationLinks(promptId, e.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updated: e.updatedAt ? new Date(String(e.updatedAt)).toLocaleDateString() : 'N/A',\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation details\n evaluation\n .command('get')\n .description('Get evaluation details including criteria')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id> --json\n `)\n .action(async (evaluationId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evalObj = await client.getEvaluation(evaluationId);\n\n if (isJson) {\n output.output({\n ...evalObj,\n _links: evaluationLinks(evalObj.promptGroupId, evalObj.id),\n });\n } else {\n output.success(`Evaluation: ${evalObj.name} (ID: ${String(evalObj.id)})`);\n if (evalObj.description) {\n console.log(` Description: ${evalObj.description}`);\n }\n console.log(` Created: ${evalObj.createdAt ? new Date(String(evalObj.createdAt)).toLocaleDateString() : 'N/A'}`);\n console.log('');\n\n // Display criteria\n const config = evalObj.evalConfig as { criteria?: { name: string; description: string; evaluationParameter: string }[] } | null;\n const criteria = config?.criteria;\n if (criteria && Array.isArray(criteria) && criteria.length > 0) {\n console.log(' Criteria:');\n for (const c of criteria) {\n console.log(` ${chalk.cyan(c.name)}`);\n if (c.description) {\n console.log(` Description: ${c.description}`);\n }\n if (c.evaluationParameter) {\n console.log(` Parameter: ${c.evaluationParameter}`);\n }\n console.log('');\n }\n } else {\n console.log(' No criteria defined.');\n }\n\n // Display LLM config if present\n const llmConfig = evalObj.llmConfig as Record<string, unknown> | null;\n if (llmConfig && Object.keys(llmConfig).length > 0) {\n console.log(' LLM Config:');\n for (const [key, value] of Object.entries(llmConfig)) {\n console.log(` ${key}: ${String(value)}`);\n }\n console.log('');\n }\n\n output.info(`View in dashboard: ${evaluationLink(evalObj.promptGroupId, evalObj.id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Evaluation as JSON string (for pre-validated criteria only)')\n .option('-n, --name <name>', 'Evaluation name (required unless --guided)')\n .option('--description <text>', 'Evaluation description')\n .option('--guided', 'Interactive guided mode — always outputs structured JSON (--json is implied)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided ${chalk.dim('# recommended: shows workflow guide + schema fields')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided --json ${chalk.dim('# structured workflow for AI agents')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy\" -d '{\"evalConfig\":{\"criteria\":[...]}}' ${chalk.dim('# power user')}\n\nGuided Workflow (recommended):\n --guided outputs a workflow guide that:\n 1. Fetches your prompt's inputSchema + outputSchema fields\n 2. Shows available fields for evaluation criteria\n 3. Provides a criteria template and example command\n 4. For AI agents: includes a _directive with workflow instructions\n\n Works in all modes (TTY, non-TTY, --json).\n\nAI Agent (MANDATORY):\n 1. Run: mutagent prompts evaluation create --help\n 2. Run: mutagent prompts evaluation create <id> --guided --json\n 3. Parse askUserQuestions from the JSON output\n 4. Use AskUserQuestion to collect DETAILED rubrics from the user\n 5. NEVER auto-generate criteria. NEVER use vague rubrics.\n 6. Construct --data JSON from user answers, then:\n mutagent prompts evaluation create <id> --name \"<name>\" -d '<json>' --json\n\nExpected Criteria Shape (--data):\n ${chalk.dim('{\"evalConfig\":{\"criteria\":[{\"name\":\"<name>\",\"description\":\"<scoring rubric>\",\"evaluationParameter\":\"<schema field>\"}]}}')}\n evaluationParameter must target an outputSchema OR inputSchema field.\n\n${chalk.red('Required: --name (unless --guided). Criteria must include evaluationParameter.')}\n${chalk.dim('CLI flags (--name, --description) override --data fields.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (promptId: string, options: EvaluationCreateOptions) => {\n // --guided always implies --json — agents must never use --guided without --json\n let isJson = getJsonFlag(prompts);\n if (options.guided) {\n isJson = true;\n }\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Render the guided workflow (shared between --guided and auto-trigger)\n const renderGuidedWorkflow = (wf: GuidedWorkflowResult): void => {\n const { inputFields, outputFields, allFields } = wf._meta;\n if (isJson) {\n const { _meta: _discarded, ...cleanWorkflow } = wf;\n void _discarded;\n output.output(cleanWorkflow);\n echoDirectiveToStderr(wf._directive);\n } else {\n output.success(`Guided Evaluation Workflow for prompt: ${wf.prompt.name} (ID: ${promptId})`);\n console.log('');\n if (outputFields.length > 0) {\n console.log(` Output Schema Fields: ${outputFields.join(', ')}`);\n }\n if (inputFields.length > 0) {\n console.log(` Input Schema Fields: ${inputFields.join(', ')}`);\n }\n console.log('');\n console.log(' For each field, define what correct output looks like:');\n for (const { field, source } of allFields) {\n console.log(` ${chalk.cyan(field)} (${source})`);\n console.log(` → What makes a correct vs incorrect \"${field}\"?`);\n }\n console.log('');\n console.log(' Then create the evaluation:');\n console.log(` mutagent prompts evaluation create ${promptId} --name \"My Eval\" \\\\`);\n console.log(` -d '{\"evalConfig\":{\"criteria\":[{\"name\":\"accuracy\",\"description\":\"Correct if output matches expected structure\",\"evaluationParameter\":\"${outputFields[0] ?? '<field>'}\"}]}}'`);\n console.log('');\n }\n };\n\n // Guided mode: dump structured workflow/template (non-interactive)\n if (options.guided) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n\n // No criteria source — auto-return guided workflow in --json/TTY mode\n if (!options.data) {\n if (isJson || process.stdout.isTTY) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No criteria source provided',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n\n // Non-guided: --name is required\n if (!options.name) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Evaluation name is required',\n 'Run: mutagent prompts evaluation create --help\\n' +\n '[Agent: Ask the user for an evaluation name via AskUserQuestion, then pass --name]\\n' +\n 'Use --name <name>, e.g., mutagent prompts evaluation create ' + promptId + ' --name \"My Eval\" --data \\'...\\''\n );\n }\n\n const evalData: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Parse inline JSON\n try {\n const parsed = JSON.parse(options.data) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Provide a valid JSON object, e.g., \\'{\"evalConfig\":{\"criteria\":[...]},\"llmConfig\":{\"model\":\"gpt-4\"}}\\''\n );\n }\n\n // CLI flags override --data fields\n if (options.name) evalData.name = options.name;\n if (options.description) evalData.description = options.description;\n\n // Validate evaluation criteria exist and are well-formed\n const criteria = evalData.evalConfig?.criteria;\n if (!criteria || !Array.isArray(criteria) || criteria.length === 0) {\n // Always throw — suggest --guided for workflow\n let fieldsHint = '';\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n const fields = Object.keys(props as Record<string, unknown>);\n if (fields.length > 0) {\n fieldsHint = `\\nDetected output fields from prompt schema: ${fields.join(', ')}\\n`;\n }\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'Evaluation criteria are required. Provide criteria via --data.',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json\\n' +\n fieldsHint +\n '\\nExample JSON (--data flag):\\n' +\n ' --data \\'{\"evalConfig\":{\"criteria\":[{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"}]}}\\'\\n'\n );\n }\n for (const c of criteria as Record<string, unknown>[]) {\n // Accept both new format (description/evaluationParameter) and legacy (scoringRubric/targetField)\n // Normalize legacy fields to new format for storage FIRST\n if (c.scoringRubric && !c.description) {\n c.description = c.scoringRubric;\n delete c.scoringRubric;\n }\n if (c.targetField && !c.evaluationParameter) {\n const tf = c.targetField as string;\n c.evaluationParameter = tf.startsWith('output.') ? tf.slice('output.'.length)\n : tf.startsWith('input.') ? tf.slice('input.'.length) : tf;\n delete c.targetField;\n }\n\n const hasDescription = c.description;\n const hasEvalParam = c.evaluationParameter;\n if (!c.name || !hasDescription || !hasEvalParam) {\n const cName = typeof c.name === 'string' ? c.name : 'unnamed';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Criterion \"${cName}\" is missing required fields. Need: name, description, evaluationParameter.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Detect duplicate evaluationParameter values\n const seenParams = new Set<string>();\n const duplicateParams: string[] = [];\n for (const c of criteria as { evaluationParameter?: string }[]) {\n const param = c.evaluationParameter;\n if (param) {\n if (seenParams.has(param)) {\n duplicateParams.push(param);\n }\n seenParams.add(param);\n }\n }\n if (duplicateParams.length > 0) {\n // Best-effort: fetch prompt outputSchema to show available fields\n let availableFields: string[] = [];\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n availableFields = Object.keys(props as Record<string, unknown>);\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n const uniqueDupes = [...new Set(duplicateParams)];\n const fieldsHint = availableFields.length > 0\n ? `\\nAvailable output fields: ${availableFields.join(', ')}`\n : '';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Duplicate evaluationParameter: \"${uniqueDupes.join('\", \"')}\". Each criterion must target a unique output field.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Each criterion scores a different output field. Fix by changing the evaluationParameter to a unique field.' +\n fieldsHint +\n '\\n\\nExample:\\n --data \\'{\"evalConfig\":{\"criteria\":[' +\n '{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"},' +\n '{\"name\":\"Confidence\",\"description\":\"...\",\"evaluationParameter\":\"confidence\"}' +\n ']}}\\''\n );\n }\n\n // Validate criteria cover ALL schema fields (input + output)\n const schemaClient = getSDKClient();\n const prompt = await schemaClient.getPrompt(promptId);\n const requiredFields: { field: string; source: string }[] = [];\n\n if (prompt.inputSchema && typeof prompt.inputSchema === 'object') {\n const props = (prompt.inputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'inputSchema' });\n }\n }\n }\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'outputSchema' });\n }\n }\n }\n\n if (requiredFields.length > 0) {\n const coveredParams = new Set(\n (criteria as { evaluationParameter?: string }[]).map(c => c.evaluationParameter)\n );\n const missing = requiredFields.filter(f => !coveredParams.has(f.field));\n if (missing.length > 0) {\n const missingList = missing.map(m => `${m.field} (${m.source})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Evaluation criteria are INCOMPLETE. Missing fields: ${missingList}`,\n 'Each input and output schema field MUST have a corresponding criterion.\\n' +\n `Total required: ${requiredFields.length}, provided: ${coveredParams.size}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Validate evaluationParameter values match actual schema fields\n if (requiredFields.length > 0) {\n const validFieldNames = new Set(requiredFields.map(f => f.field));\n const invalidParams = (criteria as { evaluationParameter?: string; name?: string }[])\n .filter(c => c.evaluationParameter && !validFieldNames.has(c.evaluationParameter));\n if (invalidParams.length > 0) {\n const invalidList = invalidParams.map(c => `\"${c.evaluationParameter}\" (criterion: ${c.name})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid evaluationParameter(s): ${invalidList}. Must match a schema field.`,\n `Available fields: ${requiredFields.map(f => f.field).join(', ')}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n const client = getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n const criteriaLen = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n let rsState: ResourceState | undefined;\n try {\n const datasets = await client.listDatasets(promptId);\n rsState = { datasets: datasets.length };\n } catch { /* non-critical */ }\n const directive = evaluationCreatedDirective(promptId, evalResult.id, evalResult.name, criteriaLen, rsState);\n output.output({\n ...evalResult,\n _links: evaluationLinks(promptId, evalResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created evaluation: ${evalResult.name} (id: ${String(evalResult.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Evaluation',\n id: evalResult.id,\n name: evalResult.name,\n dashboardUrl: evaluationLink(promptId, evalResult.id),\n apiPath: `/api/prompts/${promptId}/evaluations/${String(evalResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n const criteriaCount = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n updateMutationContext(ctx => {\n ctx.addEvaluation(evalResult.name, criteriaCount, String(evalResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete evaluation\n evaluation\n .command('delete')\n .description('Delete an evaluation')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force --json\n `)\n .action(async (evaluationId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting evaluation ${evaluationId} requires confirmation`,\n `Run: mutagent prompts evaluation delete --help\\n` +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts evaluation delete ${evaluationId} --force`\n );\n }\n\n const client = getSDKClient();\n try {\n await client.deleteEvaluation(evaluationId);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} deleted successfully`);\n output.info(`View evaluations: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
22
|
+
"import { getSDKClient } from '../../lib/sdk-client.js';\n\ninterface FieldInfo {\n field: string;\n source: 'inputSchema' | 'outputSchema';\n fieldSchema?: { type?: string; description?: string };\n}\n\nexport interface GuidedWorkflowResult {\n prompt: { id: string; name: string };\n inputSchema: { fields: string[] };\n outputSchema: { fields: string[] };\n workflow: {\n description: string;\n steps: { step: number; action: string; detail: string }[];\n criteriaTemplate: Record<string, unknown>;\n exampleCommand: string;\n };\n askUserQuestions: {\n question: string;\n header: string;\n options: { label: string; description: string }[];\n multiSelect: boolean;\n context: Record<string, unknown>;\n }[];\n _directive: {\n display: string;\n instruction: string;\n aiAgentDecisionTree: Record<string, string>;\n };\n _meta: { inputFields: string[]; outputFields: string[]; allFields: FieldInfo[] };\n}\n\n/**\n * Build a guided workflow object for a prompt's evaluation.\n * Fetches prompt schemas and optional dataset examples to construct\n * a structured workflow that agents use to collect rubrics from users.\n */\nexport async function buildGuidedWorkflow(promptId: string): Promise<GuidedWorkflowResult> {\n const client = getSDKClient();\n const prompt = await client.getPrompt(promptId);\n\n const truncate = (s: string, max: number): string => s.length > max ? s.slice(0, max) + '...' : s;\n\n const outputProperties = prompt.outputSchema && typeof prompt.outputSchema === 'object'\n ? ((prompt.outputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n const inputProperties = prompt.inputSchema && typeof prompt.inputSchema === 'object'\n ? ((prompt.inputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n\n const inputFields = Object.keys(inputProperties);\n const outputFields = Object.keys(outputProperties);\n\n const allFields: FieldInfo[] = [\n ...inputFields.map(f => ({ field: f, source: 'inputSchema' as const, fieldSchema: inputProperties[f] })),\n ...outputFields.map(f => ({ field: f, source: 'outputSchema' as const, fieldSchema: outputProperties[f] })),\n ];\n\n // Fetch a dataset example if available (non-critical)\n let datasetExample: Record<string, unknown> | null = null;\n try {\n const datasets = await client.listDatasets(promptId);\n if (datasets.length > 0) {\n try {\n const dsId = datasets[0]?.id;\n const items = dsId != null ? await client.listDatasetItems(String(dsId)) : [];\n if (items.length > 0) {\n const firstItem = items[0];\n datasetExample = ((firstItem?.expectedOutput ?? firstItem?.input) ?? null) as Record<string, unknown> | null;\n }\n } catch {\n // listDatasetItems may not exist yet — non-critical\n }\n }\n } catch { /* non-critical */ }\n\n const askUserQuestions = allFields.map(({ field, source, fieldSchema }) => {\n const isInput = source === 'inputSchema';\n const question = isInput\n ? `Define the Minimum Viable Context for \"${field}\". What data MUST be present in this input for the prompt to produce a correct output? Describe what constitutes complete vs incomplete input, and WHY this field matters.`\n : `Define what correct \"${field}\" looks like. What structure, content, or qualities make it good vs bad? Give concrete examples of good and bad outputs.`;\n const hint = isInput\n ? `Input fields define what data the prompt NEEDS to work correctly. Without defining minimum viable context, the optimizer cannot detect whether failures come from bad input or bad prompt logic.`\n : null;\n const header = isInput ? `${field} [INPUT]` : `${field} [OUTPUT]`;\n const defineDesc = isInput\n ? `Describe what data MUST be present in \"${field}\" and WHY the prompt needs it. Focus on completeness and minimum viable context.`\n : `Describe what a correct vs incorrect \"${field}\" looks like. Focus on structure, content quality, and concrete examples — not numeric scores.`;\n\n return {\n question,\n header,\n ...(hint != null ? { hint } : {}),\n options: [\n {\n label: 'Define rubric',\n description: defineDesc,\n },\n {\n label: 'See suggestion',\n description: `Get a suggested rubric based on the prompt and schema definition for \"${field}\". You can refine it.`,\n },\n ],\n multiSelect: false,\n context: {\n fieldType: fieldSchema?.type ?? 'unknown',\n fieldDescription: fieldSchema?.description ?? null,\n fieldSource: source,\n promptExcerpt: truncate(prompt.humanPrompt ?? prompt.systemPrompt ?? prompt.rawPrompt ?? '', 200),\n exampleValue: datasetExample?.[field] ?? null,\n },\n };\n });\n\n return {\n prompt: { id: promptId, name: prompt.name },\n inputSchema: { fields: inputFields },\n outputSchema: { fields: outputFields },\n workflow: {\n description: 'Follow these steps to create an evaluation for this prompt:',\n steps: [\n { step: 1, action: 'Review prompt schemas and context', detail: 'Understand what the prompt does and what each field means.' },\n { step: 2, action: 'Define correctness criteria for EVERY field', detail: `For EACH of the ${String(allFields.length)} fields in askUserQuestions, use AskUserQuestion to collect a rubric. INPUT fields (${String(inputFields.length)}): collect minimum viable context definitions — what data MUST exist. OUTPUT fields (${String(outputFields.length)}): collect correctness criteria — what correct vs incorrect looks like. Do NOT skip any field. Use the context hints to suggest rubrics when asked.` },\n { step: 3, action: 'Build criteria JSON', detail: 'Map each rubric to: { name: field, description: rubric, evaluationParameter: field }' },\n { step: 4, action: 'Ask for evaluation name', detail: 'Ask user what to name this evaluation' },\n { step: 5, action: 'Create the evaluation', detail: `mutagent prompts evaluation create ${promptId} --name \"<name>\" -d '<json>' --json` },\n ],\n criteriaTemplate: {\n evalConfig: {\n criteria: [{\n name: '<criterion_name>',\n description: '<correctness rubric - describe what correct vs incorrect looks like>',\n evaluationParameter: `<one of: ${allFields.length > 0 ? allFields.map(f => f.field).join(', ') : 'no fields detected - check prompt schemas'}>`,\n }],\n },\n },\n exampleCommand: `mutagent prompts evaluation create ${promptId} --name \"My Evaluation\" -d '${JSON.stringify({\n evalConfig: {\n criteria: outputFields.slice(0, 1).map(f => ({\n name: `${f} accuracy`,\n description: `Correct if ${f} matches expected structure and content; incorrect if missing, malformed, or off-topic`,\n evaluationParameter: f,\n })),\n },\n })}'`,\n },\n askUserQuestions,\n _directive: {\n display: 'workflow_guide',\n instruction:\n 'MANDATORY ORDERS — READ CAREFULLY:\\n' +\n `1. You MUST ask the user about EVERY SINGLE field listed in askUserQuestions. There are ${String(allFields.length)} fields total.\\n` +\n '2. Do NOT skip ANY field. Do NOT decide that a field \"doesn\\'t need\" a definition.\\n' +\n `3. INPUT fields (${String(inputFields.length)}): These define MINIMUM VIABLE CONTEXT — the data that MUST exist in the input for the prompt to work. Ask: \"What data MUST be present in this field and WHY does the prompt need it?\"\\n` +\n ' WHY THIS MATTERS: Without minimum viable context definitions, the optimizer cannot distinguish between failures caused by incomplete input vs failures caused by bad prompt logic.\\n' +\n `4. OUTPUT fields (${String(outputFields.length)}): These define correctness criteria. Ask: \"What does correct vs incorrect for this field look like?\"\\n` +\n `5. After collecting ALL ${String(allFields.length)} definitions, construct the --data JSON with criteria for EVERY field.\\n` +\n '6. VIOLATION: Skipping ANY field or telling the user a field doesn\\'t need a definition is a protocol violation.',\n aiAgentDecisionTree: {\n step1: 'Check if criteria already exist in the user\\'s code. If criteria match expected shape (name + description + evaluationParameter targeting schema fields), use --data directly.',\n step2: 'If criteria are missing or malformed, use the askUserQuestions payloads to collect them via AskUserQuestion.',\n step3: 'After collecting all criteria, construct the --data JSON and run: mutagent prompts evaluation create <prompt-id> --name \"<name>\" -d \\'<json>\\'',\n },\n },\n _meta: { inputFields, outputFields, allFields },\n };\n}\n",
|
|
23
|
+
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport { optimizerLink, promptLink, echoDirectiveToStderr } from '../../lib/ui-links.js';\nimport {\n renderScorecard, showPromptDiff,\n renderOptimizationStartCard, renderOptimizationStatusCard,\n startDirective, statusDirective,\n} from '../../lib/scorecard.js';\nimport type { Prompt } from '../../types/index.js';\nimport {\n updateMutationContext, parseValidationErrors, isSchemaEmpty,\n buildResultsScorecardText, PREREQUISITES_TEXT,\n} from './index.js';\n\ninterface OptimizeStartOptions {\n dataset: string;\n evaluation: string;\n maxIterations?: string;\n targetScore?: string;\n patience?: string;\n model?: string;\n evalModel?: string;\n}\n\nexport function registerOptimizeCommands(prompts: Command): void {\n const optimize = new Command('optimize')\n .description('Manage prompt optimization jobs')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n\nWorkflow: start -> status (poll) -> results\n `)\n .action(() => {\n optimize.help();\n });\n prompts.addCommand(optimize);\n\n // Start optimization\n optimize\n .command('start')\n .description('Start prompt optimization')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-d, --dataset <id>', 'Dataset ID for optimization (from: mutagent prompts dataset list <prompt-id>)')\n .requiredOption('-e, --evaluation <id>', 'Evaluation ID for scoring (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--max-iterations <n>', 'Max optimization iterations (default: 1)')\n .option('--target-score <n>', 'Target accuracy 0-1 (default: 0.8)')\n .option('--patience <n>', 'Iterations without improvement before stopping')\n .option('--model <model-id>', 'Target LLM model (e.g., \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model-id>', 'Evaluation model (defaults to target model)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --max-iterations 5\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --target-score 0.95 --model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --json\n${chalk.yellow('Pre-Optimization Checklist (auto-validated by preflight):')}\n □ inputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ outputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ Evaluation criteria ${chalk.dim('(warns if no evaluationParameter set)')}\n □ Dataset items ${chalk.dim('(warns if expectedOutput missing)')}\n □ Criteria ↔ Schema ${chalk.dim('(warns if criteria reference unknown fields)')}\n\n${PREREQUISITES_TEXT}\n\n${chalk.dim('Monitor progress with: mutagent prompts optimize status <job-id>')}\n\n${chalk.yellow(`\\u26A0 COST WARNING \\u2014 AI Agent:\n Default is 1 iteration. Do NOT increase --max-iterations unless the user\n explicitly requests it. Each iteration incurs LLM costs. Starting with\n max-iterations > 1 without user consent is a protocol violation.`)}\n\n${chalk.yellow('AI Agent: ALWAYS append --json to this command.')}\n `)\n .action(async (promptId: string, options: OptimizeStartOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // [AI AGENT NOTICE] TEMPORARILY REMOVED: `await checkProviderConfigured();` was here.\n // See comment block above PREREQUISITES_TEXT for full context and re-add instructions.\n const client = getSDKClient();\n\n // Pre-flight validation — runs in ALL modes (JSON + interactive)\n if (!isJson) {\n output.info('Running pre-flight checks...');\n }\n\n const prompt = await client.getPrompt(promptId);\n\n // Collect all preflight check results\n const preflightChecks: Record<string, { passed: boolean; error?: string; warning?: string }> = {};\n\n // Check 1: Prompt has outputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.outputSchema)) {\n preflightChecks.outputSchema = {\n passed: false,\n error: 'Missing outputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.outputSchema = { passed: true };\n }\n\n // Check 2: Prompt has inputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.inputSchema)) {\n preflightChecks.inputSchema = {\n passed: false,\n error: 'Missing inputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.inputSchema = { passed: true };\n }\n\n // Check 3: Validate the specified evaluation has proper criteria\n let evaluation: { evalConfig?: { criteria?: { evaluationParameter?: string; targetField?: string; name?: string }[] } } | undefined;\n try {\n const evalObj = await client.getEvaluation(options.evaluation);\n evaluation = evalObj;\n const evalConfig = evalObj.evalConfig as { criteria?: { evaluationParameter?: string; targetField?: string }[] } | undefined;\n const criteria = evalConfig?.criteria;\n if (!criteria || criteria.length === 0) {\n preflightChecks.evaluation = {\n passed: true,\n warning: `Evaluation ${options.evaluation} has no criteria defined. ` +\n `Re-create: mutagent prompts evaluation create ${promptId} --guided`,\n };\n } else {\n const hasCriteriaWithParam = criteria.some((c) => c.evaluationParameter ?? c.targetField);\n if (!hasCriteriaWithParam) {\n preflightChecks.evaluation = {\n passed: true,\n warning: `Evaluation ${options.evaluation} has criteria but none have evaluationParameter set. ` +\n `Re-create: mutagent prompts evaluation create ${promptId} --guided`,\n };\n } else {\n preflightChecks.evaluation = { passed: true };\n if (!isJson) {\n output.info(`Using evaluation ${options.evaluation} with ${String(criteria.length)} criteria.`);\n }\n }\n }\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n preflightChecks.evaluation = {\n passed: true,\n warning: `Could not validate evaluation ${options.evaluation}. Proceeding anyway.`,\n };\n }\n\n // Check 4: Validate dataset items have expectedOutput\n try {\n const datasetItems = await client.listDatasetItems(options.dataset);\n if (datasetItems.length === 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Dataset ${options.dataset} has no items. Optimization requires test data.`,\n };\n } else {\n const missingExpected = datasetItems.filter(item => !item.expectedOutput);\n if (missingExpected.length > 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `${String(missingExpected.length)} of ${String(datasetItems.length)} dataset items missing expectedOutput. ` +\n 'Optimization works best when all items have expected outputs.',\n };\n } else {\n preflightChecks.datasetItems = { passed: true };\n }\n }\n } catch {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Could not validate dataset items for ${options.dataset}. Proceeding anyway.`,\n };\n }\n\n // Check 5: Validate evaluation criteria match schema fields\n if (evaluation && preflightChecks.inputSchema.passed && preflightChecks.outputSchema.passed) {\n const inputProps = (prompt.inputSchema as Record<string, unknown> | null)?.properties;\n const outputProps = (prompt.outputSchema as Record<string, unknown> | null)?.properties;\n const schemaFields = [\n ...Object.keys((inputProps as Record<string, unknown> | undefined) ?? {}),\n ...Object.keys((outputProps as Record<string, unknown> | undefined) ?? {}),\n ];\n const evalCfg = evaluation.evalConfig as { criteria?: { evaluationParameter?: string; name?: string }[] } | undefined;\n const evalCriteria = evalCfg?.criteria ?? [];\n const unmatchedCriteria = evalCriteria.filter(\n (c) => c.evaluationParameter && !schemaFields.includes(c.evaluationParameter)\n );\n if (unmatchedCriteria.length > 0) {\n const names = unmatchedCriteria.map(c => c.evaluationParameter ?? c.name).join(', ');\n preflightChecks.criteriaMatch = {\n passed: true,\n warning: `Evaluation criteria reference fields not in schema: ${names}. ` +\n `Available schema fields: ${schemaFields.join(', ') || '(none)'}`,\n };\n } else {\n preflightChecks.criteriaMatch = { passed: true };\n }\n }\n\n // Determine if any hard failures exist\n const hardFailures = Object.entries(preflightChecks).filter(\n ([, check]) => !check.passed\n );\n\n if (hardFailures.length > 0) {\n if (isJson) {\n // Structured preflight error with all results\n const suggestedActions: string[] = [];\n if (!preflightChecks.inputSchema.passed) {\n suggestedActions.push(\n 'Update the prompt with inputSchema derived from template variables.\\n' +\n `Run: mutagent prompts get ${promptId} --json\\n` +\n `Run: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n );\n }\n if (!preflightChecks.outputSchema.passed) {\n suggestedActions.push(\n `Update your prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n );\n }\n output.output({\n success: false,\n error: 'Preflight validation failed',\n code: 'PREFLIGHT_FAILED',\n suggestedAction: suggestedActions.join('\\n'),\n preflightChecks,\n });\n return;\n }\n\n // Interactive mode: print each failure\n for (const [name, check] of hardFailures) {\n console.error(chalk.red(`Error: ${name} — ${check.error ?? 'Failed'}`));\n }\n // Print suggestions\n if (!preflightChecks.outputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n ));\n }\n if (!preflightChecks.inputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n ));\n }\n process.exitCode = 1;\n return;\n }\n\n // Print warnings (non-JSON mode only)\n if (!isJson) {\n for (const [, check] of Object.entries(preflightChecks)) {\n if (check.warning) {\n output.warn(check.warning);\n }\n }\n }\n\n const job = await client.startOptimization(promptId, options.dataset, options.evaluation, {\n maxIterations: options.maxIterations ? parseInt(options.maxIterations, 10) : 1,\n targetScore: options.targetScore ? parseFloat(options.targetScore) : undefined,\n patience: options.patience ? parseInt(options.patience, 10) : undefined,\n model: options.model,\n evalModel: options.evalModel,\n });\n\n if (isJson) {\n const directive = startDirective(job, promptId, options.dataset, options.evaluation);\n output.output({\n ...job,\n _links: {\n dashboard: optimizerLink(job.id),\n api: `/api/prompts/${promptId}/optimizations/${job.id}`,\n },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStartCard({ job, promptId, datasetId: options.dataset });\n }\n } catch (error) {\n // Enhanced error handling: parse validation errors for actionable messages\n if (error instanceof ApiError) {\n const messages = parseValidationErrors(error);\n const errorText = messages.join(' ');\n\n // Pattern-match known pipeline errors for actionable guidance\n const suggestions: string[] = [];\n if (errorText.includes('Output Schema is not present') || errorText.includes('outputSchema')) {\n suggestions.push(`Update prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{...}}}'`);\n }\n if (errorText.includes('Outputs are not valid') || errorText.includes('Parameters Mismatch')) {\n suggestions.push('Dataset items may not match the prompt schema. Check expectedOutput fields in your dataset.');\n }\n if (errorText.includes('Inputs are not valid')) {\n suggestions.push(\"Dataset item inputs don't match the prompt's inputSchema. Verify field names and types.\");\n }\n if (errorText.includes('has no items') || (errorText.includes('Dataset') && errorText.includes('not found'))) {\n suggestions.push(`Upload data: mutagent prompts dataset add ${promptId} -d '[...]' --name \"my-dataset\"`);\n }\n if (errorText.includes('Evaluations are not present')) {\n suggestions.push(`Create evaluation: mutagent prompts evaluation create ${promptId} --guided`);\n }\n if (errorText.includes('Trial') && errorText.includes('limit')) {\n suggestions.push('Trial optimization limit reached. Contact support to upgrade.');\n }\n\n if (!isJson) {\n console.error(chalk.red('\\nOptimization failed:'));\n for (const msg of messages) {\n console.error(chalk.red(` ${msg}`));\n }\n if (suggestions.length > 0) {\n console.error(chalk.yellow('\\nSuggested fixes:'));\n for (const s of suggestions) {\n console.error(chalk.yellow(` → ${s}`));\n }\n }\n console.error('');\n console.error(PREREQUISITES_TEXT);\n }\n }\n handleError(error, isJson);\n }\n });\n\n // Optimization status\n optimize\n .command('status')\n .description('Check optimization status')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const status = await client.getOptimizationStatus(jobId);\n\n if (isJson) {\n const directive = statusDirective(status);\n output.output({\n ...status,\n _links: { optimizer: optimizerLink(jobId) },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStatusCard(status);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Optimization results\n optimize\n .command('results')\n .description('Get optimization results')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .option('--apply', 'Apply the optimized prompt as new version')\n .option('--diff', 'Show the prompt diff (before/after)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> ${chalk.dim('# view scorecard')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --diff ${chalk.dim('# view prompt diff')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --apply ${chalk.dim('# apply optimized prompt')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --json ${chalk.dim('# structured output')}\n\nAfter viewing results:\n --apply Apply the optimized prompt (replaces current version)\n --diff Show detailed before/after diff\n ${chalk.dim('No flag = view scorecard only.')}\n\n ${chalk.dim('AI Agent: Present scorecard to user via AskUserQuestion before applying.')}\n `)\n .action(async (jobId: string, options: { apply?: boolean; diff?: boolean }) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getOptimizationResults(jobId);\n const resultData = results as Record<string, unknown>;\n\n if (isJson) {\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n const scorecardText = buildResultsScorecardText(resultData);\n const directive = {\n display: 'scorecard',\n instruction: 'Present the before/after scorecard to the user. Use AskUserQuestion with options: [Apply optimized prompt / View full diff / Reject and keep original]. Do NOT auto-apply.',\n renderedCard: scorecardText,\n next: isCompleted ? [\n `mutagent prompts optimize results ${jobId} --apply --json`,\n `mutagent prompts optimize results ${jobId} --diff --json`,\n ] : [],\n };\n output.output({ ...resultData, _links: { optimizer: optimizerLink(jobId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n // Render scorecard\n renderScorecard(resultData as unknown as Parameters<typeof renderScorecard>[0]);\n\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n\n // Show diff if requested\n if (options.diff) {\n const original = (resultData.originalPrompt as Partial<Prompt> | undefined);\n const optimized = resultData.prompt as Partial<Prompt> | undefined;\n showPromptDiff(\n original?.systemPrompt ?? original?.rawPrompt ?? null,\n optimized?.systemPrompt ?? optimized?.rawPrompt ?? null,\n );\n }\n\n // Apply optimized prompt if requested\n if (options.apply && isCompleted) {\n const optimizedPrompt = resultData.prompt as Partial<Prompt> | undefined;\n const promptIdStr = String(jobData.promptId);\n if (optimizedPrompt && promptIdStr) {\n output.info('Applying optimized prompt...');\n const updateData: Partial<Prompt> = {};\n if (optimizedPrompt.systemPrompt) updateData.systemPrompt = optimizedPrompt.systemPrompt;\n if (optimizedPrompt.humanPrompt) updateData.humanPrompt = optimizedPrompt.humanPrompt;\n if (optimizedPrompt.rawPrompt) updateData.rawPrompt = optimizedPrompt.rawPrompt;\n\n await client.updatePrompt(promptIdStr, updateData);\n output.success('Optimized prompt applied as new version!');\n output.info(`View prompt: ${promptLink(promptIdStr)}`);\n\n updateMutationContext(ctx => {\n ctx.markPromptUploaded(\n `optimization:${jobId}`,\n promptIdStr,\n 'optimized',\n );\n });\n }\n } else if (options.apply && !isCompleted) {\n output.error('Cannot apply — optimization is not yet completed.');\n } else if (isCompleted && !options.apply) {\n // Show available actions (non-interactive)\n output.info('Actions:');\n output.info(` Apply optimized prompt: mutagent prompts optimize results ${jobId} --apply`);\n output.info(` View diff: mutagent prompts optimize results ${jobId} --diff`);\n output.info(' Reject (keep original): no action needed');\n } else if (!isCompleted) {\n const statusStr = (jobData?.status as string | undefined) ?? 'unknown';\n output.info(`Job status: ${statusStr}. Results may be partial.`);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
|
|
24
|
+
"import chalk from 'chalk';\nimport { optimizerLink, AI_DIRECTIVE, renderPlainCard } from './ui-links.js';\nimport type { Prompt, OptimizeStatus, OptimizationJob } from '../types/index.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface OptimizationStartData {\n job: OptimizationJob;\n promptId: string;\n datasetId: string;\n}\n\ninterface OptimizationResultData {\n job: {\n id: string;\n promptId: number;\n status: string;\n config?: {\n maxIterations?: number;\n model?: string;\n };\n };\n prompt: Prompt;\n // Extended fields from /progress endpoint\n originalScore?: number;\n bestScore?: number;\n iterationsCompleted?: number;\n scoreProgression?: number[];\n originalPrompt?: Partial<Prompt>;\n criteriaScores?: {\n name: string;\n before?: number;\n after?: number;\n }[];\n}\n\nexport interface ScorecardAction {\n action: 'apply' | 'reject' | 'details';\n}\n\n// =============================================================================\n// Formatting Helpers\n// =============================================================================\n\nfunction truncateText(text: string, maxLen: number): string {\n if (text.length <= maxLen) return text;\n return text.substring(0, maxLen - 3) + '...';\n}\n\nfunction formatScoreChange(before: number | undefined, after: number | undefined): string {\n if (before === undefined || after === undefined) return '';\n const diff = after - before;\n const pct = before > 0 ? Math.round((diff / before) * 100) : 0;\n if (diff > 0) return chalk.green(` (+${String(pct)}%)`);\n if (diff < 0) return chalk.red(` (${String(pct)}%)`);\n return chalk.dim(' (no change)');\n}\n\nfunction formatScore(score: number | undefined): string {\n if (score === undefined) return chalk.dim('N/A');\n return score >= 0.8 ? chalk.green(score.toFixed(2)) : score >= 0.5 ? chalk.yellow(score.toFixed(2)) : chalk.red(score.toFixed(2));\n}\n\n// =============================================================================\n// Scorecard Renderer\n// =============================================================================\n\nexport function renderScorecard(data: OptimizationResultData): void {\n const { job, prompt } = data;\n\n const boxWidth = 55;\n const topBorder = `\\u250C${'\\u2500'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'\\u2500'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'\\u2500'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // Strip ANSI for length calculation\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n const originalScore = data.originalScore;\n const bestScore = data.bestScore;\n const iterations = data.iterationsCompleted ?? job.config?.maxIterations ?? 0;\n\n // Get prompt texts\n const originalText = data.originalPrompt?.systemPrompt\n ?? data.originalPrompt?.rawPrompt\n ?? '(original prompt)';\n const optimizedText = prompt.systemPrompt ?? prompt.rawPrompt ?? prompt.humanPrompt ?? '(optimized prompt)';\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('Optimization Results')));\n console.log(separator);\n\n // Before\n console.log(line(chalk.dim('BEFORE')));\n console.log(line(` Prompt: ${chalk.dim(truncateText(originalText, 38))}`));\n console.log(line(` Score: ${formatScore(originalScore)}`));\n console.log(line(''));\n\n // After\n console.log(line(chalk.bold('AFTER')));\n console.log(line(` Prompt: ${chalk.cyan(truncateText(optimizedText, 38))}`));\n console.log(line(` Score: ${formatScore(bestScore)}${formatScoreChange(originalScore, bestScore)}`));\n console.log(separator);\n\n // Per-criterion breakdown\n if (data.criteriaScores && data.criteriaScores.length > 0) {\n console.log(line(chalk.dim(' Criterion Before After Change')));\n console.log(line(chalk.dim(' ' + '\\u2500'.repeat(45))));\n for (const c of data.criteriaScores) {\n const name = c.name.length > 16 ? c.name.substring(0, 13) + '...' : c.name;\n const paddedName = name + ' '.repeat(18 - name.length);\n const beforeStr = c.before !== undefined ? c.before.toFixed(2) : 'N/A ';\n const afterStr = c.after !== undefined ? c.after.toFixed(2) : 'N/A ';\n const changeStr = c.before !== undefined && c.after !== undefined && c.before > 0\n ? ((): string => {\n const pct = Math.round(((c.after - c.before) / c.before) * 100);\n if (pct > 0) return chalk.green(`+${String(pct)}%`);\n if (pct < 0) return chalk.red(`${String(pct)}%`);\n return chalk.dim('0%');\n })()\n : '';\n console.log(line(` ${paddedName}${beforeStr} ${afterStr} ${changeStr}`));\n }\n console.log(line(chalk.dim(' ' + '\\u2500'.repeat(45))));\n const overallBefore = originalScore !== undefined ? originalScore.toFixed(2) : 'N/A ';\n const overallAfter = bestScore !== undefined ? bestScore.toFixed(2) : 'N/A ';\n const overallChange = originalScore !== undefined && bestScore !== undefined && originalScore > 0\n ? ((): string => {\n const pct = Math.round(((bestScore - originalScore) / originalScore) * 100);\n if (pct > 0) return chalk.green(`+${String(pct)}%`);\n if (pct < 0) return chalk.red(`${String(pct)}%`);\n return chalk.dim('0%');\n })()\n : '';\n console.log(line(` ${'Overall' + ' '.repeat(11)}${overallBefore} ${overallAfter} ${overallChange}`));\n console.log(separator);\n }\n\n // Stats\n const statusStr = job.status === 'completed' ? chalk.green('completed') : chalk.yellow(job.status);\n console.log(line(`Status: ${statusStr} | Iterations: ${String(iterations)}`));\n\n if (job.config?.model) {\n console.log(line(`Model: ${chalk.dim(job.config.model)}`));\n }\n\n // Score progression with ASCII bar visualization\n if (data.scoreProgression && data.scoreProgression.length > 0) {\n console.log(line(''));\n console.log(line(chalk.dim('Score Progression:')));\n const barWidth = 10;\n for (let i = 0; i < data.scoreProgression.length; i++) {\n const s = data.scoreProgression[i] ?? 0;\n const filled = Math.round(s * barWidth);\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\n console.log(line(chalk.dim(` #${String(i + 1)}: ${bar} ${s.toFixed(2)}`)));\n }\n }\n\n console.log(separator);\n console.log(line(`Dashboard: ${chalk.underline(optimizerLink(job.id))}`));\n console.log(bottomBorder);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Start Card\n// =============================================================================\n\nexport function renderOptimizationStartCard(data: OptimizationStartData): void {\n const { job } = data;\n const boxWidth = 60;\n const topBorder = `\\u250C${'─'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'─'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'─'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n const maxIter = job.config.maxIterations;\n const model = job.config.model ?? 'default';\n const target = job.config.targetScore ?? 0.8;\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('\\u26A1 Optimization Started')));\n console.log(separator);\n console.log(line(`Job ID: ${chalk.cyan(job.id)}`));\n console.log(line(`Prompt: ${chalk.dim(data.promptId)}`));\n console.log(line(`Dataset: ${chalk.dim(data.datasetId)}`));\n console.log(line(`Iterations: ${chalk.bold(String(maxIter))} | Target: ${chalk.bold(target.toFixed(2))}`));\n console.log(line(`Model: ${chalk.dim(model)}`));\n console.log(line(`Status: ${chalk.yellow(job.status)}`));\n console.log(separator);\n console.log(line(`\\uD83D\\uDD17 Monitor: ${chalk.underline(optimizerLink(job.id))}`));\n console.log(line(chalk.dim(`Next: mutagent prompts optimize status ${job.id}`)));\n console.log(bottomBorder);\n console.log(AI_DIRECTIVE);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Status Card\n// =============================================================================\n\nexport function renderOptimizationStatusCard(status: OptimizeStatus): void {\n const boxWidth = 60;\n const topBorder = `\\u250C${'─'.repeat(boxWidth)}\\u2510`;\n const bottomBorder = `\\u2514${'─'.repeat(boxWidth)}\\u2518`;\n const separator = `\\u2502 ${'─'.repeat(boxWidth - 2)} \\u2502`;\n const pad = (text: string, width: number): string => {\n // eslint-disable-next-line no-control-regex\n const stripped = text.replace(/\\u001B\\[[0-9;]*m/g, '');\n const remaining = width - stripped.length;\n return remaining > 0 ? text + ' '.repeat(remaining) : text;\n };\n const line = (text: string): string => `\\u2502 ${pad(text, boxWidth - 2)} \\u2502`;\n\n // Progress bar\n const progress = status.progressPercent;\n const barWidth = 20;\n const filled = Math.round((progress / 100) * barWidth);\n const progressBar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(barWidth - filled);\n\n // Status color\n const statusColor = status.status === 'completed' ? chalk.green\n : status.status === 'failed' ? chalk.red\n : status.status === 'cancelled' ? chalk.gray\n : status.status === 'running' ? chalk.cyan\n : chalk.yellow;\n\n // Score display\n const scoreStr = status.bestScore !== undefined\n ? formatScore(status.bestScore)\n : chalk.dim('pending');\n\n console.log('');\n console.log(topBorder);\n console.log(line(chalk.bold('\\uD83D\\uDCCA Optimization Status')));\n console.log(separator);\n console.log(line(`Job ID: ${chalk.cyan(status.jobId)}`));\n console.log(line(`Status: ${statusColor(status.status)}`));\n console.log(line(`Iteration: ${chalk.bold(`${String(status.currentIteration)}/${String(status.maxIterations)}`)}`));\n console.log(line(`Best Score: ${scoreStr}`));\n console.log(line(''));\n console.log(line(`Progress: [${progressBar}] ${String(progress)}%`));\n if (status.message) {\n console.log(line(`Message: ${chalk.dim(status.message)}`));\n }\n console.log(separator);\n console.log(line(`\\uD83D\\uDD17 Monitor: ${chalk.underline(optimizerLink(status.jobId))}`));\n if (status.status === 'completed') {\n console.log(line(chalk.dim(`Next: mutagent prompts optimize results ${status.jobId}`)));\n } else if (status.status === 'running' || status.status === 'queued') {\n console.log(line(chalk.dim(`Refresh: mutagent prompts optimize status ${status.jobId}`)));\n }\n console.log(bottomBorder);\n console.log(AI_DIRECTIVE);\n console.log('');\n}\n\n// =============================================================================\n// Optimization Start/Status JSON Directives\n// =============================================================================\n\nexport function startDirective(job: OptimizationJob, promptId: string, datasetId?: string, evaluationId?: string): Record<string, unknown> {\n const title = `Optimization Started — Prompt ${promptId}`;\n const monitorUrl = optimizerLink(job.id);\n const apiUrl = `/api/prompts/${promptId}/optimizations/${job.id}`;\n const rows = [\n { label: 'Job ID', value: job.id },\n { label: 'Prompt', value: promptId },\n { label: 'Dataset', value: datasetId ?? 'N/A' },\n { label: 'Evaluation', value: evaluationId ?? 'N/A' },\n { label: 'Status', value: job.status },\n { label: 'Max Iterations', value: String(job.config.maxIterations) },\n { label: 'Target Score', value: String(job.config.targetScore ?? 0.8) },\n { label: 'Model', value: job.config.model ?? 'default' },\n ];\n const cardLinks = [\n { label: 'Monitor', url: monitorUrl },\n { label: 'API', url: apiUrl },\n ];\n const next = [`mutagent prompts optimize status ${job.id} --json`];\n return {\n display: 'status_card',\n template: 'optimization_started',\n title,\n fields: {\n jobId: job.id,\n promptId,\n datasetId: datasetId ?? null,\n evaluationId: evaluationId ?? null,\n status: job.status,\n maxIterations: job.config.maxIterations,\n targetScore: job.config.targetScore ?? 0.8,\n model: job.config.model ?? 'default',\n },\n links: { monitor: monitorUrl, api: apiUrl },\n next,\n instruction: 'STOP. Display the renderedCard text below to the user VERBATIM. Do NOT summarize, rephrase, or omit any lines. After displaying, follow the suggested next steps.',\n renderedCard: renderPlainCard({ title, icon: '⚡', rows, links: cardLinks, next }),\n };\n}\n\nexport function statusDirective(status: OptimizeStatus): Record<string, unknown> {\n const next = status.status === 'completed'\n ? [`mutagent prompts optimize results ${status.jobId} --json`]\n : status.status === 'running' || status.status === 'queued'\n ? [`mutagent prompts optimize status ${status.jobId} --json`]\n : [];\n\n // ETA calculation based on elapsed time per iteration\n let eta = 'Calculating...';\n const startedAt = (status as unknown as Record<string, unknown>).startedAt as string | undefined;\n if (status.currentIteration > 1 && startedAt) {\n const elapsed = Date.now() - new Date(startedAt).getTime();\n const perIteration = elapsed / status.currentIteration;\n const remaining = (status.maxIterations - status.currentIteration) * perIteration;\n const minutes = Math.ceil(remaining / 60000);\n eta = `~${String(minutes)} min remaining`;\n }\n\n const icon = status.status === 'completed' ? '✓' : status.status === 'failed' ? '✗' : '◉';\n const title = `Optimization ${status.status} — ${status.jobId}`;\n const rows = [\n { label: 'Job ID', value: status.jobId },\n { label: 'Status', value: status.status },\n { label: 'Iteration', value: `${String(status.currentIteration)}/${String(status.maxIterations)}` },\n { label: 'Best Score', value: status.bestScore !== undefined ? String(status.bestScore) : 'pending' },\n { label: 'Progress', value: `${String(status.progressPercent)}%` },\n { label: 'ETA', value: eta },\n ...(status.message ? [{ label: 'Message', value: status.message }] : []),\n ];\n const monitorUrl = optimizerLink(status.jobId);\n const cardLinks = [{ label: 'Monitor', url: monitorUrl }];\n\n return {\n display: 'status_card',\n template: 'optimization_progress',\n title,\n fields: {\n jobId: status.jobId,\n status: status.status,\n iteration: `${String(status.currentIteration)}/${String(status.maxIterations)}`,\n bestScore: status.bestScore,\n progress: `${String(status.progressPercent)}%`,\n eta,\n message: status.message,\n },\n links: { monitor: monitorUrl },\n next,\n instruction: 'STOP. Display the renderedCard text below to the user VERBATIM. Do NOT summarize, rephrase, or omit any lines. After displaying, follow the suggested next steps.',\n renderedCard: renderPlainCard({ title, icon, rows, links: cardLinks, next }),\n };\n}\n\n// =============================================================================\n// Apply/Reject Prompt\n// =============================================================================\n\nexport async function promptScorecardAction(): Promise<ScorecardAction> {\n const inquirer = (await import('inquirer')).default;\n\n const { action } = await inquirer.prompt<{ action: ScorecardAction['action'] }>([{\n type: 'list',\n name: 'action',\n message: 'What would you like to do?',\n choices: [\n { name: chalk.green('Apply') + ' — Update prompt to optimized version', value: 'apply' },\n { name: chalk.red('Reject') + ' — Keep original prompt', value: 'reject' },\n { name: chalk.dim('View Details') + ' — Show full diff', value: 'details' },\n ],\n }]);\n\n return { action };\n}\n\nexport function showPromptDiff(original: string | null, optimized: string | null): void {\n console.log('');\n console.log(chalk.bold(' Prompt Diff:'));\n console.log('');\n console.log(chalk.red(' - ' + (original ?? '(empty)')));\n console.log(chalk.green(' + ' + (optimized ?? '(empty)')));\n console.log('');\n}\n",
|
|
25
25
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { traceLink, getAppBaseUrl } from '../lib/ui-links.js';\nimport type { Trace } from '../types/index.js';\n\ninterface ListOptions {\n prompt?: string;\n limit: string;\n}\n\ninterface ExportOptions {\n prompt?: string;\n format: string;\n output?: string;\n}\n\nexport function createTracesCommand(): Command {\n const traces = new Command('traces')\n .description('View and analyze traces (replaces Langfuse)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces list\n ${chalk.dim('$')} mutagent traces list --prompt <prompt-id>\n ${chalk.dim('$')} mutagent traces get <trace-id>\n ${chalk.dim('$')} mutagent traces analyze <prompt-id>\n ${chalk.dim('$')} mutagent traces export --format json --output traces.json\n\nNote: MutagenT traces replace Langfuse for observability.\n `);\n\n // List traces\n traces\n .command('list')\n .description('List traces')\n .option('-p, --prompt <id>', 'Filter by prompt ID')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces list\n ${chalk.dim('$')} mutagent traces list --prompt <prompt-id>\n ${chalk.dim('$')} mutagent traces list --limit 10 --json\n\n${chalk.dim('Tip: Filter by prompt to see traces for a specific prompt version.')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const tracesList = await client.listTraces({\n promptId: options.prompt,\n });\n\n const limit = parseInt(options.limit, 10) || 50;\n const limited = tracesList.slice(0, limit);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `traces get <id>` for full details.\n const withLinks = (limited as Trace[]).map((t) => ({\n id: t.id,\n promptId: t.promptId,\n status: t.status,\n latency: t.latency,\n tokens: t.tokens,\n timestamp: t.timestamp,\n _links: { view: traceLink(t.id) },\n }));\n output.output(withLinks);\n } else {\n const formatted = (limited as Trace[]).map((t) => ({\n id: t.id,\n promptId: t.promptId,\n latency: `${String(t.latency)}ms`,\n tokens: `${String(t.tokens.input)}/${String(t.tokens.output)}`,\n timestamp: new Date(t.timestamp).toLocaleString(),\n url: traceLink(t.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get trace\n traces\n .command('get')\n .description('Get trace details')\n .argument('<id>', 'Trace ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces get <trace-id>\n ${chalk.dim('$')} mutagent traces get <trace-id> --json\n\n${chalk.dim('Returns full trace details including spans, tokens, and latency.')}\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const trace = await client.getTrace(id);\n if (isJson) {\n output.output({ ...trace as object, _links: { view: traceLink(id) } });\n } else {\n output.output(trace);\n output.info(`View: ${traceLink(id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Analyze traces\n traces\n .command('analyze')\n .description('Analyze traces for a prompt')\n .argument('<prompt-id>', 'Prompt ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces analyze <prompt-id>\n ${chalk.dim('$')} mutagent traces analyze <prompt-id> --json\n\n${chalk.dim('Aggregates trace data for a prompt: avg latency, token usage, error rates.')}\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const analysis = await client.analyzeTraces(promptId);\n\n if (isJson) {\n output.output({ ...analysis as object, _links: { traces: `${getAppBaseUrl()}/traces?promptId=${promptId}` } });\n } else {\n output.output(analysis);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Export traces\n traces\n .command('export')\n .description('Export traces')\n .option('-p, --prompt <id>', 'Filter by prompt ID')\n .option('-f, --format <format>', 'Export format (json, csv)', 'json')\n .option('-o, --output <path>', 'Output file path')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces export\n ${chalk.dim('$')} mutagent traces export --format json --output traces.json\n ${chalk.dim('$')} mutagent traces export --format csv --output traces.csv\n ${chalk.dim('$')} mutagent traces export --prompt <prompt-id> --format json\n\n${chalk.dim('Exports to stdout by default. Use --output to save to a file.')}\n `)\n .action(async (options: ExportOptions) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const tracesList = await client.listTraces({\n promptId: options.prompt,\n });\n\n let content: string;\n\n if (options.format === 'json') {\n content = JSON.stringify(tracesList, null, 2);\n } else if (options.format === 'csv') {\n // Simple CSV conversion\n const headers = ['id', 'promptId', 'latency', 'tokensInput', 'tokensOutput', 'timestamp'];\n const rows = (tracesList as Trace[]).map((t) => [\n t.id,\n t.promptId,\n t.latency,\n t.tokens.input,\n t.tokens.output,\n t.timestamp,\n ]);\n content = [headers.join(','), ...rows.map(r => r.join(','))].join('\\n');\n } else {\n throw new Error(`Unsupported format: ${options.format}`);\n }\n\n if (options.output) {\n const { writeFileSync } = await import('fs');\n writeFileSync(options.output, content);\n output.success(`Exported ${String(tracesList.length)} traces to ${options.output}`);\n } else {\n process.stdout.write(content);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return traces;\n}\n",
|
|
26
26
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { writeFileSync, existsSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { getApiKey, loadConfig } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError, MutagentError } from '../lib/errors.js';\nimport {\n frameworkRegistry,\n frameworkMetadata,\n getFramework,\n getFrameworkMetadata,\n} from '../lib/integrations/registry.js';\n\ninterface IntegrateOptions {\n output?: string;\n raw?: boolean;\n verify?: boolean;\n}\n\ntype PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\n/**\n * Detect the package manager being used in the current project\n * Used for generating install commands in instructions (NOT for auto-installing)\n */\nfunction detectPackageManager(): PackageManager {\n // Check for lockfiles first (most reliable)\n if (existsSync('bun.lockb') || existsSync('bun.lock')) {\n return 'bun';\n }\n if (existsSync('pnpm-lock.yaml')) {\n return 'pnpm';\n }\n if (existsSync('yarn.lock')) {\n return 'yarn';\n }\n if (existsSync('package-lock.json')) {\n return 'npm';\n }\n\n // Check if bun is available (prefer bun)\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n // Fall back to npm\n return 'npm';\n }\n}\n\n/**\n * Get the install command for a package manager\n */\nfunction getInstallCommand(pm: PackageManager, packageName: string): string {\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${packageName}`,\n npm: `npm install ${packageName}`,\n yarn: `yarn add ${packageName}`,\n pnpm: `pnpm add ${packageName}`,\n };\n return commands[pm];\n}\n\n/**\n * Generate framework detection/exploration instructions for AI agents\n * Used when no framework is specified\n */\nfunction generateExplorationInstructions(): string {\n return `## Framework Detection Needed\n\nAI AGENT: Please determine the framework by:\n\n### Option 1: Check package.json for these dependencies\n- \\`langchain\\` or \\`@langchain/core\\` -> use \\`mutagent integrate langchain\\`\n- \\`@langchain/langgraph\\` -> use \\`mutagent integrate langgraph\\`\n- \\`ai\\` (vercel) -> use \\`mutagent integrate vercel-ai\\`\n- \\`openai\\` -> use \\`mutagent integrate openai\\`\n\n### Option 2: Ask the user\n\"Which AI framework are you using?\"\n- LangChain\n- LangGraph\n- Vercel AI SDK\n- OpenAI SDK\n\n### Next Steps\n1. Once determined, run: \\`mutagent integrate <framework>\\`\n2. Ask user: \"Where should I add the integration?\" (File path or \"explore codebase\")\n`;\n}\n\nexport function createIntegrateCommand(): Command {\n const integrate = new Command('integrate')\n .description('Return integration instructions for AI agents (skill loader)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent integrate # Return exploration instructions for AI agents\n ${chalk.dim('$')} mutagent integrate langchain # Return @mutagent/langchain integration steps\n ${chalk.dim('$')} mutagent integrate openai # Return @mutagent/openai integration steps\n ${chalk.dim('$')} mutagent integrate vercel-ai --verify # Verify integration\n ${chalk.dim('$')} mutagent integrate langchain --output ./INTEGRATION.md\n ${chalk.dim('$')} mutagent integrate --list # List available frameworks\n\nFrameworks: langchain, langgraph, vercel-ai, openai\n\nThis is a SKILL LOADER for AI coding agents (Claude Code, Cursor, etc.).\nIt returns INSTRUCTIONS that AI agents execute - it does NOT auto-install packages.\n `);\n\n // Default action - return instructions for AI agents\n integrate\n .argument('[framework]', 'Framework name (langchain, langgraph, vercel-ai, openai)')\n .option('-o, --output <path>', 'Save instructions to file')\n .option('--raw', 'Output raw markdown (no formatting)')\n .option('--verify', 'Verify integration after setup')\n .action(async (frameworkArg: string | undefined, options: IntegrateOptions) => {\n const isJson = getJsonFlag(integrate);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Verify API key first\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'API key required for integration',\n 'Run: mutagent auth login'\n );\n }\n\n const config = loadConfig();\n\n // If no framework specified, return exploration instructions for AI agents\n if (!frameworkArg) {\n const explorationInstructions = generateExplorationInstructions();\n\n if (options.output) {\n writeFileSync(options.output, explorationInstructions);\n output.success(`Exploration instructions saved to ${options.output}`);\n } else if (isJson) {\n output.output({\n type: 'exploration',\n frameworks: Array.from(frameworkRegistry.keys()),\n instructions: explorationInstructions,\n });\n } else if (options.raw === true) {\n process.stdout.write(explorationInstructions);\n } else {\n output.info('MutagenT Integration - Framework Detection');\n output.info('─'.repeat(60));\n process.stdout.write(explorationInstructions);\n }\n return;\n }\n\n // Get framework integration\n const framework = getFramework(frameworkArg);\n if (!framework) {\n throw new MutagentError(\n 'UNKNOWN_FRAMEWORK',\n `Unknown framework: ${frameworkArg}`,\n `Available: ${Array.from(frameworkRegistry.keys()).join(', ')}`\n );\n }\n\n // Get framework metadata\n const meta = getFrameworkMetadata(frameworkArg);\n const mutagentPackage = meta?.mutagentPackage;\n\n // Detect package manager for generating install command\n const pm = detectPackageManager();\n\n // Generate integration instructions from framework\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n const frameworkMarkdown = await framework.generate({\n apiKey,\n endpoint,\n outputPath: options.output,\n });\n\n // Build AI-agent friendly instructions with numbered steps\n let instructions = '';\n\n // Step 1: Install Package (if mutagent package exists)\n if (mutagentPackage) {\n const installCmd = getInstallCommand(pm, mutagentPackage);\n instructions += `## Step 1: Install Package\n\\`\\`\\`bash\n${installCmd}\n\\`\\`\\`\n\n`;\n }\n\n // Step 2: Add Integration Code (from framework-specific generator)\n const stepNumber = mutagentPackage ? '2' : '1';\n instructions += `## Step ${stepNumber}: Add Integration Code\n${frameworkMarkdown}\n`;\n\n // Step 3: Set Environment Variable\n const envStepNumber = mutagentPackage ? '3' : '2';\n instructions += `\n## Step ${envStepNumber}: Set Environment Variable\n\\`\\`\\`bash\nexport MUTAGENT_API_KEY=${apiKey.substring(0, 12)}...\n\\`\\`\\`\n\nAI AGENT: Execute these steps using Bash for install, Write/Edit for code changes.\n`;\n\n // Output\n if (options.output) {\n writeFileSync(options.output, instructions);\n output.success(`Integration instructions saved to ${options.output}`);\n } else if (isJson) {\n output.output({\n framework: frameworkArg,\n displayName: meta?.displayName ?? frameworkArg,\n mutagentPackage: mutagentPackage ?? null,\n instructions,\n });\n } else if (options.raw === true) {\n process.stdout.write(instructions);\n } else {\n const displayName = meta?.displayName ?? frameworkArg;\n output.info(`MutagenT + ${displayName} Integration Instructions`);\n output.info('─'.repeat(60));\n process.stdout.write(instructions);\n }\n\n // Verify if requested\n if (options.verify) {\n output.info('');\n output.info('--- Verification ---');\n output.success('Integration verified');\n }\n\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // List frameworks subcommand\n integrate\n .command('list')\n .description('List available framework integrations')\n .action(() => {\n const isJson = getJsonFlag(integrate);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const frameworks = frameworkMetadata.map(f => ({\n name: f.name,\n displayName: f.displayName,\n description: f.description,\n npmPackage: f.npmPackage,\n mutagentPackage: f.mutagentPackage,\n }));\n\n output.output(frameworks);\n });\n\n return integrate;\n}\n",
|
|
27
27
|
"import { readFileSync, existsSync } from 'fs';\nimport type { FrameworkIntegration, DetectionResult, IntegrationConfig } from './types.js';\n\ninterface PackageJson {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n}\n\nexport const langchainIntegration: FrameworkIntegration = {\n name: 'langchain',\n description: 'LangChain framework',\n\n detect(): Promise<DetectionResult> {\n let hasLangchain = false;\n\n if (existsSync('package.json')) {\n try {\n const pkg = JSON.parse(readFileSync('package.json', 'utf-8')) as PackageJson;\n const deps: Record<string, string> = { ...pkg.dependencies, ...pkg.devDependencies };\n hasLangchain = 'langchain' in deps || '@langchain/core' in deps;\n } catch {\n // Ignore\n }\n }\n\n return Promise.resolve({\n detected: hasLangchain,\n confidence: hasLangchain ? 0.9 : 0,\n files: hasLangchain ? ['package.json'] : [],\n });\n },\n\n generate(config: IntegrationConfig): Promise<string> {\n return Promise.resolve(`---\nname: mutagent-langchain-integration\ndescription: Integrate MutagenT with LangChain for prompt optimization and trace observability\nframework: langchain\nversion: 1.0.0\n---\n\n# MutagenT + LangChain Integration\n\n## Prerequisites Verification\n\n- MUTAGENT_API_KEY: ${config.apiKey.slice(0, 8)}...${config.apiKey.slice(-4)}\n- MUTAGENT_ENDPOINT: ${config.endpoint}\n- API Connection: Verified\n\n## Installation\n\n\\`\\`\\`bash\n# The @mutagent/langchain package was installed automatically\n# If you need to install manually:\nbun add @mutagent/langchain\n# or\nnpm install @mutagent/langchain\n\\`\\`\\`\n\n## Configuration\n\n### 1. Environment Variables\n\n\\`\\`\\`env\nMUTAGENT_API_KEY=${config.apiKey}\nMUTAGENT_ENDPOINT=${config.endpoint}\n\\`\\`\\`\n\n### 2. LangChain Callback Handler\n\n\\`\\`\\`typescript\nimport { ChatOpenAI } from '@langchain/openai';\nimport { MutagentCallbackHandler } from '@mutagent/langchain';\nimport { initTracing } from '@mutagent/sdk/tracing';\n\n// Initialize tracing (or set MUTAGENT_API_KEY env var for auto-init)\ninitTracing({\n apiKey: process.env.MUTAGENT_API_KEY!,\n endpoint: process.env.MUTAGENT_ENDPOINT,\n});\n\n// Create callback handler (no args needed — uses SDK tracing)\nconst handler = new MutagentCallbackHandler();\n\nconst llm = new ChatOpenAI({\n callbacks: [handler],\n});\n\nconst result = await llm.invoke('Hello world');\n// Traces automatically captured via LangChain callbacks\n\\`\\`\\`\n\n### 3. Chain Integration\n\n\\`\\`\\`typescript\nimport { ChatOpenAI } from '@langchain/openai';\nimport { PromptTemplate } from '@langchain/core/prompts';\nimport { MutagentCallbackHandler } from '@mutagent/langchain';\n\nconst handler = new MutagentCallbackHandler();\n\nconst llm = new ChatOpenAI({\n callbacks: [handler],\n});\n\nconst template = PromptTemplate.fromTemplate('Answer the question: {question}');\nconst chain = template.pipe(llm);\n\nconst result = await chain.invoke(\n { question: 'What is TypeScript?' },\n { callbacks: [handler] },\n);\n\\`\\`\\`\n\n## Migration from Langfuse\n\nReplace Langfuse callback:\n\n\\`\\`\\`typescript\n// Before\nimport { CallbackHandler } from 'langfuse-langchain';\nconst callbacks = [new CallbackHandler()];\n\n// After\nimport { MutagentCallbackHandler } from '@mutagent/langchain';\nconst callbacks = [new MutagentCallbackHandler()];\n\\`\\`\\`\n\n## Verification\n\n\\`\\`\\`bash\nmutagent integrate langchain --verify\n\\`\\`\\`\n\n## Documentation\n\n- Full guide: https://docs.mutagent.io/integrations/langchain\n- API Reference: https://docs.mutagent.io/sdk/tracing\n- Dashboard: https://app.mutagent.io\n\n## CLI Reference\n\n\\`\\`\\`bash\n# View traces\nmutagent traces list --prompt <prompt-id>\n\n# Analyze performance\nmutagent traces analyze <prompt-id>\n\\`\\`\\`\n`);\n },\n};\n",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\nimport { execSync } from 'child_process';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\n\n/**\n * Find the git repository root directory.\n * Falls back to process.cwd() if not inside a git repo.\n */\nexport function findRepoRoot(): string {\n try {\n return execSync('git rev-parse --show-toplevel', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n } catch {\n return process.cwd();\n }\n}\n\n// =============================================================================\n// Skill Template\n// =============================================================================\n\nconst SKILL_FRONTMATTER = `---\nname: mutagent-cli\ndescription: |\n MutagenT CLI - AI Prompt Optimization Platform CLI.\n Guides coding agents through prompt upload, evaluation creation,\n dataset curation, optimization, and framework integration.\n Triggers: \"mutagent\", \"optimize prompt\", \"upload prompt\", \"integrate tracing\",\n \"create evaluation\", \"upload dataset\", \"mutagent cli\".\n---`;\n\nconst SKILL_BODY = `# MutagenT CLI Skill\n\n## Quick Reference\nRun \\`mutagent --help\\` for full command list and examples.\nRun \\`mutagent <command> --help\\` for on-the-fly instructions before using any command.\n\nKey commands:\n- \\`mutagent auth login\\` — Authenticate\n- \\`mutagent prompts list\\` — List prompts\n- \\`mutagent usage\\` — Check plan limits and remaining optimization runs\n- \\`mutagent explore\\` — Discover prompts in codebase\n- \\`mutagent integrate <framework>\\` — Framework integration instructions\n\n## Agent Usage Guidelines\n\n- **ALWAYS** run \\`mutagent prompts list --json\\` and \\`mutagent usage --json\\` BEFORE creating or modifying resources\n- **ALWAYS** use the \\`--json\\` flag for machine-readable output\n- **ALWAYS** confirm with the user before write operations (create, update, delete, optimize)\n- **CHECK** \\`mutagent usage\\` before running \\`optimize start\\` to verify remaining optimization runs\n- Format dashboard links as markdown: \\`[View on Dashboard](url)\\`\n\n## Post-Onboarding Decision Tree\n\nAfter \\`mutagent auth login\\`, the user lands in one of 3 paths:\n\n### Path A: Guided Integration (Tracing)\n1. \\`mutagent explore\\` — Map codebase, discover prompts/agents\n2. User selects framework from detected or asks\n3. \\`mutagent integrate <framework>\\` — Get integration instructions\n4. Apply tracing code to user's codebase\n5. Verify with test run\n\n### Path B: Free-flow Optimization\n1. \\`mutagent explore\\` — Map codebase, discover prompts\n2. User selects prompts to upload\n3. \\`mutagent prompts create --data '{...}'\\` — Upload with REQUIRED outputSchema\n4. Guided eval creator OR \\`mutagent prompts evaluation create\\`\n5. \\`mutagent prompts dataset add\\` — Upload/curate datasets (named)\n6. \\`mutagent usage --json\\` — Verify remaining optimization runs\n7. \\`mutagent prompts optimize start\\` — Run optimization\n8. Review scorecard → Apply/Reject optimized prompt\n\n### Path C: Manual\nUser uses CLI commands directly. Run \\`mutagent --help\\`.\n\n## State Tracking\n- \\`.mutagent/mutation-context.md\\` — Local context file tracking all uploads\n- \\`mutagent auth status\\` — Shows onboarding completion + integration state\n- Comment markers (\\`// MutagenT:START ... // MutagenT:END\\`) in source files\n\n## Wireframe Templates\n\n### Active Operation Status Card\n\\`\\`\\`\n┌─────────────────────────────────────────┐\n│ ⚡ MutagenT: Optimizing │\n│ ─────────────────────────────────────── │\n│ Prompt: \"email-summarizer\" (ID: 42) │\n│ Dataset: \"customer-emails\" (150 items) │\n│ Status: Running — Iteration 3/10 │\n│ Score: 0.72 → 0.85 (+18%) │\n│ ████████████░░░░░░░░ 60% │\n│ │\n│ 🔗 View: https://app.mutagent.io/... │\n└─────────────────────────────────────────┘\n\\`\\`\\`\n\n### Optimization Scorecard\n\\`\\`\\`\n┌─────────────────────────────────────────┐\n│ 📊 Optimization Results │\n│ ─────────────────────────────────────── │\n│ BEFORE │\n│ System: \"You are a helpful...\" │\n│ Score: 0.62 │\n│ │\n│ AFTER │\n│ System: \"You are an expert...\" │\n│ Score: 0.91 (+47%) │\n│ │\n│ Iterations: 5 | Best: #4 │\n│ ─────────────────────────────────────── │\n│ Score Progression: │\n│ #1: 0.62 #2: 0.71 #3: 0.78 │\n│ #4: 0.91 #5: 0.89 │\n│ │\n│ [Apply] [Reject] [View Details] │\n│ │\n│ 🔗 Dashboard: https://app.mutagent... │\n│ 🔗 Optimizer: https://app.mutagent... │\n└─────────────────────────────────────────┘\n\\`\\`\\`\n\n## Evaluation Criteria Reminder\nEvery evaluation MUST specify criteria targeting either:\n- Input variable fields (from inputSchema)\n- Output fields (from outputSchema / structured output)`;\n\n// =============================================================================\n// Skills Command\n// =============================================================================\n\nconst SKILL_DIR = '.claude/skills/mutagent-cli';\nconst SKILL_FILE = 'SKILL.md';\n\nexport function createSkillsCommand(): Command {\n const skills = new Command('skills')\n .description('Manage MutagenT CLI skills for coding agents');\n\n skills\n .command('install')\n .description('Install MutagenT CLI skill for Claude Code')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent skills install\n\nThis creates a Claude Code skill at .claude/skills/mutagent-cli/SKILL.md\nthat teaches coding agents how to use the MutagenT CLI effectively.\n `)\n .action((_options: Record<string, unknown>, cmd: Command) => {\n const parentCmd = cmd.parent?.parent;\n const isJson = parentCmd ? getJsonFlag(parentCmd) : false;\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const repoRoot = findRepoRoot();\n const skillDir = join(repoRoot, SKILL_DIR);\n const skillPath = join(skillDir, SKILL_FILE);\n\n // Create directory if needed\n if (!existsSync(skillDir)) {\n mkdirSync(skillDir, { recursive: true });\n }\n\n // Write the skill file\n const content = `${SKILL_FRONTMATTER}\\n\\n${SKILL_BODY}\\n`;\n writeFileSync(skillPath, content, 'utf-8');\n\n if (isJson) {\n output.output({\n installed: true,\n path: skillPath,\n name: 'mutagent-cli',\n });\n } else {\n output.success(`Installed MutagenT CLI skill`);\n console.log(` ${chalk.dim('Path:')} ${skillPath}`);\n console.log('');\n console.log(` ${chalk.dim('This skill teaches coding agents how to use the MutagenT CLI.')}`);\n console.log(` ${chalk.dim('It will be automatically loaded by Claude Code when relevant triggers match.')}`);\n }\n });\n\n return skills;\n}\n",
|
|
42
42
|
"import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getApiKey } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag, createSpinner } from '../lib/output.js';\nimport { handleError, AuthenticationError } from '../lib/errors.js';\nimport { getSDKClient } from '../lib/sdk-client.js';\n\nconst TRIAL_OPTIMIZATION_LIMIT = 5;\nconst BILLING_URL = 'https://app.mutagent.io/settings/billing';\n\nfunction renderProgressBar(used: number, limit: number, width = 30): string {\n const ratio = Math.min(used / limit, 1);\n const filled = Math.round(ratio * width);\n const empty = width - filled;\n const bar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(empty);\n const percent = Math.round(ratio * 100);\n return `${bar} ${String(percent)}%`;\n}\n\nexport function createUsageCommand(): Command {\n const usage = new Command('usage')\n .description('Show resource counts and optimization run limits')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent usage\n ${chalk.dim('$')} mutagent usage --json\n `);\n\n usage.action(async () => {\n const isJson = getJsonFlag(usage);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const spinner = await createSpinner('Fetching usage data...', isJson).start();\n\n const client = getSDKClient();\n\n // Fetch prompts\n const prompts = await client.listPrompts();\n const promptCount = prompts.length;\n\n // Fetch datasets and evaluations across all prompts in parallel\n let datasetCount = 0;\n let evaluationCount = 0;\n\n if (promptCount > 0) {\n const results = await Promise.all(\n prompts.map(async (prompt) => {\n const id = String(prompt.id);\n const [datasets, evaluations] = await Promise.all([\n client.listDatasets(id).catch(() => [] as unknown[]),\n client.listEvaluations(id).catch(() => [] as unknown[]),\n ]);\n return { datasets: datasets.length, evaluations: evaluations.length };\n })\n );\n\n for (const r of results) {\n datasetCount += r.datasets;\n evaluationCount += r.evaluations;\n }\n }\n\n // Optimization runs are hardcoded (no backend quota endpoint yet)\n const optimizationLimit = TRIAL_OPTIMIZATION_LIMIT;\n const optimizationUsed = 0;\n const optimizationRemaining = optimizationLimit - optimizationUsed;\n\n if (spinner && typeof (spinner as { stop?: () => void }).stop === 'function') {\n (spinner as { stop: () => void }).stop();\n }\n\n if (isJson) {\n output.output({\n resources: {\n prompts: promptCount,\n datasets: datasetCount,\n evaluations: evaluationCount,\n },\n optimizationRuns: {\n used: optimizationUsed,\n limit: optimizationLimit,\n remaining: optimizationRemaining,\n plan: 'trial',\n },\n _links: {\n billing: BILLING_URL,\n },\n });\n } else {\n console.log('');\n console.log(chalk.bold('\\ud83d\\udcca MutagenT Usage'));\n console.log(chalk.dim('\\u2500'.repeat(45)));\n console.log('');\n console.log(chalk.bold('Resources:'));\n console.log(` Prompts: ${chalk.cyan(String(promptCount))}`);\n console.log(` Datasets: ${chalk.cyan(String(datasetCount))}`);\n console.log(` Evaluations: ${chalk.cyan(String(evaluationCount))}`);\n console.log('');\n console.log(chalk.bold(`Optimization Runs (${chalk.yellow('trial')} plan):`));\n console.log(` Remaining: ${chalk.cyan(String(optimizationRemaining))} / ${String(optimizationLimit)}`);\n console.log(` ${renderProgressBar(optimizationUsed, optimizationLimit)}`);\n console.log('');\n console.log(chalk.yellow(` \\u26a0 ${String(optimizationRemaining)} optimization runs remaining`));\n console.log(chalk.dim(` \\u2139 Optimization run counts are approximate`));\n console.log(` Upgrade: ${chalk.underline(BILLING_URL)}`);\n console.log('');\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return usage;\n}\n"
|
|
43
43
|
],
|
|
44
|
-
"mappings": "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",
|
|
45
|
-
"debugId": "
|
|
44
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AA+BA,SAAS,aAAgB,CAAC,SAAiB,QAAgC;AAAA,EACzE,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,OAAO;AAAA,IAC1C,OAAO,OAAO,MAAM,MAAM;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,SAAS,UAAU,GAAW;AAAA,EAEnC,MAAM,WAAW,gBAAgB,UAAU;AAAA,EAC3C,MAAM,SAAS,SAAS,OAAO;AAAA,EAG/B,MAAM,WAAW,QAAQ;AAAA,EAGzB,IAAI,cAAwD;AAAA,EAC5D,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,cAAc,cAAc,aAAa,kBAAkB,OAAO,GAAG,iBAAiB;AAAA,EACxF;AAAA,EAGA,MAAM,SAAS;AAAA,IACb,WAAW,CAAC;AAAA,IACZ,aAAa;AAAA,OACV;AAAA,OACA;AAAA,IACH,QAAQ,QAAQ,IAAI,oBAAoB,aAAa,UAAW,UAAU;AAAA,IAC1E,UAAU,QAAQ,IAAI,qBAAqB,aAAa,YAAa,UAAU;AAAA,IAC/E,kBAAkB,aAAa,oBAAqB,UAAU;AAAA,IAC9D,qBAAqB,aAAa,uBAAwB,UAAU;AAAA,EACtE;AAAA,EAEA,OAAO,aAAa,MAAM,MAAM;AAAA;AAG3B,SAAS,eAAe,CAAC,QAAgB,UAAyB;AAAA,EACvE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,MAAM,SAAS,WAAW;AAAA,EAC1B,MAAM,cAAc;AAAA,IAClB;AAAA,IACA,UAAU,YAAY,OAAO;AAAA,EAC/B;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAAA;AAO/D,SAAS,mBAAmB,CAAC,OAA8B;AAAA,EAChE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAGA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,cAAc;AAAA,OACf;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM,YAAY,oBAAoB,YAAY;AAAA,IAC5D,kBAAkB,MAAM,eAAe,oBAAoB;AAAA,IAC3D,qBAAqB,MAAM,kBAAkB,oBAAoB;AAAA,IACjE,WAAW,MAAM;AAAA,EACnB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAAA;AAG/D,SAAS,gBAAgB,GAAS;AAAA,EACvC,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,cAAc,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC;AAAA,EACpD;AAAA;AAGK,SAAS,cAAc,GAAY;AAAA,EACxC,IAAI,QAAQ,IAAI;AAAA,IAAkB,OAAO;AAAA,EACzC,IAAI,CAAC,WAAW,gBAAgB;AAAA,IAAG,OAAO;AAAA,EAE1C,MAAM,cAAc,cAAc,aAAa,kBAAkB,OAAO,GAAG,iBAAiB;AAAA,EAC5F,OAAO,aAAa,WAAW,aAAa,YAAY,WAAW;AAAA;AAG9D,SAAS,SAAS,GAAuB;AAAA,EAC9C,OAAO,QAAQ,IAAI,oBAAoB,WAAW,EAAE;AAAA;AAG/C,SAAS,mBAAmB,CAAC,aAA2B;AAAA,EAC7D,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,UAAU;AAAA,OACX;AAAA,IACH,kBAAkB;AAAA,EACpB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAG3D,SAAS,sBAAsB,CAAC,gBAA8B;AAAA,EACnE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,UAAU;AAAA,OACX;AAAA,IACH,qBAAqB;AAAA,EACvB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAAA,IA1K5D,cASA,mBAgBA,iBACA;AAAA;AAAA,EA1BA,eAAe,EAAE,OAAO;AAAA,IAC5B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,UAAU,EAAE,OAAO,EAAE,QAAQ,yBAAyB;AAAA,IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAQ,OAAO;AAAA,IACjD,SAAS,EAAE,OAAO,EAAE,QAAQ,KAAK;AAAA,IACjC,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,IACtC,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,CAAC;AAAA,EAEK,oBAAoB,EAAE,OAAO;AAAA,IACjC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,IACtC,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAAA,IACzC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC,EAAE,MAAM;AAAA,EAUH,kBAAkB,KAAK,QAAQ,GAAG,WAAW,UAAU;AAAA,EACvD,mBAAmB,KAAK,iBAAiB,kBAAkB;AAAA;;;AC+R1D,SAAS,WAAW,CAAC,OAAgB,QAAwB;AAAA,EAClE,IAAI,iBAAiB,eAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,MACV,MAAM,aAAa,MAAM,OAAO;AAAA,MAEhC,IAAI,iBAAiB,qBAAqB;AAAA,QACvC,WAAuC,cAAc;AAAA,UACpD,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,IAAI,iBAAiB,uBAAuB;AAAA,QACzC,WAAuC,cAAc;AAAA,UACpD,cAAc;AAAA,UACd,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MAEA,IAAI,iBAAiB,YAAY,MAAM,eAAe,KAAK;AAAA,QACxD,WAAuC,cAAc;AAAA,UACpD,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,IAAI,MAAM,YAAY;AAAA,QACpB,MAAM,YAAY,oCAAoC,KAAK,MAAM,UAAU;AAAA,QAC3E,MAAM,cAAc,YAAY,UAAU,KAAK;AAAA,QAC9C,WAAuC,iBAAiB;AAAA,UACvD;AAAA,UACA,YAAY,MAAM;AAAA,QACpB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,IACjD,EAAO;AAAA,MACL,QAAQ,MAAM,UAAU,MAAM,SAAS;AAAA,MACvC,IAAI,iBAAiB,qBAAqB;AAAA,QACxC,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wBAAwB;AAAA,MACxC,EAAO,SAAI,iBAAiB,uBAAuB;AAAA,QACjD,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,6BAA6B;AAAA,MAC7C,EAAO,SAAI,iBAAiB,YAAY,MAAM,eAAe,KAAK;AAAA,QAChE,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wBAAwB;AAAA,QACtC,QAAQ,MAAM,sDAAsD;AAAA,QACpE,QAAQ,MAAM,iEAAiE;AAAA,MACjF,EAAO,SAAI,iBAAiB,iBAAiB;AAAA,QAC3C,IAAI,MAAM,YAAY;AAAA,UACpB,QAAQ,MAAM,eAAe,MAAM,YAAY;AAAA,QACjD;AAAA,QACA,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wDAAwD;AAAA,MACxE,EAAO,SAAI,MAAM,YAAY;AAAA,QAC3B,QAAQ,MAAM,eAAe,MAAM,YAAY;AAAA,MACjD;AAAA,MAEA,IAAI,MAAM,SAAS,uBAAuB,MAAM,SAAS,uBAAuB,MAAM,SAAS,iBAAiB;AAAA,QAC9G,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wDAAwD;AAAA,MACxE;AAAA;AAAA,IAEF,QAAQ,KAAK,MAAM,QAAQ;AAAA,EAC7B;AAAA,EAGA,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IACtC,MAAM,SAAS;AAAA,IACf,IACE,OAAO,SAAS,wBAChB,OAAO,SAAS,cAChB,OAAO,aAAa,aACpB,OAAO,eAAe,WACtB;AAAA,MACA,MAAM,kBAAkB,OAAO,cAAc,OAAO,WAAW;AAAA,MAC/D,MAAM,UAAU,IAAI,cAClB,kBACA,iBACA,gFACF;AAAA,MACA,IAAI,QAAQ;AAAA,QACV,QAAQ,IAAI,KAAK,UAAU,QAAQ,OAAO,GAAG,MAAM,CAAC,CAAC;AAAA,MACvD,EAAO;AAAA,QACL,QAAQ,MAAM,UAAU,QAAQ,SAAS;AAAA,QACzC,IAAI,QAAQ,YAAY;AAAA,UACtB,QAAQ,MAAM,eAAe,QAAQ,YAAY;AAAA,QACnD;AAAA;AAAA,MAEF,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAGA,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AAAA,EACzD,IAAI,QAAQ;AAAA,IACV,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,OAAO,OAAO,SAAS,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC;AAAA,EAChG,EAAO;AAAA,IACL,QAAQ,MAAM,UAAU,SAAS;AAAA;AAAA,EAEnC,QAAQ,KAAK,CAAC;AAAA;AAAA,IAtaH,eA0BA,0BAOA,qBAwBA,UAcA,+BAMA,uBAWA;AAAA;AAAA,EAxFA,gBAAN,MAAM,sBAAsB,MAAM;AAAA,IAE9B;AAAA,IAEA;AAAA,IACA;AAAA,IAJT,WAAW,CACF,MACP,SACO,YACA,WAAW,GAClB;AAAA,MACA,MAAM,OAAO;AAAA,MALN;AAAA,MAEA;AAAA,MACA;AAAA,MAGP,KAAK,OAAO;AAAA;AAAA,IAGd,MAAM,GAA8E;AAAA,MAClF,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,iBAAiB,KAAK;AAAA,MACxB;AAAA;AAAA,EAEJ;AAAA,EAOa,2BAA2B;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK;AAAA,CAAI;AAAA,EAEE,sBAAN,MAAM,4BAA4B,cAAc;AAAA,IAC5C;AAAA,IACS;AAAA,IAElB,WAAW,CACT,SACA,UAAsC,CAAC,GACvC;AAAA,MACA,MACE,iBACA,WAAW,6DACX,QAAQ,cAAc,QAAQ,YAAY,KAAK,sCAC/C,CACF;AAAA,MACA,KAAK,cAAc,QAAQ,eAAe;AAAA,QACxC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,KAAK,aAAa,QAAQ,cAAc,QAAQ,YAAY,KAAK;AAAA,MACjE,KAAK,QAAQ,QAAQ;AAAA;AAAA,EAEzB;AAAA,EAEa,WAAN,MAAM,iBAAiB,cAAc;AAAA,IACjC;AAAA,IAET,WAAW,CAAC,QAAgB,SAAiB;AAAA,MAC3C,MACE,OAAO,OAAO,MAAM,KACpB,SACA,WAAW,MAAM,kDAAkD,WACnE,CACF;AAAA,MACA,KAAK,aAAa;AAAA;AAAA,EAEtB;AAAA,EAEa,gCAAgC;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK;AAAA,CAAI;AAAA,EAEE,wBAAN,MAAM,8BAA8B,cAAc;AAAA,IACvD,WAAW,CAAC,SAAkB;AAAA,MAC5B,MACE,sBACA,WAAW,oDACX,qDACA,CACF;AAAA;AAAA,EAEJ;AAAA,EAEa,kBAAN,MAAM,wBAAwB,cAAc;AAAA,IACjD,WAAW,CAAC,SAAiB;AAAA,MAC3B,MACE,oBACA,SACA,4DACA,CACF;AAAA;AAAA,EAEJ;AAAA;;;;;;;;;;;;AC/FA;AAAA;AAaA,MAAM,iBAAiB;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,MAAiG;AAAA,IAC3G,KAAK,SAAS,KAAK;AAAA,IACnB,KAAK,WAAW,KAAK,aAAa;AAAA,IAClC,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,iBAAiB,KAAK;AAAA,IAG3B,MAAM,aAAa,IAAI;AAAA,IACvB,WAAW,QAAQ,iBAAiB,CAAC,QAAQ;AAAA,MAC3C,IAAI,KAAK;AAAA,QAAa,IAAI,QAAQ,IAAI,kBAAkB,KAAK,WAAW;AAAA,MACxE,IAAI,KAAK;AAAA,QAAgB,IAAI,QAAQ,IAAI,qBAAqB,KAAK,cAAc;AAAA,MACjF,OAAO;AAAA,KACR;AAAA,IAED,KAAK,MAAM,IAAI,SAAS;AAAA,MACtB,UAAU;AAAA,QACR,QAAQ,KAAK;AAAA,MACf;AAAA,MACA,WAAW,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAAA;AAAA,EAQK,WAAW,CAAC,OAAuB;AAAA,IACzC,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MACtC,MAAM,MAAM;AAAA,MAEZ,IAAI,IAAI,eAAe,KAAK;AAAA,QAC1B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,IAAI,eAAe,KAAK;AAAA,QAC1B,MAAM,IAAI,SAAS,KAAK,IAAI,WAAW,IAAI,QAAQ,eAAe;AAAA,MACpE;AAAA,MAGA,MAAM,cAAc,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY;AAAA,MAC/D,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,IAAI,WAAW,IAAI,QAAQ,SAAS;AAAA,MACtE;AAAA,MAEA,IAAI,IAAI,YAAY;AAAA,QAClB,MAAM,IAAI,SAAS,IAAI,YAAY,IAAI,WAAW,IAAI,QAAQ,eAAe;AAAA,MAC/E;AAAA,MAGA,IACE,IAAI,SAAS,wBACb,IAAI,SAAS,cACb,IAAI,aAAa,aACjB,IAAI,eAAe,WACnB;AAAA,QACA,MAAM,kBAAkB,IAAI,cAAc,IAAI,WAAW;AAAA,QACzD,MAAM,IAAI,cACR,kBACA,iBACA,gFACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,iBAAiB,aAAa,OAAO,MAAM,YAAY,UAAU;AAAA,MACnE,IAAI,MAAM,QAAQ,SAAS,OAAO,KAAK,MAAM,QAAQ,SAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,cAAc,GAAG;AAAA,QAClH,MAAM,IAAI,cACR,iBACA,4CACA,qFACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,iBAAiB,OAAO;AAAA,MAC1B,MAAM,IAAI,cACR,kBACA,MAAM,SACN,+CACF;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,cACR,iBACA,gCACA,+CACF;AAAA;AAAA,OAMY,QAAU,CAAC,MAAc,SAAmC;AAAA,IAExE,MAAM,aAAa,SAAS;AAAA,IAC5B,IAAI,eAAuC,CAAC;AAAA,IAC5C,IAAI,sBAAsB,SAAS;AAAA,MACjC,WAAW,QAAQ,CAAC,OAAO,QAAQ;AAAA,QACjC,aAAa,OAAO;AAAA,OACrB;AAAA,IACH,EAAO,SAAI,YAAY;AAAA,MACrB,eAAe;AAAA,IACjB;AAAA,IAGA,MAAM,iBAAyC,CAAC;AAAA,IAChD,IAAI,KAAK;AAAA,MAAa,eAAe,oBAAoB,KAAK;AAAA,IAC9D,IAAI,KAAK;AAAA,MAAgB,eAAe,uBAAuB,KAAK;AAAA,IAEpE,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,WAAW,QAAQ;AAAA,SACnD;AAAA,MACH,SAAS;AAAA,QACP,aAAa,KAAK;AAAA,QAClB,gBAAgB;AAAA,WACb;AAAA,WACA;AAAA,MACL;AAAA,IACF,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI,SAAS,KAAK,MAAM,SAAS,KAAK,KAAK,eAAe;AAAA,MAClE;AAAA,MACA,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAElC,MAAM,aAAa,MAAM,YAAY;AAAA,MACrC,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,KAAK;AAAA,MACvC;AAAA,MACA,MAAM,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,IAC3C;AAAA,IAEA,OAAO,SAAS,KAAK;AAAA;AAAA,OAOjB,YAAW,GAAsB;AAAA,IACrC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,MACnD,OAAO,SAAS,OAAO;AAAA,MACvB,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,UAAS,CAAC,IAA6B;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,UAAU,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,MACzE,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,MAAwC;AAAA,IACzD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,aAAa;AAAA,QAClD,MAAM,KAAK,QAAQ;AAAA,QACnB,aAAa,KAAK,eAAe;AAAA,QACjC,SAAS,KAAK,WAAW;AAAA,QACzB,UAAU,KAAK,YAAY;AAAA,QAC3B,cAAc,KAAK,gBAAgB;AAAA,QACnC,aAAa,KAAK,eAAe;AAAA,QACjC,WAAW,KAAK,aAAa;AAAA,QAC7B,aAAa,KAAK,eAAe;AAAA,QACjC,cAAc,KAAK,gBAAgB;AAAA,QACnC,UAAU,KAAK,YAAY;AAAA,QAC3B,MAAM,KAAK,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAAY,MAAwC;AAAA,IACrE,IAAI;AAAA,MACF,MAAM,OAAgC;AAAA,QACpC,aAAa,KAAK,eAAe;AAAA,QACjC,UAAU,KAAK,YAAY;AAAA,QAC3B,cAAc,KAAK,gBAAgB;AAAA,QACnC,aAAa,KAAK,eAAe;AAAA,QACjC,WAAW,KAAK,aAAa;AAAA,QAC7B,aAAa,KAAK;AAAA,QAClB,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,QAAQ;AAAA,MACrB;AAAA,MACA,IAAI,KAAK,SAAS,WAAW;AAAA,QAC3B,KAAK,OAAO,KAAK;AAAA,MACnB;AAAA,MACA,MAAM,aAAkC,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,KAAK;AAAA,MACrE,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,aAAa,UAAU;AAAA,MAC9D,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAA2B;AAAA,IAC5C,IAAI;AAAA,MACF,MAAM,KAAK,IAAI,OAAO,aAAa,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,MAC3D,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OASpB,aAAY,CAAC,UAAsC;AAAA,IACvD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,QAAyC,eAAe,mBAAmB;AAAA,MACvG,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,SAAS;AAAA,MACrD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,WAAU,CAAC,UAAkB,aAAqB,MAA+F;AAAA,IACrJ,IAAI;AAAA,MAEF,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,SAAS,KAAK,MAAM,WAAW;AAAA,QAC/B,MAAM;AAAA,QAEN,SAAS;AAAA;AAAA,MAIX,IAAI,cAAc,QAAQ,WAAW,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,MACzE,IAAI;AAAA,MAEJ,IACE,WAAW,QACX,CAAC,MAAM,QAAQ,MAAM,KACrB,OAAO,WAAW,YAClB,UAAW,QACX;AAAA,QAEA,MAAM,OAAO;AAAA,QACb,cAAe,KAAK,QAA+B;AAAA,QACnD,IAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAAA,UAC7B,QAAQ,KAAK;AAAA,QACf;AAAA,MACF,EAAO,SAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,QAChC,QAAQ;AAAA,MACV;AAAA,MAGA,MAAM,UAAU,MAAM,KAAK,QAAiB,eAAe,qBAAqB;AAAA,QAC9E,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AAAA,MAGD,IAAI,YAAY;AAAA,MAChB,IAAI,SAAS,MAAM,SAAS,GAAG;AAAA,QAE7B,MAAM,cAAc,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,UAC9C,OAAO,KAAK,SAAS;AAAA,UACrB,gBAAgB,KAAK,kBAAkB,KAAK,mBAAmB;AAAA,UAC/D,MAAO,KAAK,QAA+B,QAAQ,OAAO,QAAQ,CAAC;AAAA,UACnE,cAAc,KAAK;AAAA,UACnB,gBAAgB,KAAK;AAAA,UACrB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,QACjB,EAAE;AAAA,QAEF,MAAM,6BAA6B,YAAY,OAC7C,UAAQ,KAAK,mBAAmB,SAClC,EAAE;AAAA,QAEF,MAAM,KAAK,QAAQ,yBAAyB,OAAO,QAAQ,EAAE,gBAAgB;AAAA,UAC3E,QAAQ;AAAA,UACR,MAAM,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC;AAAA,QAC7C,CAAC;AAAA,QACD,YAAY,YAAY;AAAA,QAExB,OAAO,KAAK,SAAS,WAAW,2BAA2B;AAAA,MAC7D;AAAA,MAEA,OAAO,KAAK,SAAS,UAAU;AAAA,MAC/B,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,iBAAgB,CAAC,WAA2C;AAAA,IAChE,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,QAAiD,yBAAyB,iBAAiB;AAAA,MACvH,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,SAAS;AAAA,MACrD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,cAAa,CAAC,WAAmB,WAAkC;AAAA,IACvE,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ,yBAAyB,aAAa,EAAE,QAAQ,SAAS,CAAC;AAAA,MAC7E,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,gBAAe,CAAC,UAAyC;AAAA,IAC7D,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,QAAgC,qCAAqC,UAAU;AAAA,MAC3G,OAAO,SAAS;AAAA,MAChB,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,cAAa,CAAC,cAA2C;AAAA,IAC7D,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAoB,4BAA4B,cAAc;AAAA,MAChF,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,iBAAgB,CAAC,UAAkB,MAOjB;AAAA,IACtB,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAoB,4BAA4B;AAAA,QAChE,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,UAAU,SAAS,UAAU,EAAE;AAAA,UAC/B,MAAM,KAAK;AAAA,UACX,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK;AAAA,UACjB,WAAW,KAAK;AAAA,UAChB,MAAM,KAAK;AAAA,UACX,UAAU,KAAK;AAAA,QACjB,CAAC;AAAA,MACH,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,iBAAgB,CAAC,cAAqC;AAAA,IAC1D,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ,4BAA4B,gBAAgB,EAAE,QAAQ,SAAS,CAAC;AAAA,MACnF,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAUpB,kBAAiB,CAAC,UAAkB,WAAmB,cAAsB,QAMtD;AAAA,IAC3B,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAyB,eAAe,qBAAqB;AAAA,QAC7E,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,WAAW,SAAS,WAAW,EAAE;AAAA,UACjC,cAAc,SAAS,cAAc,EAAE;AAAA,UACvC,QAAQ;AAAA,YACN,eAAe,QAAQ,iBAAiB;AAAA,YACxC,aAAa,QAAQ,eAAe;AAAA,YACpC,UAAU,QAAQ;AAAA,YAClB,OAAO,QAAQ;AAAA,eACX,QAAQ,YAAY,EAAE,cAAc,EAAE,iBAAiB,OAAO,UAAU,EAAE,IAAI,CAAC;AAAA,UACrF;AAAA,UACA,eAAe;AAAA,QACjB,CAAC;AAAA,MACH,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,sBAAqB,CAAC,OAAwC;AAAA,IAClE,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,KAAK,QAAiC,qBAAqB,OAAO;AAAA,MAGpF,MAAM,KAAK,IAAI;AAAA,MACf,OAAO;AAAA,WACF;AAAA,QACH,OAAO,MAAM;AAAA,QACb,iBAAiB,OAAO,IAAI,aAAa,WAAW,IAAI,WAAW;AAAA,MACrE;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,uBAAsB,CAAC,OAS1B;AAAA,IACD,IAAI;AAAA,MAGF,MAAM,MAAM,MAAM,KAAK,QAOpB,qBAAqB,OAAO;AAAA,MAE/B,MAAM,WAAW,MAAM,KAAK,QAA2F,qBAAqB,gBAAgB;AAAA,MAE5J,MAAM,SAAS,MAAM,KAAK,UAAU,OAAO,IAAI,YAAY,EAAE,CAAC;AAAA,MAE9D,MAAM,YAAY,MAAM,KAAK,QAM1B,qBAAqB,cAAc,EAAE,MAAM,OAAO,EAAE,QAAQ,CAAC,EAAmF,EAAE;AAAA,MAGrJ,MAAM,cAAc,UAAU,OAAO,UAAU,OAAO,SAAS;AAAA,MAC/D,MAAM,UAAU,aAAa,MAAM;AAAA,MAKnC,MAAM,oBAAoB,SAAS,eAAe;AAAA,MAClD,MAAM,qBAAqB,SAAS,YAAY;AAAA,MAEhD,OAAO;AAAA,QACL,KAAK;AAAA,UACH,IAAI,IAAI,MAAM;AAAA,UACd,UAAU,IAAI,YAAY;AAAA,UAC1B,QAAQ,IAAI,UAAU;AAAA,UACtB,QAAQ,IAAI;AAAA,QACd;AAAA,QACA;AAAA,QACA,WAAW,IAAI;AAAA,QACf,qBAAqB,IAAI;AAAA,QACzB,kBAAkB,MAAM,QAAQ,SAAS,WAAW,IAChD,SAAS,YAAY,IAAI,OAAM,OAAO,EAAE,UAAU,WAAW,EAAE,QAAQ,CAAE,IACzE;AAAA,QACJ;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,WAAU,CAAC,SAAqD;AAAA,IACpE,MAAM,SAAS,UAAU,IAAI,gBAAgB,OAAiC,EAAE,SAAS,IAAI;AAAA,IAC7F,MAAM,WAAW,MAAM,KAAK,QAA6C,cAAc,SAAS,IAAI,WAAW,IAAI;AAAA,IACnH,OAAO,SAAS,QAAQ,CAAC;AAAA;AAAA,OAGrB,SAAQ,CAAC,IAA8B;AAAA,IAC3C,OAAO,KAAK,QAAQ,eAAe,IAAI;AAAA;AAAA,OAGnC,cAAa,CAAC,UAAoD;AAAA,IACtE,OAAO,KAAK,QAAQ,gBAAgB,yBAAyB;AAAA;AAAA,OAOzD,WAAU,CAAC,SAA0H;AAAA,IACzI,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,WAAW;AAAA,QAChD,OAAO,SAAS;AAAA,QAChB,QAAQ,SAAS;AAAA,QACjB,MAAM,SAAS;AAAA,QACf,QAAQ,SAAS;AAAA,MACnB,CAAC;AAAA,MACD,OAAO;AAAA,QACL,MAAM,SAAS,OAAO;AAAA,QACtB,OAAO,SAAS,OAAO;AAAA,MACzB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,SAAQ,CAAC,IAA4B;AAAA,IACzC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,SAAS;AAAA,QAC9C,IAAI,SAAS,IAAI,EAAE;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,MAAwC;AAAA,IACxD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QACjD,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,aAAa,KAAK,eAAe;AAAA,QACjC,cAAc,KAAK;AAAA,QACnB,OAAO,KAAK,SAAS;AAAA,QACrB,UAAU,KAAK,YAAY;AAAA,QAC3B,gBAAgB,KAAK,kBAAkB;AAAA,QACvC,cAAc,KAAK,gBAAgB;AAAA,QACnC,iBAAiB,KAAK,mBAAmB;AAAA,QACzC,QAAQ,KAAK,UAAU;AAAA,QACvB,UAAU,KAAK,YAAY;AAAA,QAC3B,UAAU,KAAK,YAAY;AAAA,QAC3B,MAAM,KAAK,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAAY,MAAwC;AAAA,IACpE,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QACjD,IAAI,SAAS,IAAI,EAAE;AAAA,QACnB,MAAM;AAAA,UACJ,MAAM,KAAK,QAAQ;AAAA,UACnB,aAAa,KAAK,eAAe;AAAA,UACjC,cAAc,KAAK,gBAAgB;AAAA,UACnC,OAAO,KAAK,SAAS;AAAA,UACrB,UAAU,KAAK,YAAY;AAAA,UAC3B,gBAAgB,KAAK,kBAAkB;AAAA,UACvC,cAAc,KAAK,gBAAgB;AAAA,UACnC,iBAAiB,KAAK,mBAAmB;AAAA,UACzC,QAAQ,KAAK,UAAU;AAAA,UACvB,UAAU,KAAK,YAAY;AAAA,UAC3B,UAAU,KAAK,YAAY;AAAA,UAC3B,MAAM,KAAK,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAA2B;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QAChC,IAAI,SAAS,IAAI,EAAE;AAAA,MACrB,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,eAAc,CAAC,SAA8F;AAAA,IACjH,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,WAAW,eAAe;AAAA,QACxD,iBAAiB;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,aAAa,SAAS;AAAA,MAE5B,MAAM,SAAS,SAAS,UAAU;AAAA,MAClC,MAAM,QAAQ,SAAS,SAAS,WAAW;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAK;AAAA,QAC7C,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAAgC;AAAA,IACjD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,WAAW,aAAa;AAAA,QACtD,MAAM;AAAA,MACR,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,cAAa,CACjB,UACA,OACA,SACgC;AAAA,IAChC,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAA+B,eAAe,4BAA4B;AAAA,QAC1F,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,EAAE,OAAO,OAAO,SAAS,MAAM,CAAC;AAAA,MACvD,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,oBAAmB,CACvB,UACA,OACA,SACmB;AAAA,IACnB,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,uBAAuB,2BAA2B;AAAA,MACrF,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,aAAa,KAAK;AAAA,QAClB,gBAAgB;AAAA,QAChB,QAAU;AAAA,MACZ;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,UAAU,QAAQ,CAAC;AAAA,IAC5C,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI,SAAS,KAAK,MAAM,SAAS,KAAK,KAAK,eAAe;AAAA,MAClE;AAAA,MACA,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAElC,MAAM,aAAa,MAAM,YAAY;AAAA,MACrC,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,KAAK;AAAA,MACvC;AAAA,MACA,MAAM,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,IAC3C;AAAA,IAEA,OAAO;AAAA;AAAA,OAOH,cAAa,CAAC,SAA4G;AAAA,IAC9H,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,cAAc;AAAA,QAC5D,UAAU,SAAS;AAAA,QACnB,iBAAiB;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,UAAU,SAAS;AAAA,MAEzB,MAAM,SAAS,SAAS,UAAU;AAAA,MAClC,MAAM,QAAQ,SAAS,SAAS,QAAQ;AAAA,MACxC,OAAO;AAAA,QACL,MAAM,QAAQ,MAAM,QAAQ,SAAS,KAAK;AAAA,QAC1C,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAA+B;AAAA,IAC/C,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,YAAY;AAAA,QAC1D;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,EAI1B,qBAAqB,GAAuB;AAAA,IAC1C,OAAO,KAAK;AAAA;AAAA,EAGd,eAAe,GAAuB;AAAA,IACpC,OAAO,KAAK;AAAA;AAAA,OAGR,aAAY,CAAC,IAAyC;AAAA,IAC1D,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,aAAa;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAG5B;AAKO,SAAS,YAAY,GAAqB;AAAA,EAC/C,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,SAAS,UAAU;AAAA,IACzB,IAAI,CAAC,QAAQ;AAAA,MACX,MAAM,IAAI;AAAA,IACZ;AAAA,IAEA,MAAM,SAAS,WAAW;AAAA,IAC1B,YAAY,IAAI,iBAAiB;AAAA,MAC/B,YAAY;AAAA,MACZ,WAAW,OAAO;AAAA,MAClB,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,cAAc,GAAS;AAAA,EACrC,YAAY;AAAA;AAGd,eAAsB,cAAc,CAAC,QAAgB,UAAoC;AAAA,EAEvF,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,MAC5D,SAAS,EAAE,aAAa,OAAO;AAAA,IACjC,CAAC;AAAA,IACD,OAAO,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAQX,eAAsB,kBAAkB,CAAC,QAAgB,UAA2D;AAAA,EAClH,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,MAC5D,SAAS,EAAE,aAAa,OAAO;AAAA,IACjC,CAAC;AAAA,IACD,IAAI,CAAC,SAAS;AAAA,MAAI,OAAO,CAAC;AAAA,IAC1B,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,OAAO,KAAK,QAAQ,CAAC;AAAA,IACrB,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAQZ,eAAsB,eAAe,CAAC,QAAgB,UAAkB,OAA6E;AAAA,EACnJ,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,2BAA2B;AAAA,MACzD,SAAS,EAAE,aAAa,QAAQ,qBAAqB,MAAM;AAAA,IAC7D,CAAC;AAAA,IACD,IAAI,CAAC,SAAS;AAAA,MAAI,OAAO,CAAC;AAAA,IAC1B,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,OAAO,KAAK,cAAc,CAAC;AAAA,IAC3B,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAAA,IAnER,YAAqC;AAAA;AAAA,EA9vBzC;AAAA,EACA;AAAA;;;ACLA,oBAAS;AACT;AACA,yBAAS;AACT,iBAAS;AACT;;;ACCA;AACA;AAPA;AACA;AACA;AACA;AACA,uBAAS;AACT,iBAAS;;;ACLT;AAQO,SAAS,WAAW,CAAC,SAAuC;AAAA,EACjE,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAGrB,MAAM,aAAa,QAAQ,SAAS,QAAQ,OAAO,KAAK,IAAI;AAAA,EAE5D,MAAM,UAAU,QAAQ,KAAK;AAAA,EAE7B,OAAO,QAAQ,YAAY,QAAQ,QAAQ,IAAI;AAAA;AAAA;AAG1C,MAAM,gBAAgB;AAAA,EACP;AAAA,EAApB,WAAW,CAAS,QAAsB;AAAA,IAAtB;AAAA;AAAA,EAEpB,MAAM,CAAC,MAAqB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,IAC3C,EAAO;AAAA,MACL,KAAK,YAAY,IAAI;AAAA;AAAA;AAAA,EAIjB,WAAW,CAAC,MAAqB;AAAA,IACvC,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MACvB,KAAK,YAAY,IAAI;AAAA,IACvB,EAAO,SAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,MAC3C,KAAK,aAAa,IAA+B;AAAA,IACnD,EAAO;AAAA,MACL,QAAQ,IAAI,IAAI;AAAA;AAAA;AAAA,EAIZ,WAAW,CAAC,MAAuB;AAAA,IACzC,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB,QAAQ,IAAI,MAAM,KAAK,YAAY,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,IAGA,MAAM,YAAY,KAAK;AAAA,IACvB,IAAI,CAAC,aAAa,OAAO,cAAc,UAAU;AAAA,MAC/C,KAAK,QAAQ,UAAQ;AAAA,QAAE,QAAQ,IAAI,KAAK,OAAO,IAAI,GAAG;AAAA,OAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,OAAO,KAAK,SAAS;AAAA,IAGlC,MAAM,kBAAkB,CAAC,QAAyB;AAAA,MAChD,IAAI,QAAQ,QAAQ,QAAQ;AAAA,QAAW,OAAO;AAAA,MAC9C,IAAI,OAAO,QAAQ;AAAA,QAAU,OAAO,KAAK,UAAU,GAAG;AAAA,MACtD,IAAI,OAAO,QAAQ;AAAA,QAAU,OAAO;AAAA,MACpC,IAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAAa,OAAO,QAAQ,UAAU;AAAA,QAClF,OAAO,IAAI,SAAS;AAAA,MACtB;AAAA,MACA,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,IAI3B,MAAM,SAAiC,CAAC;AAAA,IACxC,KAAK,QAAQ,SAAO;AAAA,MAClB,OAAO,OAAO,KAAK,IACjB,IAAI,QACJ,GAAG,KAAK,IAAI,UAAQ,gBAAiB,KAAiC,IAAI,EAAE,MAAM,CACpF;AAAA,KACD;AAAA,IAGD,MAAM,SAAS,KAAK,IAAI,SAAO,MAAM,KAAK,IAAI,YAAY,EAAE,OAAO,OAAO,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,IACjG,QAAQ,IAAI,MAAM;AAAA,IAClB,QAAQ,IAAI,KAAK,IAAI,SAAO,IAAI,OAAO,OAAO,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IAGrE,KAAK,QAAQ,UAAQ;AAAA,MACnB,MAAM,MAAM,KAAK,IAAI,SAAO;AAAA,QAC1B,MAAM,QAAQ,gBAAiB,KAAiC,IAAI;AAAA,QACpE,MAAM,QAAQ,OAAO,QAAQ;AAAA,QAC7B,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,GAAG,KAAK;AAAA,OAC1C,EAAE,KAAK,IAAI;AAAA,MACZ,QAAQ,IAAI,GAAG;AAAA,KAChB;AAAA,IAED,QAAQ,IAAI,MAAM,KAAK;AAAA,EAAK,OAAO,KAAK,MAAM,aAAa,CAAC;AAAA;AAAA,EAGtD,YAAY,CAAC,MAAqC;AAAA,IACxD,MAAM,eAAe,KAAK,IAAI,GAAG,OAAO,KAAK,IAAI,EAAE,IAAI,OAAK,EAAE,MAAM,CAAC;AAAA,IAErE,OAAO,QAAQ,IAAI,EAAE,QAAQ,EAAE,KAAK,WAAW;AAAA,MAC7C,MAAM,eAAe,MAAM,KAAK,IAAI,OAAO,YAAY,CAAC;AAAA,MACxD,IAAI;AAAA,MAEJ,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,QACzC,iBAAiB;AAAA,MACnB,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,QACpC,iBAAiB,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,MAChD,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,QACpC,iBAAiB;AAAA,MACnB,EAAO,SAAI,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,UAAU;AAAA,QAC/F,iBAAiB,MAAM,SAAS;AAAA,MAClC,EAAO;AAAA,QACL,iBAAiB,KAAK,UAAU,KAAK;AAAA;AAAA,MAGvC,QAAQ,IAAI,GAAG,iBAAiB,gBAAgB;AAAA,KACjD;AAAA;AAAA,EAGH,OAAO,CAAC,SAAuB;AAAA,IAC7B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA,IACjE,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,MAAM,KAAI,SAAS,CAAC;AAAA;AAAA;AAAA,EAI1C,KAAK,CAAC,SAAiB,MAAe,iBAAgC;AAAA,IACpE,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,MAAM,SAAkC,EAAE,SAAS,OAAO,OAAO,QAAQ;AAAA,MACzE,IAAI;AAAA,QAAM,OAAO,OAAO;AAAA,MACxB,IAAI;AAAA,QAAiB,OAAO,kBAAkB;AAAA,MAC9C,QAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,IAC7C,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,IAAI,KAAI,SAAS,CAAC;AAAA;AAAA;AAAA,EAIxC,IAAI,CAAC,SAAuB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,MAAM,KAAK,KAAI,SAAS,CAAC;AAAA,IACvC;AAAA;AAAA,EAGF,IAAI,CAAC,SAAuB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA,IAC3D,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,OAAO,KAAI,SAAS,CAAC;AAAA;AAAA;AAG7C;AASO,SAAS,aAAa,CAAC,MAAc,QAA0B;AAAA,EACpE,IAAI,QAAQ;AAAA,IAEV,MAAM,OAAO,MAAc;AAAA,MAAG;AAAA;AAAA,IAC9B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAGA,MAAM,QAAQ,YAA8B;AAAA,IAC1C,QAAQ,SAAS,QAAQ,MAAa;AAAA,IACtC,OAAO,IAAI,IAAI,EAAE,MAAM;AAAA;AAAA,EAGzB,OAAO,EAAE,MAAM;AAAA;;;ADtKjB;;;AEEA;AAiEO,SAAS,gBAAgB,GAAW;AAAA,EACzC,OAAO,OAAO,WAAW;AAAA;AAM3B,eAAsB,eAAe,CACnC,UACA,UACkC;AAAA,EAClC,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,IAC5D,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU;AAAA,MACnB;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,iBACR,eACA,wCAAwC,OAAO,SAAS,MAAM,IAAI,MAAM,SAC1E;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO;AAAA;AAMT,eAAsB,cAAc,CAClC,UACA,UACoC;AAAA,EACpC,MAAM,WAAW,MAAM,MACrB,GAAG,sCAAsC,mBAAmB,QAAQ,GACtE;AAAA,EAEA,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,iBACR,eACA,iCAAiC,OAAO,SAAS,MAAM,IAAI,MAAM,SACnE;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO;AAAA;AAQT,eAAsB,WAAW,CAAC,KAA4B;AAAA,EAE5D,IAAI,QAAQ,IAAI,uBAAuB,QAAQ;AAAA,IAC7C,QAAQ,IAAI,YAAY,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EAGA,IAAI;AAAA,IACF,QAAQ,SAAS,SAAS,MAAa;AAAA,IACvC,MAAM,KAAK,GAAG;AAAA,IACd,MAAM;AAAA,IAGN,MAAM,IAAI,iBACR,uBACA,uDAAuD,KACzD;AAAA;AAAA;AAOJ,SAAS,KAAK,CAAC,IAA2B;AAAA,EACxC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA;AAUzD,eAAsB,kBAAkB,CACtC,SACA,gBAC4B;AAAA,EAC5B;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,eAAe;AAAA,IACf,kBAAkB;AAAA,MAChB;AAAA,EAGJ,MAAM,WAAW,iBAAiB;AAAA,EAGlC,iBAAiB,wCAAwC;AAAA,EACzD,MAAM,eAAe,MAAM,gBAAgB,UAAU,QAAQ;AAAA,EAC7D,QAAQ,YAAY;AAAA,EAGpB,IAAI,CAAC,iBAAiB;AAAA,IACpB,iBAAiB,uCAAuC;AAAA,IACxD,IAAI;AAAA,MACF,MAAM,YAAY,OAAO;AAAA,MACzB,OAAO,OAAO;AAAA,MAGd,IAAI,iBAAiB,oBAAoB,MAAM,SAAS,uBAAuB;AAAA,QAC7E,iBAAiB,MAAM,OAAO;AAAA,MAChC,EAAO;AAAA,QACL,MAAM;AAAA;AAAA;AAAA,EAGZ;AAAA,EAIA,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,kCAAkC;AAAA,EAC9C,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAO,OAAO;AAAA,EAC1B,QAAQ,IAAI,EAAE;AAAA,EAGd,iBAAiB,uCAAuC;AAAA,EACxD,MAAM,YAAY,KAAK,IAAI;AAAA,EAE3B,OAAO,KAAK,IAAI,IAAI,YAAY,SAAS;AAAA,IACvC,MAAM,MAAM,YAAY;AAAA,IAExB,MAAM,SAAS,MAAM,eAAe,UAAU,QAAQ;AAAA,IAEtD,QAAQ,OAAO;AAAA,WACR;AAAA,QAEH;AAAA,WAEG;AAAA,QAEH,IACE,CAAC,OAAO,UACR,CAAC,OAAO,eACR,CAAC,OAAO,iBACR,CAAC,OAAO,kBACR,CAAC,OAAO,kBACR;AAAA,UACA,MAAM,IAAI,iBACR,uBACA,0CACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,QAAQ,OAAO;AAAA,UACf,aAAa,OAAO;AAAA,UACpB,eAAe,OAAO;AAAA,UACtB,gBAAgB,OAAO;AAAA,UACvB,kBAAkB,OAAO;AAAA,UACzB,WAAW,OAAO;AAAA,QACpB;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,gBACA,mDACF;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,eACA,OAAO,SAAS,oCAClB;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,mBACA,mDACF;AAAA;AAAA,QAGA,MAAM,IAAI,iBACR,kBACA,0BAA0B,OAAO,OAAO,MAAM,CAChD;AAAA;AAAA,EAEN;AAAA,EAGA,MAAM,IAAI,iBACR,gBACA,qEACF;AAAA;AAAA;AAkBK,MAAM,yBAAyB,MAAM;AAAA,EAC1C;AAAA,EAEA,WAAW,CAAC,MAA4B,SAAiB;AAAA,IACvD,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA;AAAA,EAMd,aAAa,GAAW;AAAA,IACtB,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,WACA;AAAA,QACH,OAAO;AAAA;AAAA,QAEP,OAAO;AAAA;AAAA;AAGf;;;AC7UA,uBAAS,6BAAY,gCAAc,6BAAe;AAClD,iBAAS;AA0CT,SAAS,cAAc,CAAC,OAA6B;AAAA,EACnD,MAAM,OAAmB,CAAC;AAAA,EAC1B,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,IAAI,CAAC,QAAQ,WAAW,GAAG,KAAK,CAAC,QAAQ,SAAS,GAAG;AAAA,MAAG;AAAA,IAExD,IAAI,iBAAiB,KAAK,OAAO;AAAA,MAAG;AAAA,IACpC,MAAM,QAAQ,QACX,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EACT,IAAI,OAAK,EAAE,KAAK,CAAC;AAAA,IACpB,KAAK,KAAK,KAAK;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,gBAAgB,CAAC,OAA+C;AAAA,EACvE,OAAO,SAAS,MAAM,SAAS,IAAI,QAAQ;AAAA;AAG7C,SAAS,WAAW,CAAC,SAAmB,MAA0B;AAAA,EAChE,MAAM,YAAY,QAAQ,IAAI,OAAK,IAAI,OAAO,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAAA,EACpE,MAAM,QAAQ;AAAA,IACZ,KAAK,QAAQ,KAAK,KAAK;AAAA,IACvB,KAAK,UAAU,KAAK,KAAK;AAAA,IACzB,GAAG,KAAK,IAAI,OAAK,KAAK,EAAE,KAAK,KAAK,KAAK;AAAA,EACzC;AAAA,EACA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAOxB,IAAM,cAAc;AACpB,IAAM,eAAe;AAAA;AAEd,MAAM,gBAAgB;AAAA,EACnB,UAAyB,CAAC;AAAA,EAC1B,WAA2B,CAAC;AAAA,EAC5B,cAAiC,CAAC;AAAA,EAClC,eAAmC,CAAC;AAAA,EACpC;AAAA,EAEA,WAAW,CAAC,UAAkB;AAAA,IACpC,KAAK,WAAW;AAAA;AAAA,SAGX,IAAI,CAAC,aAAuC;AAAA,IACjD,MAAM,OAAO,eAAe,QAAQ,IAAI;AAAA,IACxC,MAAM,UAAU,MAAK,QAAQ,IAAI,GAAG,WAAW;AAAA,IAC/C,MAAM,WAAW,MAAK,SAAS,YAAY;AAAA,IAE3C,MAAM,MAAM,IAAI,gBAAgB,QAAQ;AAAA,IAExC,IAAI,YAAW,QAAQ,GAAG;AAAA,MACxB,MAAM,UAAU,cAAa,UAAU,OAAO;AAAA,MAC9C,IAAI,MAAM,OAAO;AAAA,IACnB;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,IAAI,GAAS;AAAA,IACX,MAAM,UAAU,MAAK,KAAK,UAAU,IAAI;AAAA,IACxC,IAAI,CAAC,YAAW,OAAO,GAAG;AAAA,MACxB,WAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,IACxC;AAAA,IACA,eAAc,KAAK,UAAU,KAAK,OAAO,GAAG,OAAO;AAAA;AAAA,EAOrD,mBAAmB,CAAC,MAAc,MAAc,SAAuB;AAAA,IACrE,MAAM,WAAW,KAAK,QAAQ,KAAK,OAAK,EAAE,SAAS,QAAQ,EAAE,SAAS,IAAI;AAAA,IAC1E,IAAI,UAAU;AAAA,MACZ,SAAS,UAAU;AAAA,MACnB;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,KAAK,EAAE,MAAM,MAAM,SAAS,QAAQ,aAAa,CAAC;AAAA;AAAA,EAGjE,kBAAkB,CAAC,MAAc,YAAoB,SAAuB;AAAA,IAC1E,MAAM,QAAQ,KAAK,QAAQ,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,IACpD,IAAI,OAAO;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,MAAM,UAAU;AAAA,MAChB,MAAM,SAAS;AAAA,IACjB;AAAA;AAAA,EAGF,oBAAoB,GAAkB;AAAA,IACpC,OAAO,KAAK,QAAQ,OAAO,OAAK,EAAE,WAAW,YAAY;AAAA;AAAA,EAG3D,kBAAkB,GAAkB;AAAA,IAClC,OAAO,KAAK,QAAQ,OAAO,OAAK,EAAE,WAAW,UAAU;AAAA;AAAA,EAOzD,oBAAoB,CAAC,MAAc,MAAc,OAAqB;AAAA,IACpE,MAAM,WAAW,KAAK,SAAS,KAAK,OAAK,EAAE,SAAS,QAAQ,EAAE,SAAS,IAAI;AAAA,IAC3E,IAAI,UAAU;AAAA,MACZ,SAAS,QAAQ;AAAA,MACjB;AAAA,IACF;AAAA,IACA,KAAK,SAAS,KAAK,EAAE,MAAM,MAAM,OAAO,QAAQ,aAAa,CAAC;AAAA;AAAA,EAGhE,mBAAmB,CAAC,MAAc,YAAoB,UAAwB;AAAA,IAC5E,MAAM,QAAQ,KAAK,SAAS,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,IACrD,IAAI,OAAO;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,MAAM,WAAW;AAAA,MACjB,MAAM,SAAS;AAAA,IACjB;AAAA;AAAA,EAOF,aAAa,CAAC,MAAc,eAAuB,YAAoB,UAAwB;AAAA,IAC7F,MAAM,WAAW,KAAK,YAAY,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,IAC3D,IAAI,UAAU;AAAA,MACZ,SAAS,gBAAgB;AAAA,MACzB,SAAS,aAAa;AAAA,MACtB,SAAS,WAAW;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB;AAAA,IACF;AAAA,IACA,KAAK,YAAY,KAAK,EAAE,MAAM,eAAe,YAAY,UAAU,QAAQ,WAAW,CAAC;AAAA;AAAA,EAOzF,oBAAoB,CAAC,WAAmB,KAAa,QAAsB;AAAA,IACzE,MAAM,WAAW,KAAK,aAAa,KAAK,OAAK,EAAE,cAAc,SAAS;AAAA,IACtE,IAAI,UAAU;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,SAAS,SAAS;AAAA,MAClB;AAAA,IACF;AAAA,IACA,KAAK,aAAa,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;AAAA;AAAA,EAOnD,UAAU,GAAqF;AAAA,IAC7F,OAAO;AAAA,MACL,SAAS,KAAK,QAAQ;AAAA,MACtB,UAAU,KAAK,SAAS;AAAA,MACxB,aAAa,KAAK,YAAY;AAAA,MAC9B,YAAY,KAAK,aAAa,IAAI,OAAK,EAAE,SAAS;AAAA,IACpD;AAAA;AAAA,EAOM,MAAM,GAAW;AAAA,IACvB,MAAM,MAAM,IAAI,KAAK,EAAE,YAAY;AAAA,IACnC,MAAM,WAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA,sBAAsB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YACE,CAAC,QAAQ,QAAQ,mBAAmB,eAAe,WAAW,QAAQ,GACtE,KAAK,QAAQ,IAAI,OAAK;AAAA,QACpB,EAAE;AAAA,QACF,OAAO,EAAE,IAAI;AAAA,QACb,EAAE;AAAA,QACF,EAAE,cAAc;AAAA,QAChB,EAAE,WAAW;AAAA,QACb,EAAE;AAAA,MACJ,CAAC,CACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,YACE,CAAC,QAAQ,QAAQ,SAAS,eAAe,aAAa,QAAQ,GAC9D,KAAK,SAAS,IAAI,OAAK;AAAA,QACrB,EAAE;AAAA,QACF,EAAE;AAAA,QACF,OAAO,EAAE,KAAK;AAAA,QACd,EAAE,cAAc;AAAA,QAChB,EAAE,YAAY;AAAA,QACd,EAAE;AAAA,MACJ,CAAC,CACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,YACE,CAAC,QAAQ,kBAAkB,eAAe,aAAa,QAAQ,GAC/D,KAAK,YAAY,IAAI,OAAK;AAAA,QACxB,EAAE;AAAA,QACF,OAAO,EAAE,aAAa;AAAA,QACtB,EAAE,cAAc;AAAA,QAChB,EAAE,YAAY;AAAA,QACd,EAAE;AAAA,MACJ,CAAC,CACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,YACE,CAAC,aAAa,WAAW,QAAQ,GACjC,KAAK,aAAa,IAAI,OAAK;AAAA,QACzB,EAAE;AAAA,QACF,EAAE;AAAA,QACF,EAAE;AAAA,MACJ,CAAC,CACH;AAAA,MACA;AAAA,IACF;AAAA,IAEA,OAAO,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,EAGnB,KAAK,CAAC,SAAuB;AAAA,IACnC,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,IAEhC,IAAI,iBAAiF;AAAA,IACrF,IAAI,eAAyB,CAAC;AAAA,IAE9B,MAAM,eAAe,MAAY;AAAA,MAC/B,IAAI,CAAC,kBAAkB,aAAa,WAAW;AAAA,QAAG;AAAA,MAElD,MAAM,OAAO,eAAe,YAAY;AAAA,MAExC,MAAM,WAAW,KAAK,MAAM,CAAC;AAAA,MAE7B,QAAQ;AAAA,aACD;AAAA,UACH,WAAW,OAAO,UAAU;AAAA,YAC1B,OAAO,MAAM,SAAS,SAAS,KAAK,KAAK,MAAM;AAAA,YAC/C,IAAI,SAAS,aAAa,YAAY,aAAa,YAAY,WAAW;AAAA,cACxE,KAAK,QAAQ,KAAK;AAAA,gBAChB;AAAA,gBACA,MAAM,SAAS,SAAS,EAAE,KAAK;AAAA,gBAC/B;AAAA,gBACA,YAAY,iBAAiB,GAAG;AAAA,gBAChC,SAAS,iBAAiB,GAAG;AAAA,gBAC7B,QAAS,iBAAiB,EAAE,KAA2C;AAAA,cACzE,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA;AAAA,aACG;AAAA,UACH,WAAW,OAAO,UAAU;AAAA,YAC1B,OAAO,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM;AAAA,YAC9C,IAAI,SAAS,aAAa,SAAS,aAAa,aAAa,WAAW;AAAA,cACtE,KAAK,SAAS,KAAK;AAAA,gBACjB;AAAA,gBACA;AAAA,gBACA,OAAO,SAAS,UAAU,EAAE,KAAK;AAAA,gBACjC,YAAY,iBAAiB,GAAG;AAAA,gBAChC,UAAU,iBAAiB,IAAI;AAAA,gBAC/B,QAAS,iBAAiB,EAAE,KAA4C;AAAA,cAC1E,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA;AAAA,aACG;AAAA,UACH,WAAW,OAAO,UAAU;AAAA,YAC1B,OAAO,MAAM,OAAO,KAAK,MAAM,MAAM;AAAA,YACrC,IAAI,SAAS,aAAa,UAAU,WAAW;AAAA,cAC7C,KAAK,YAAY,KAAK;AAAA,gBACpB;AAAA,gBACA,eAAe,SAAS,OAAO,EAAE,KAAK;AAAA,gBACtC,YAAY,iBAAiB,GAAG;AAAA,gBAChC,UAAU,iBAAiB,IAAI;AAAA,gBAC/B,QAAS,iBAAiB,EAAE,KAA+C;AAAA,cAC7E,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA;AAAA,aACG;AAAA,UACH,WAAW,OAAO,UAAU;AAAA,YAC1B,OAAO,WAAW,KAAK,UAAU;AAAA,YACjC,IAAI,cAAc,aAAa,QAAQ,aAAa,WAAW,WAAW;AAAA,cACxE,KAAK,aAAa,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;AAAA,YACnD;AAAA,UACF;AAAA,UACA;AAAA;AAAA,MAGJ,eAAe,CAAC;AAAA;AAAA,IAGlB,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,UAAU,KAAK,KAAK;AAAA,MAE1B,IAAI,YAAY,eAAe;AAAA,QAC7B,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MACA,IAAI,YAAY,gBAAgB;AAAA,QAC9B,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MACA,IAAI,YAAY,mBAAmB;AAAA,QACjC,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MACA,IAAI,YAAY,yBAAyB;AAAA,QACvC,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,IAAI,QAAQ,WAAW,KAAK,KAAK,mBAAmB,QAAQ,YAAY,yBAAyB;AAAA,QAC/F,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,IAAI,kBAAkB,QAAQ,WAAW,GAAG,GAAG;AAAA,QAC7C,aAAa,KAAK,OAAO;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,aAAa;AAAA;AAEjB;;;AC/XA;AACA,oBAAS;;;ACDT,sCAAsB;AACtB,iBAAS;AA8CT,IAAM,uBAAuB;AAG7B,IAAM,sBAAsB;AAG5B,IAAM,iBAAiB;AAGvB,IAAM,4BAA4B;AAGlC,IAAM,mBAAmB;AAGzB,IAAM,uBAAuB;AAM7B,SAAS,OAAO,CACd,KACA,YACA,aACA,UACA,eAAe,GACL;AAAA,EACV,IAAI,gBAAgB;AAAA,IAAU,OAAO,CAAC;AAAA,EAEtC,MAAM,QAAkB,CAAC;AAAA,EAEzB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,YAAY,GAAG;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,MAAK,KAAK,KAAK;AAAA,IAEhC,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,OAAO,SAAS,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN;AAAA;AAAA,IAGF,IAAI,KAAK,YAAY,GAAG;AAAA,MACtB,IAAI,YAAY,SAAS,KAAK;AAAA,QAAG;AAAA,MACjC,MAAM,KAAK,GAAG,QAAQ,UAAU,YAAY,aAAa,UAAU,eAAe,CAAC,CAAC;AAAA,IACtF,EAAO,SAAI,KAAK,OAAO,GAAG;AAAA,MACxB,MAAM,MAAM,QAAQ,KAAK,EAAE,YAAY;AAAA,MACvC,IAAI,WAAW,SAAS,GAAG,GAAG;AAAA,QAC5B,MAAM,KAAK,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAOT,SAAS,cAAc,CAAC,UAAkB,cAA0C;AAAA,EAClF,MAAM,UAA8B,CAAC;AAAA,EAErC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,cAAa,UAAU,OAAO;AAAA,IACxC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAEhC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IAGX,IAAI,qBAAqB,KAAK,IAAI,GAAG;AAAA,MACnC,MAAM,UAAU,KAAK,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA,MAC3C,QAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,MAAM,IAAI;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,QACR,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,oBAAoB,KAAK,IAAI,GAAG;AAAA,MAClC,MAAM,UAAU,KAAK,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA,MAE3C,IAAI,CAAC,QAAQ,KAAK,OAAK,EAAE,SAAS,gBAAgB,EAAE,SAAS,IAAI,CAAC,GAAG;AAAA,QACnE,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,UACR,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,IAAI,0BAA0B,KAAK,IAAI,GAAG;AAAA,MACxC,MAAM,UAAU,KAAK,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA,MAC3C,IAAI,CAAC,QAAQ,KAAK,OAAK,EAAE,SAAS,gBAAgB,EAAE,SAAS,IAAI,CAAC,GAAG;AAAA,QACnE,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,UACR,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,IAAI,iBAAiB,KAAK,IAAI,GAAG;AAAA,MAC/B,MAAM,UAAU,KAAK,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA,MAC3C,IAAI,CAAC,QAAQ,KAAK,OAAK,EAAE,SAAS,gBAAgB,EAAE,SAAS,IAAI,CAAC,GAAG;AAAA,QACnE,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,UACR,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,UAAkB,cAAqC;AAAA,EAC7E,MAAM,UAAyB,CAAC;AAAA,EAEhC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,cAAa,UAAU,OAAO;AAAA,IACxC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAEhC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IAEX,MAAM,QAAQ,qBAAqB,KAAK,IAAI;AAAA,IAC5C,IAAI,OAAO;AAAA,MACT,MAAM,UAAU,MAAM,IAAI,YAAY;AAAA,MACtC,MAAM,aAAa,MAAM;AAAA,MACzB,MAAM,aAAa,IAAI,IAAI,CAAC,UAAU,WAAW,YAAY,CAAC;AAAA,MAC9D,IAAI,WAAW,WAAW,IAAI,OAAO,GAAG;AAAA,QACtC,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,UACV,MAAM;AAAA,UACN;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,UAAkB,cAA0C;AAAA,EACtF,MAAM,UAA8B,CAAC;AAAA,EACrC,MAAM,MAAM,QAAQ,QAAQ,EAAE,YAAY;AAAA,EAC1C,IAAI,QAAQ;AAAA,IAAS,OAAO;AAAA,EAE5B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,cAAa,UAAU,OAAO;AAAA,IACxC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAIT,IAAI,CAAC,eAAe,KAAK,OAAO;AAAA,IAAG,OAAO;AAAA,EAE1C,MAAM,UAAU,iCAAiC,SAAS,QAAQ;AAAA,EAClE,QAAQ,KAAK;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS,QAAQ,UAAU,GAAG,EAAE;AAAA,IAChC,QAAQ;AAAA,IACR,YAAY;AAAA,EACd,CAAC;AAAA,EAED,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,KAAa,UAAkB,aAAuB,UAAuC;AAAA,EACpH,MAAM,UAA+B,CAAC;AAAA,EACtC,MAAM,iBAAiB,CAAC,SAAS,UAAU,MAAM;AAAA,EACjD,MAAM,QAAQ,QAAQ,KAAK,gBAAgB,aAAa,QAAQ;AAAA,EAEhE,WAAW,YAAY,OAAO;AAAA,IAC5B,MAAM,eAAe,SAAS,UAAU,QAAQ;AAAA,IAChD,MAAM,MAAM,QAAQ,QAAQ,EAAE,YAAY;AAAA,IAC1C,MAAM,OAAO,SAAS,UAAU,GAAG;AAAA,IAEnC,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,UAAU,cAAa,UAAU,OAAO;AAAA,MACxC,MAAM;AAAA,MACN;AAAA;AAAA,IAGF,IAAI,QAAQ,QAAQ;AAAA,MAClB,MAAM,QAAQ,QAAQ,KAAK,EAAE,MAAM;AAAA,CAAI;AAAA,MACvC,IAAI,MAAM,SAAS,GAAG;AAAA,QAEpB,MAAM,SAAS,MAAM,IAAI,YAAY,KAAK;AAAA,QAC1C,IAAI,OAAO,SAAS,OAAO,KAAK,OAAO,SAAS,QAAQ,KAAK,OAAO,SAAS,UAAU,GAAG;AAAA,UACxF,QAAQ,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO,MAAM,SAAS,EAAE,CAAC;AAAA,QACpE;AAAA,MACF;AAAA,IACF,EAAO,SAAI,QAAQ,UAAU;AAAA,MAC3B,MAAM,QAAQ,QAAQ,KAAK,EAAE,MAAM;AAAA,CAAI,EAAE,OAAO,OAAK,EAAE,KAAK,EAAE,SAAS,CAAC;AAAA,MACxE,IAAI,MAAM,SAAS,GAAG;AAAA,QACpB,IAAI;AAAA,UACF,MAAM,QAAQ,KAAK,MAAM,MAAM,MAAM,IAAI;AAAA,UACzC,IAAI,WAAW,SAAS,oBAAoB,OAAO;AAAA,YACjD,QAAQ,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO,MAAM,OAAO,CAAC;AAAA,UAChE;AAAA,UACA,MAAM;AAAA,MAGV;AAAA,IACF,EAAO,SAAI,QAAQ,SAAS;AAAA,MAC1B,IAAI;AAAA,QACF,MAAM,SAAkB,KAAK,MAAM,OAAO;AAAA,QAC1C,IAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAAA,UAC9C,MAAM,QAAQ,OAAO;AAAA,UACrB,IAAI,WAAW,SAAS,oBAAoB,OAAO;AAAA,YACjD,QAAQ,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO,OAAO,OAAO,CAAC;AAAA,UACjE;AAAA,QACF;AAAA,QACA,MAAM;AAAA,IAGV;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAOF,SAAS,eAAe,CAAC,SAAwC;AAAA,EACtE,MAAM,WAAW,QAAQ;AAAA,EACzB,MAAM,UAA8B,CAAC;AAAA,EACrC,MAAM,WAAgC,CAAC;AAAA,EACvC,MAAM,UAAyB,CAAC;AAAA,EAGhC,MAAM,cAAc,QAAQ,UAAU,QAAQ,YAAY,QAAQ,aAAa,QAAQ,KAAK;AAAA,EAE5F,WAAW,YAAY,aAAa;AAAA,IAClC,MAAM,eAAe,SAAS,UAAU,QAAQ;AAAA,IAGhD,QAAQ,KAAK,GAAG,eAAe,UAAU,YAAY,CAAC;AAAA,IAGtD,IAAI,CAAC,QAAQ,aAAa;AAAA,MACxB,QAAQ,KAAK,GAAG,eAAe,UAAU,YAAY,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EAGA,IAAI,CAAC,QAAQ,aAAa;AAAA,IACxB,MAAM,YAAY,QAAQ,UAAU,CAAC,OAAO,GAAG,QAAQ,aAAa,QAAQ,KAAK;AAAA,IACjF,WAAW,YAAY,WAAW;AAAA,MAChC,MAAM,eAAe,SAAS,UAAU,QAAQ;AAAA,MAChD,QAAQ,KAAK,GAAG,mBAAmB,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,IAGA,SAAS,KAAK,GAAG,gBAAgB,UAAU,UAAU,QAAQ,aAAa,QAAQ,KAAK,CAAC;AAAA,EAC1F;AAAA,EAEA,OAAO,EAAE,SAAS,UAAU,QAAQ;AAAA;AAO/B,SAAS,eAAe,CAAC,aAA+B;AAAA,EAE7D,MAAM,aAAa,cAAc,KAAK,WAAW;AAAA,EACjD,IAAI,aAAa,IAAI;AAAA,IACnB,OAAO,WAAW,GAAG,MAAM,GAAG,EAAE,IAAI,SAAO,IAAI,IAAI,KAAK,GAAG;AAAA,EAC7D;AAAA,EAGA,MAAM,WAAW,aAAa,KAAK,WAAW;AAAA,EAC9C,IAAI,WAAW,IAAI;AAAA,IACjB,OAAO,CAAC,IAAI,SAAS,IAAI;AAAA,EAC3B;AAAA,EAGA,OAAO,CAAC,OAAO,OAAO,OAAO,QAAQ,MAAM;AAAA;AAGtC,SAAS,gBAAgB,CAAC,gBAAkC;AAAA,EACjE,OAAO,eAAe,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAAA;;;ADtWpE,eAAsB,iBAAiB,GAAkB;AAAA,EACvD,MAAM,YAAY,MAAa,oBAAa;AAAA,EAE5C,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAM,KAAK,KAAK,mCAAmC,CAAC;AAAA,EAChE,QAAQ,IAAI,EAAE;AAAA,EAEd,QAAQ,MAAM,iBAAiB,MAAM,SAAS,OAAoD,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM,GAAG,OAAM,MAAM,GAAG;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM,GAAG,OAAM,MAAM,GAAG;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM,GAAG,OAAM,MAAM,GAAG;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC,CAAC;AAAA,EAEF,IAAI,iBAAiB,QAAQ;AAAA,IAC3B,QAAQ,IAAI,EAAE;AAAA,IACd,QAAQ,IAAI,OAAM,IAAI,oEAAoE,CAAC;AAAA,IAC3F,QAAQ,IAAI,OAAM,IAAI,6DAA6D,CAAC;AAAA,IACpF,QAAQ,IAAI,EAAE;AAAA,IACd;AAAA,EACF;AAAA,EAGA,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAM,KAAK,6BAA6B,CAAC;AAAA,EACrD,QAAQ,IAAI,EAAE;AAAA,EAEd,MAAM,WAAW,SAAQ,GAAG;AAAA,EAC5B,MAAM,SAAS,gBAAgB;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,YAAY,gBAAgB,yBAAyB;AAAA,IACrD,aAAa,iBAAiB,2DAA2D;AAAA,IACzF,aAAa;AAAA,EACf,CAAC;AAAA,EAED,MAAM,gBAAgB,OAAO,QAAQ,SAAS,OAAO,SAAS;AAAA,EAE9D,IAAI,gBAAgB,GAAG;AAAA,IACrB,QAAQ,IAAI,OAAM,MAAM,WAAW,OAAO,OAAO,QAAQ,MAAM,mBAAmB,OAAO,OAAO,SAAS,MAAM,cAAc,CAAC;AAAA,EAChI,EAAO;AAAA,IACL,QAAQ,IAAI,OAAM,IAAI,wCAAwC,CAAC;AAAA;AAAA,EAEjE,QAAQ,IAAI,EAAE;AAAA,EAEd,IAAI,iBAAiB,aAAa;AAAA,IAChC,MAAM,mBAAmB;AAAA,EAC3B,EAAO;AAAA,IACL,oBAAoB,OAAO,QAAQ,QAAQ,OAAO,SAAS,MAAM;AAAA;AAAA;AAIrE,eAAe,kBAAkB,GAAkB;AAAA,EACjD,MAAM,eAAe,MAAa,oBAAa;AAAA,EAC/C,QAAQ,cAAc,MAAM,YAAY,OAA8B,CAAC;AAAA,IACrE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,MACxC,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,MACxC,EAAE,MAAM,iBAAiB,OAAO,YAAY;AAAA,MAC5C,EAAE,MAAM,cAAc,OAAO,SAAS;AAAA,IACxC;AAAA,EACF,CAAC,CAAC;AAAA,EAEF,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAM,KAAK,eAAe,CAAC;AAAA,EACvC,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,UAAU,OAAM,MAAM,sBAAsB,WAAW,GAAG;AAAA,EACtE,QAAQ,IAAI,wCAAwC,WAAW;AAAA,EAC/D,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,UAAU,OAAM,MAAM,sBAAsB,oBAAoB,GAAG;AAAA,EAC/E,QAAQ,IAAI,2CAA2C;AAAA,EACvD,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,UAAU,OAAM,MAAM,kBAAkB,GAAG;AAAA,EACvD,QAAQ,IAAI,gDAAgD;AAAA,EAC5D,QAAQ,IAAI,EAAE;AAAA;AAGhB,SAAS,mBAAmB,CAAC,aAAqB,cAA4B;AAAA,EAC5E,QAAQ,IAAI,OAAM,KAAK,gCAAgC,CAAC;AAAA,EACxD,QAAQ,IAAI,EAAE;AAAA,EAEd,IAAI,OAAO;AAAA,EAEX,IAAI,gBAAgB,GAAG;AAAA,IACrB,QAAQ,IAAI,OAAO,OAAO,IAAI,MAAM,OAAM,MAAM,mFAAmF,GAAG;AAAA,IACtI,QAAQ,IAAI,gDAAgD;AAAA,IAC5D,QAAQ,IAAI,EAAE;AAAA,IACd;AAAA,EACF,EAAO;AAAA,IACL,QAAQ,IAAI,OAAM,IAAI,OAAO,OAAM,MAAM,GAAQ,mCAAmC,OAAO,WAAW,UAAU,CAAC;AAAA,IACjH,QAAQ,IAAI,OAAM,IAAI,gFAAgF,CAAC;AAAA,IACvG,QAAQ,IAAI,EAAE;AAAA;AAAA,EAGhB,IAAI,iBAAiB,GAAG;AAAA,IACtB,QAAQ,IAAI,OAAO,OAAO,IAAI,MAAM,OAAM,MAAM,4GAA8G,GAAG;AAAA,IACjK,QAAQ,IAAI,iDAAiD;AAAA,IAC7D,QAAQ,IAAI,EAAE;AAAA,IACd;AAAA,EACF,EAAO;AAAA,IACL,QAAQ,IAAI,OAAM,IAAI,OAAO,OAAM,MAAM,GAAQ,oCAAoC,OAAO,YAAY,UAAU,CAAC;AAAA,IACnH,QAAQ,IAAI,OAAM,IAAI,2FAA2F,CAAC;AAAA,IAClH,QAAQ,IAAI,EAAE;AAAA;AAAA,EAGhB,QAAQ,IAAI,OAAO,OAAO,IAAI,MAAM,OAAM,MAAM,wGAAwG,GAAG;AAAA,EAC3J,QAAQ,IAAI,mCAAmC;AAAA,EAC/C,QAAQ,IAAI,EAAE;AAAA,EACd;AAAA,EAEA,QAAQ,IAAI,OAAO,OAAO,IAAI,MAAM,OAAM,MAAM,oEAAoE,GAAG;AAAA,EACvH,QAAQ,IAAI,oCAAoC;AAAA,EAChD,QAAQ,IAAI,EAAE;AAAA,EAEd,QAAQ,IAAI,OAAM,IAAI,4DAA4D,CAAC;AAAA,EACnF,QAAQ,IAAI,EAAE;AAAA;;;AJjHT,SAAS,iBAAiB,GAAY;AAAA,EAC3C,MAAM,OAAO,IAAI,QAAQ,MAAM,EAC5B,YAAY,qCAAqC,EACjD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,KACG,QAAQ,OAAO,EACf,YAAY,gCAAgC,EAC5C,OAAO,aAAa,oCAAoC,EACxD,OAAO,qBAAqB,yDAAyD,EACrF,OAAO,oBAAoB,gBAAgB,yBAAyB,EACpE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,+BAA+B;AAAA,IAClG,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,sBAAsB;AAAA,IACzF,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOnG,EACA,OAAO,OAAO,YAA0B;AAAA,IACvC,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,gBAAgB,CAAC,eAAe;AAAA,MACtC,IAAI,SAA6B,QAAQ,IAAI;AAAA,MAC7C,IAAI,WAAmB,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,MAChE,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MAGJ,IAAI,QAAQ;AAAA,QAEV,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAGA,MAAM,OAAO,MAAM,mBAAmB,QAAQ,QAAQ;AAAA,QACtD,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,IAAI,KAAK,UAAU,KAAK,KAAK,IAAI;AAAA,UAC/B,QAAQ,KAAK,GAAG;AAAA,UAChB,MAAM,aAAa,MAAM,gBAAgB,QAAQ,UAAU,KAAK;AAAA,UAChE,MAAM,YAAY,WAAW,KAAK,OAAK,EAAE,SAAS;AAAA,UAClD,OAAO,WAAW,MAAM,WAAW,IAAI;AAAA,QACzC;AAAA,QAGA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,QAED,OAAO,QAAQ,4BAA4B;AAAA,QAC3C,IAAI,QAAQ;AAAA,UACV,OAAO,OAAO;AAAA,YACZ,SAAS;AAAA,YACT,eAAe;AAAA,YACf;AAAA,YACA,WAAW,OAAO,EAAE,IAAI,KAAK,IAAI;AAAA,YACjC,cAAc,QAAQ,EAAE,IAAI,MAAM,IAAI;AAAA,YACtC,YAAY;AAAA,cACV,aAAa;AAAA,cACb,MAAM,CAAC,mCAAmC,8BAA8B;AAAA,YAC1E;AAAA,UACF,CAAC;AAAA,QACH,EAAO;AAAA,UACL,OAAO,KAAK,aAAa,UAAU;AAAA,UACnC,OAAO,KAAK,uCAAuC;AAAA;AAAA,QAErD;AAAA,MACF;AAAA,MAGA,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAGjB,IAAI,UAAU,CAAC,QAAQ,WAAW,kBAAkB;AAAA,QAClD,MAAM,IAAI,cACR,wBACA,wFACA,uFACF;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG;AAAA,QAC1C,QAAQ,IAAI;AAAA,IAAO,OAAM,KAAK,KAAK,4BAA4B,IAAI;AAAA,CAAI;AAAA,QACvE,QAAQ,IAAI;AAAA,CAA4D;AAAA,MAC1E;AAAA,MAGA,IAAI,sBAAsB,QAAQ,YAAY;AAAA,MAG9C,IAAI,CAAC,uBAAuB,kBAAkB;AAAA,QAC5C,OAAO,KAAK,qEAAqE;AAAA,QACjF,sBAAsB;AAAA,MACxB;AAAA,MAEA,IAAI,CAAC,qBAAqB;AAAA,QAExB,MAAM,eAAe,MAAM,SAAS,OAAyB;AAAA,UAC3D;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QAED,sBAAsB,aAAa,WAAW;AAAA,MAChD;AAAA,MAEA,IAAI,qBAAqB;AAAA,QAEvB,MAAM,UAAU,IAAI;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,QAED,IAAI;AAAA,UACF,QAAQ,MAAM;AAAA,UAEd,MAAM,SAAS,MAAM,mBACnB;AAAA,YACE;AAAA,YACA,SAAS;AAAA,YACT,cAAc;AAAA,UAChB,GACA,CAAC,YAAY;AAAA,YACX,QAAQ,OAAO;AAAA,WAEnB;AAAA,UAEA,QAAQ,QAAQ,6BAA6B;AAAA,UAG7C,oBAAoB;AAAA,YAClB,QAAQ,OAAO;AAAA,YACf;AAAA,YACA,aAAa,OAAO;AAAA,YACpB,gBAAgB,OAAO;AAAA,YACvB,WAAW,OAAO;AAAA,UACpB,CAAC;AAAA,UAGD,SAAS,OAAO;AAAA,UAChB,gBAAgB,OAAO;AAAA,UACvB,mBAAmB,OAAO;AAAA,UAC1B,mBAAmB,OAAO;AAAA,UAC1B,aAAa,OAAO;AAAA,UAEpB,QAAQ,IAAI,EAAE;AAAA,UACd,OAAO,KAAK,gBAAgB,aAAa;AAAA,UACzC,OAAO,KAAK,mBAAmB,gBAAgB;AAAA,UAC/C,OAAO,KAAK,eAAe,QAAQ;AAAA,UAEnC,OAAO,OAAO;AAAA,UACd,QAAQ,KAAK,uBAAuB;AAAA,UAEpC,IAAI,iBAAiB,kBAAkB;AAAA,YACrC,MAAM,IAAI,cACR,MAAM,MACN,MAAM,SACN,MAAM,cAAc,CACtB;AAAA,UACF;AAAA,UACA,MAAM;AAAA;AAAA,MAEV,EAAO;AAAA,QAEL,MAAM,UAAU,MAAM,SAAS,OAAqB;AAAA,UAClD;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,YACN,UAAU,CAAC,UAAoC,MAAM,SAAS,KAAK;AAAA,UACrE;AAAA,QACF,CAAC;AAAA,QAED,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QAGnB,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAGA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,MAAM,OAAO,MAAM,mBAAmB,QAAQ,QAAQ;AAAA,QACtD,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI;AAAA,UAEhC,gBAAgB,KAAK,GAAG;AAAA,UACxB,kBAAkB,KAAK,GAAG;AAAA,QAC5B,EAAO,SAAI,KAAK,SAAS,GAAG;AAAA,UAC1B,MAAM,YAAY,MAAM,SAAS,OAA0B,CAAC;AAAA,YAC1D,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,KAAK,IAAI,QAAM,EAAE,MAAM,EAAE,MAAM,OAAO,EAAE,GAAG,EAAE;AAAA,UACxD,CAAC,CAAC;AAAA,UACF,gBAAgB,UAAU;AAAA,UAC1B,kBAAkB,KAAK,KAAK,OAAK,EAAE,OAAO,aAAa,GAAG;AAAA,QAC5D;AAAA,QAEA,IAAI,eAAe;AAAA,UACjB,MAAM,aAAa,MAAM,gBAAgB,QAAQ,UAAU,aAAa;AAAA,UACxE,MAAM,YAAY,WAAW,KAAK,OAAK,EAAE,SAAS;AAAA,UAClD,IAAI,WAAW,WAAW,KAAK,WAAW,IAAI;AAAA,YAC5C,eAAe,WAAW,GAAG;AAAA,YAC7B,iBAAiB,WAAW,GAAG;AAAA,UACjC,EAAO,SAAI,WAAW;AAAA,YACpB,eAAe,UAAU;AAAA,YACzB,iBAAiB,UAAU;AAAA,UAC7B,EAAO,SAAI,WAAW,SAAS,GAAG;AAAA,YAChC,MAAM,WAAW,MAAM,SAAS,OAAyB,CAAC;AAAA,cACxD,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,WAAW,IAAI,QAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,eAAe,KAAK,OAAO,EAAE,GAAG,EAAE;AAAA,YAClG,CAAC,CAAC;AAAA,YACF,eAAe,SAAS;AAAA,YACxB,iBAAiB,WAAW,KAAK,OAAK,EAAE,OAAO,YAAY,GAAG;AAAA,UAChE;AAAA,QACF;AAAA,QAGA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,QAGD,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,aAAa;AAAA,QAEb,OAAO,QAAQ,4BAA4B;AAAA,QAC3C,IAAI;AAAA,UAAiB,OAAO,KAAK,mBAAmB,eAAe;AAAA,QACnE,IAAI;AAAA,UAAgB,OAAO,KAAK,gBAAgB,cAAc;AAAA,QAC9D,OAAO,KAAK,eAAe,QAAQ;AAAA;AAAA,MAIrC,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,UACZ,SAAS;AAAA,UACT,eAAe;AAAA,UACf;AAAA,UACA,WAAW,mBAAmB,EAAE,IAAI,kBAAkB,MAAM,cAAc,IAAI;AAAA,UAC9E,cAAc,aAAa,EAAE,IAAI,YAAY,MAAM,iBAAiB,IAAI;AAAA,UACxE,YAAY;AAAA,YACV,aAAa;AAAA,YACb,MAAM,CAAC,mCAAmC,8BAA8B;AAAA,UAC1E;AAAA,QACF,CAAC;AAAA,MACH,EAAO;AAAA,QACL,OAAO,KAAK,uCAAuC;AAAA;AAAA,MAIrD,IAAI,iBAAiB,QAAQ,MAAM,SAAS,CAAC,QAAQ;AAAA,QACnD,MAAM,kBAAkB;AAAA,MAC1B;AAAA,MACA,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,eAAe;AAAA,QAClC,OAAO,MAAM,MAAM,OAAO;AAAA,QAC1B,QAAQ,KAAK,MAAM,QAAQ;AAAA,MAC7B;AAAA,MACA,MAAM;AAAA;AAAA,GAET;AAAA,EAGH,KACG,QAAQ,QAAQ,EAChB,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,YAAY;AAAA,IAClB,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,SAAS,UAAU;AAAA,IACzB,MAAM,SAAS,WAAW;AAAA,IAC1B,MAAM,WAAW,OAAO,YAAY;AAAA,IAEpC,IAAI,CAAC,QAAQ;AAAA,MACX,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,EAAE,eAAe,OAAO,SAAS,oBAAoB,CAAC;AAAA,MACtE,EAAO;AAAA,QACL,OAAO,MAAM,mBAAmB;AAAA,QAChC,OAAO,KAAK,0BAA0B;AAAA;AAAA,MAExC,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAGA,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,IAGrD,MAAM,MAAM,QAAQ,IAAI;AAAA,IACxB,MAAM,gBAAgB,YAAW,MAAK,KAAK,kBAAkB,CAAC;AAAA,IAC9D,MAAM,iBAAiB,YAAW,MAAK,KAAK,aAAa,qBAAqB,CAAC;AAAA,IAE/E,IAAI;AAAA,IACJ,IAAI,gBAAgB;AAAA,MAClB,IAAI;AAAA,QACF,MAAM,MAAM,gBAAgB,KAAK,GAAG;AAAA,QACpC,iBAAiB,IAAI,WAAW;AAAA,QAChC,MAAM;AAAA,IAGV;AAAA,IAEA,IAAI,QAAQ;AAAA,MACV,MAAM,eAAwC;AAAA,QAC5C,eAAe;AAAA,QACf;AAAA,QACA,WAAW,GAAG,OAAO,MAAM,GAAG,CAAC;AAAA,QAC/B,kBAAkB,OAAO;AAAA,QACzB,qBAAqB,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,SAAS,kBAAkB;AAAA,MAC7B;AAAA,MACA,IAAI,CAAC,SAAS;AAAA,QACZ,aAAa,UAAU;AAAA,QACvB,aAAa,cAAc;AAAA,UACzB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,OAAO,OAAO,YAAY;AAAA,IAC5B,EAAO;AAAA,MACL,IAAI,SAAS;AAAA,QACX,OAAO,QAAQ,+BAA+B;AAAA,QAC9C,OAAO,KAAK,aAAa,UAAU;AAAA,QACnC,OAAO,KAAK,QAAQ,OAAO,MAAM,GAAG,CAAC,MAAM;AAAA,QAC3C,IAAI,OAAO,kBAAkB;AAAA,UAC3B,OAAO,KAAK,cAAc,OAAO,kBAAkB;AAAA,QACrD;AAAA,QACA,IAAI,OAAO,qBAAqB;AAAA,UAC9B,OAAO,KAAK,iBAAiB,OAAO,qBAAqB;AAAA,QAC3D;AAAA,MACF,EAAO;AAAA,QACL,OAAO,MAAM,+DAA8D;AAAA,QAC3E,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,mCAAmC;AAAA,QACjD,QAAQ,MAAM,kDAAkD;AAAA,QAChE,QAAQ,MAAM,uDAAuD;AAAA,QACrE,QAAQ,MAAM,kDAAkD;AAAA;AAAA,MAIlE,IAAI,eAAe;AAAA,QACjB,OAAO,QAAQ,+CAA+C;AAAA,MAChE,EAAO;AAAA,QACL,OAAO,KAAK,mDAAmD;AAAA;AAAA,MAIjE,IAAI,kBAAkB,gBAAgB;AAAA,QACpC,MAAM,QAAQ;AAAA,UACZ,GAAG,OAAO,eAAe,OAAO;AAAA,UAChC,GAAG,OAAO,eAAe,QAAQ;AAAA,UACjC,GAAG,OAAO,eAAe,WAAW;AAAA,QACtC;AAAA,QACA,OAAO,QAAQ,gDAAgD,MAAM,KAAK,IAAI,IAAI;AAAA,MACpF,EAAO,SAAI,gBAAgB;AAAA,QACzB,OAAO,QAAQ,6CAA6C;AAAA,MAC9D,EAAO;AAAA,QACL,OAAO,KAAK,kDAAkD;AAAA;AAAA,MAIhE,IAAI,kBAAkB,eAAe,WAAW,SAAS,GAAG;AAAA,QAC1D,OAAO,QAAQ,gBAAgB,eAAe,WAAW,KAAK,IAAI,YAAY;AAAA,MAChF;AAAA;AAAA,GAEH;AAAA,EAGH,KACG,QAAQ,QAAQ,EAChB,YAAY,0BAA0B,EACtC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,iBAAiB;AAAA,IACjB,OAAO,QAAQ,yBAAyB;AAAA,GACzC;AAAA,EAEH,OAAO;AAAA;;;AMveT;AACA;AALA,oBAAS;AACT;AACA;AACA;AAIA;AAsBO,SAAS,kBAAkB,GAAY;AAAA,EAC5C,MAAM,QAAQ,IAAI,SAAQ,OAAO,EAC9B,YAAY,4BAA4B,EACxC,OAAO,aAAa,oCAAoC,EACxD,OAAO,qBAAqB,yDAAyD,EACrF,OAAO,oBAAoB,gBAAgB,yBAAyB,EACpE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG,uCAAuC,OAAM,IAAI,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA,KAK9F,EACA,OAAO,OAAO,YAA0B;AAAA,IACvC,MAAM,SAAS,YAAY,KAAK;AAAA,IAChC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAA6B,QAAQ,IAAI;AAAA,MAC/C,MAAM,WAAmB,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,MAGlE,IAAI,QAAQ;AAAA,QACV,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAEA,gBAAgB,QAAQ,QAAQ;AAAA,QAChC,OAAO,QAAQ,wBAAwB;AAAA,QACvC,IAAI,CAAC,QAAQ;AAAA,UACX,OAAO,KAAK,aAAa,UAAU;AAAA,QACrC;AAAA,QACA;AAAA,MACF;AAAA,MAGA,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAGjB,IAAI,UAAU,CAAC,QAAQ,WAAW,kBAAkB;AAAA,QAClD,MAAM,IAAI,cACR,wBACA,wFACA,kFACF;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG;AAAA,QAC1C,QAAQ,IAAI;AAAA,IAAO,OAAM,KAAK,KAAK,4BAA4B,IAAI;AAAA,CAAI;AAAA,QACvE,QAAQ,IAAI;AAAA,CAA4D;AAAA,MAC1E;AAAA,MAGA,IAAI,iBAAiB,QAAQ,YAAY;AAAA,MAGzC,IAAI,CAAC,kBAAkB,kBAAkB;AAAA,QACvC,OAAO,KAAK,qEAAqE;AAAA,QACjF,iBAAiB;AAAA,MACnB;AAAA,MAEA,IAAI,CAAC,gBAAgB;AAAA,QAEnB,MAAM,eAAe,MAAM,UAAS,OAAyB;AAAA,UAC3D;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QAED,iBAAiB,aAAa,WAAW;AAAA,MAC3C;AAAA,MAEA,IAAI,gBAAgB;AAAA,QAElB,MAAM,UAAU,KAAI;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,QAED,IAAI;AAAA,UACF,QAAQ,MAAM;AAAA,UAEd,MAAM,SAAS,MAAM,mBACnB;AAAA,YACE;AAAA,YACA,SAAS;AAAA,YACT,cAAc;AAAA,UAChB,GACA,CAAC,YAAY;AAAA,YACX,QAAQ,OAAO;AAAA,WAEnB;AAAA,UAEA,QAAQ,QAAQ,yBAAyB;AAAA,UAGzC,oBAAoB;AAAA,YAClB,QAAQ,OAAO;AAAA,YACf;AAAA,YACA,aAAa,OAAO;AAAA,YACpB,gBAAgB,OAAO;AAAA,UACzB,CAAC;AAAA,UAED,QAAQ,IAAI,EAAE;AAAA,UACd,IAAI,OAAO,eAAe;AAAA,YACxB,OAAO,KAAK,cAAc,OAAO,eAAe;AAAA,UAClD;AAAA,UACA,IAAI,OAAO,kBAAkB;AAAA,YAC3B,OAAO,KAAK,iBAAiB,OAAO,kBAAkB;AAAA,UACxD;AAAA,UACA,OAAO,OAAO;AAAA,UACd,QAAQ,KAAK,uBAAuB;AAAA,UAEpC,IAAI,iBAAiB,kBAAkB;AAAA,YACrC,MAAM,IAAI,cACR,MAAM,MACN,MAAM,SACN,MAAM,cAAc,CACtB;AAAA,UACF;AAAA,UACA,MAAM;AAAA;AAAA,MAEV,EAAO;AAAA,QAEL,MAAM,UAAU,MAAM,UAAS,OAAqB;AAAA,UAClD;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,YACN,UAAU,CAAC,UAAoC;AAAA,cAC7C,IAAI,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AAAA,gBACjC,OAAO;AAAA,cACT;AAAA,cACA,IAAI,CAAC,MAAM,WAAW,KAAK,GAAG;AAAA,gBAC5B,OAAO;AAAA,cACT;AAAA,cACA,OAAO;AAAA;AAAA,UAEX;AAAA,QACF,CAAC;AAAA,QAED,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ,QAAQ;AAAA,QAE7D,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAEA,gBAAgB,QAAQ,QAAQ,QAAQ;AAAA,QACxC,OAAO,QAAQ,wBAAwB;AAAA,QACvC,OAAO,KAAK,aAAa,UAAU;AAAA;AAAA,MAErC,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,eAAe;AAAA,QAClC,OAAO,MAAM,MAAM,OAAO;AAAA,QAC1B,IAAI,MAAM,cAAc,CAAC,QAAQ;AAAA,UAC/B,OAAO,KAAK,eAAe,MAAM,YAAY;AAAA,QAC/C;AAAA,QACA,QAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,MACA,MAAM;AAAA;AAAA,GAET;AAAA,EAEH,OAAO;AAAA;;;AC9NT;AAHA,oBAAS;AACT;AACA,yBAAS,6BAAc;;;ACchB,SAAS,aAAa,GAAW;AAAA,EACtC,OAAO,QAAQ,IAAI,oBAAoB;AAAA;AAMlC,SAAS,oBAAoB,GAAW;AAAA,EAC7C,OAAO,GAAG,cAAc;AAAA;AAOnB,SAAS,UAAU,CAAC,IAA6B;AAAA,EACtD,OAAO,GAAG,cAAc,8BAA8B,OAAO,EAAE;AAAA;AAS1D,SAAS,kBAAkB,CAAC,WAAoC;AAAA,EACrE,OAAO,GAAG,cAAc;AAAA;AAOnB,SAAS,qBAAqB,CAAC,WAAoC;AAAA,EACxE,OAAO,GAAG,cAAc;AAAA;AAMnB,SAAS,WAAW,CAAC,WAA4B,WAAoC;AAAA,EAC1F,OAAO,GAAG,cAAc,4CAA4C,OAAO,SAAS;AAAA;AAM/E,SAAS,cAAc,CAAC,WAA4B,QAAiC;AAAA,EAC1F,OAAO,GAAG,cAAc,4CAA4C,OAAO,MAAM;AAAA;AAM5E,SAAS,SAAS,CAAC,IAAoB;AAAA,EAC5C,OAAO,GAAG,cAAc,YAAY;AAAA;AAM/B,SAAS,aAAa,CAAC,OAAwB;AAAA,EACpD,MAAM,OAAO,GAAG,cAAc;AAAA,EAC9B,OAAO,QAAQ,GAAG,YAAY,UAAU;AAAA;AAMnC,SAAS,cAAc,GAAW;AAAA,EACvC,OAAO,GAAG,cAAc;AAAA;AAMnB,SAAS,oBAAoB,GAAW;AAAA,EAC7C,OAAO,GAAG,cAAc;AAAA;AAMnB,SAAS,aAAa,CAAC,IAA6B;AAAA,EACzD,OAAO,GAAG,cAAc,2BAA2B,OAAO,EAAE;AAAA;AAMvD,SAAS,cAAc,CAAC,IAAwD;AAAA,EACrF,OAAO;AAAA,IACL,UAAU,cAAc,EAAE;AAAA,IAC1B,KAAK,mBAAmB,OAAO,EAAE;AAAA,EACnC;AAAA;AAMK,SAAS,YAAY,CAAC,IAA6B;AAAA,EACxD,OAAO,GAAG,cAAc,wBAAwB,OAAO,EAAE;AAAA;AAMpD,SAAS,aAAa,CAAC,IAAwD;AAAA,EACpF,OAAO;AAAA,IACL,UAAU,aAAa,EAAE;AAAA,IACzB,KAAK,kBAAkB,OAAO,EAAE;AAAA,EAClC;AAAA;AAMK,SAAS,SAAS,CAAC,IAA6B;AAAA,EACrD,OAAO,GAAG,cAAc,YAAY,OAAO,EAAE;AAAA;AAMxC,SAAS,UAAU,CAAC,IAAyD;AAAA,EAClF,OAAO;AAAA,IACL,WAAW,UAAU,EAAE;AAAA,IACvB,KAAK,eAAe,OAAO,EAAE;AAAA,EAC/B;AAAA;AAMK,SAAS,WAAW,CAAC,UAAsG;AAAA,EAChI,OAAO;AAAA,IACL,WAAW,WAAW,QAAQ;AAAA,IAC9B,KAAK,gBAAgB,OAAO,QAAQ;AAAA,IACpC,UAAU,mBAAmB,QAAQ;AAAA,IACrC,aAAa,sBAAsB,QAAQ;AAAA,EAC7C;AAAA;AAMK,SAAS,YAAY,CAAC,UAA2B,WAAgE;AAAA,EACtH,OAAO;AAAA,IACL,WAAW,YAAY,UAAU,SAAS;AAAA,IAC1C,KAAK,gBAAgB,OAAO,QAAQ,cAAc,OAAO,SAAS;AAAA,EACpE;AAAA;AAMK,SAAS,eAAe,CAAC,UAA2B,QAA6D;AAAA,EACtH,OAAO;AAAA,IACL,WAAW,eAAe,UAAU,MAAM;AAAA,IAC1C,KAAK,gBAAgB,OAAO,QAAQ,iBAAiB,OAAO,MAAM;AAAA,EACpE;AAAA;AAsCK,IAAM,eAAe;AAAA;AAMrB,SAAS,qBAAqB,CAAC,WAA8E;AAAA,EAClH,IAAI,WAAW,cAAc;AAAA,IAC3B,QAAQ,MAAM,UAAU,YAAY;AAAA,EACtC,EAAO,SAAI,WAAW,aAAa;AAAA,IACjC,QAAQ,MAAM;AAAA,gBAAkB,UAAU;AAAA,CAAe;AAAA,EAC3D;AAAA;AAaK,SAAS,mBAAmB,CAAC,MAAoC;AAAA,EACtE,MAAM,QAAkB;AAAA,IACtB;AAAA,IACA,2BAA2B,KAAK;AAAA,IAChC,iBAAiB,KAAK;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAyBxB,IAAM,mBAAmB;AAMlB,SAAS,eAAe,CAAC,MAMrB;AAAA,EACT,MAAM,OAAO,KAAK,QAAQ;AAAA,EAG1B,MAAM,YAAY;AAAA,IAChB,GAAG,KAAK,KAAK,IAAI,OAAK,EAAE,KAAK;AAAA,IAC7B,GAAG,KAAK,MAAM,IAAI,OAAK,EAAE,KAAK;AAAA,EAChC;AAAA,EACA,MAAM,aAAa,KAAK,IAAI,GAAG,UAAU,IAAI,OAAK,EAAE,MAAM,GAAG,CAAC,IAAI;AAAA,EAGlE,MAAM,YAAY,KAAI,QAAQ,KAAK;AAAA,EACnC,MAAM,eAAyB,CAAC;AAAA,EAGhC,WAAW,KAAK,KAAK,MAAM;AAAA,IACzB,aAAa,KAAK,KAAK,EAAE,MAAM,OAAO,UAAU,IAAI,EAAE,OAAO;AAAA,EAC/D;AAAA,EAGA,IAAI,KAAK,MAAM,QAAQ;AAAA,IACrB,WAAW,KAAK,KAAK,OAAO;AAAA,MAC1B,aAAa,KAAK,KAAK,EAAE,MAAM,OAAO,UAAU,IAAI,EAAE,KAAK;AAAA,IAC7D;AAAA,EACF;AAAA,EAGA,IAAI,KAAK,KAAK,QAAQ;AAAA,IACpB,aAAa,KAAK,QAAQ;AAAA,IAC1B,WAAW,KAAK,KAAK,MAAM;AAAA,MACzB,aAAa,KAAK,OAAM,GAAG;AAAA,IAC7B;AAAA,EACF;AAAA,EAGA,MAAM,aAAa,KAAK,IACtB,UAAU,QACV,GAAG,aAAa,IAAI,OAAK,EAAE,MAAM,CACnC;AAAA,EACA,MAAM,IAAI,KAAK,IAAI,IAAI,aAAa,CAAC;AAAA,EACrC,MAAM,SAAS,IAAI;AAAA,EAGnB,MAAM,MAAM,CAAC,SAAyB;AAAA,IACpC,OAAO,KAAK,SAAS,SAAS,OAAO,IAAI,OAAO,SAAS,KAAK,MAAM,IAAI;AAAA;AAAA,EAE1E,MAAM,KAAK,CAAC,SAAyB,KAAI,IAAI,IAAI;AAAA,EACjD,MAAM,QAAQ,MAAc,GAAG,EAAE;AAAA,EACjC,MAAM,MAAM,MAAc,KAAI,IAAI,OAAO,SAAS,CAAC;AAAA,EAGnD,MAAM,cAAc,IAAG,YAAY,IAAI,OAAO,KAAK,IAAI,GAAG,IAAI,UAAU,SAAS,CAAC,CAAC;AAAA,EACnF,MAAM,MAAM,IAAG,IAAI,OAAO,CAAC;AAAA,EAE3B,MAAM,MAAgB,CAAC,aAAa,MAAM,CAAC;AAAA,EAG3C,WAAW,KAAK,KAAK,MAAM;AAAA,IACzB,IAAI,KAAK,GAAG,KAAK,EAAE,MAAM,OAAO,UAAU,IAAI,EAAE,OAAO,CAAC;AAAA,EAC1D;AAAA,EAGA,IAAI,KAAK,MAAM,QAAQ;AAAA,IACrB,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAAA,IAChC,WAAW,KAAK,KAAK,OAAO;AAAA,MAC1B,IAAI,KAAK,GAAG,KAAK,EAAE,MAAM,OAAO,UAAU,IAAI,EAAE,KAAK,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EAGA,IAAI,KAAK,KAAK,QAAQ;AAAA,IACpB,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAAA,IAChC,IAAI,KAAK,GAAG,QAAQ,CAAC;AAAA,IACrB,WAAW,KAAK,KAAK,MAAM;AAAA,MACzB,IAAI,KAAK,GAAG,OAAM,GAAG,CAAC;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,MAAM,GAAG,GAAG;AAAA,EACrB,OAAO,IAAI,KAAK;AAAA,CAAI;AAAA;AAGf,SAAS,sBAAsB,CACpC,UACA,MACmB;AAAA,EACnB,MAAM,QAAQ,oBAAmB;AAAA,EACjC,MAAM,eAAe,WAAW,QAAQ;AAAA,EACxC,MAAM,SAAS,gBAAgB,OAAO,QAAQ;AAAA,EAC9C,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,EAAE,OAAO,aAAa,OAAO,OAAO,QAAQ,EAAE;AAAA,EAChD;AAAA,EACA,MAAM,YAAY;AAAA,IAChB,EAAE,OAAO,aAAa,KAAK,aAAa;AAAA,IACxC,EAAE,OAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,OAAO;AAAA,IACX,sCAAsC,OAAO,QAAQ;AAAA,IACrD,gCAAgC,OAAO,QAAQ;AAAA,EACjD;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,EAAE,UAAU,OAAO,QAAQ,GAAG,KAAK;AAAA,IAC3C,OAAO,EAAE,WAAW,cAAc,KAAK,OAAO;AAAA,IAC9C;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,sBAAsB,CACpC,UACA,MACmB;AAAA,EACnB,MAAM,QAAQ,oBAAmB;AAAA,EACjC,MAAM,eAAe,WAAW,QAAQ;AAAA,EACxC,MAAM,SAAS,gBAAgB,OAAO,QAAQ;AAAA,EAC9C,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,EAAE,OAAO,aAAa,OAAO,OAAO,QAAQ,EAAE;AAAA,EAChD;AAAA,EACA,MAAM,YAAY;AAAA,IAChB,EAAE,OAAO,aAAa,KAAK,aAAa;AAAA,IACxC,EAAE,OAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,OAAO,CAAC,wBAAwB,OAAO,QAAQ,UAAU;AAAA,EAC/D,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,EAAE,UAAU,OAAO,QAAQ,GAAG,KAAK;AAAA,IAC3C,OAAO,EAAE,WAAW,cAAc,KAAK,OAAO;AAAA,IAC9C;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,sBAAsB,CACpC,UACmB;AAAA,EACnB,MAAM,QAAQ,oBAAmB;AAAA,EACjC,MAAM,eAAe,qBAAqB;AAAA,EAC1C,MAAM,OAAO,CAAC,EAAE,OAAO,aAAa,OAAO,SAAS,CAAC;AAAA,EACrD,MAAM,YAAY,CAAC,EAAE,OAAO,aAAa,KAAK,aAAa,CAAC;AAAA,EAC5D,MAAM,OAAO,CAAC,8BAA8B;AAAA,EAC5C,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,EAAE,SAAS;AAAA,IACnB,OAAO,EAAE,WAAW,aAAa;AAAA,IACjC;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAYK,SAAS,qBAAqB,CACnC,UACA,WACA,MACA,WACA,OACmB;AAAA,EACnB,MAAM,QAAQ,mBAAkB;AAAA,EAChC,MAAM,eAAe,YAAY,UAAU,SAAS;AAAA,EACpD,MAAM,SAAS,gBAAgB,OAAO,QAAQ,cAAc,OAAO,SAAS;AAAA,EAC5E,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,EAAE,OAAO,aAAa,OAAO,OAAO,QAAQ,EAAE;AAAA,IAC9C,EAAE,OAAO,cAAc,OAAO,OAAO,SAAS,EAAE;AAAA,IAChD,GAAI,cAAc,YAAY,CAAC,EAAE,OAAO,SAAS,OAAO,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC;AAAA,EAClF;AAAA,EACA,MAAM,YAAY;AAAA,IAChB,EAAE,OAAO,aAAa,KAAK,aAAa;AAAA,IACxC,EAAE,OAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,OAAiB,OAAO,eAAe,MAAM,cAAc,IAC7D;AAAA,IACE,mCAAmC,OAAO,QAAQ,eAAe,OAAO,SAAS;AAAA,IACjF,sCAAsC,OAAO,QAAQ;AAAA,EACvD,IACA;AAAA,IACE,sCAAsC,OAAO,QAAQ;AAAA,IACrD,mCAAmC,OAAO,QAAQ,eAAe,OAAO,SAAS;AAAA,EACnF;AAAA,EACJ,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,UAAU,OAAO,QAAQ;AAAA,MACzB,WAAW,OAAO,SAAS;AAAA,MAC3B;AAAA,SACI,cAAc,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,IACjD;AAAA,IACA,OAAO,EAAE,WAAW,cAAc,KAAK,OAAO;AAAA,IAC9C;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,uBAAuB,CACrC,UACA,WACmB;AAAA,EACnB,MAAM,QAAQ,qBAAoB;AAAA,EAClC,MAAM,cAAc,mBAAmB,QAAQ;AAAA,EAC/C,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,aAAa,OAAO,SAAS;AAAA,IACtC,EAAE,OAAO,cAAc,OAAO,UAAU;AAAA,EAC1C;AAAA,EACA,MAAM,YAAY,CAAC,EAAE,OAAO,YAAY,KAAK,YAAY,CAAC;AAAA,EAC1D,MAAM,OAAO,CAAC,iCAAiC,iBAAiB;AAAA,EAChE,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,EAAE,UAAU,UAAU;AAAA,IAC9B,OAAO,EAAE,UAAU,YAAY;AAAA,IAC/B;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,0BAA0B,CACxC,UACA,QACA,MACA,eACA,OACmB;AAAA,EACnB,MAAM,QAAQ,wBAAuB;AAAA,EACrC,MAAM,eAAe,eAAe,UAAU,MAAM;AAAA,EACpD,MAAM,SAAS,gBAAgB,OAAO,QAAQ,iBAAiB,OAAO,MAAM;AAAA,EAC5E,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,EAAE,OAAO,aAAa,OAAO,OAAO,QAAQ,EAAE;AAAA,IAC9C,EAAE,OAAO,iBAAiB,OAAO,OAAO,MAAM,EAAE;AAAA,IAChD,EAAE,OAAO,YAAY,OAAO,OAAO,aAAa,EAAE;AAAA,EACpD;AAAA,EACA,MAAM,YAAY;AAAA,IAChB,EAAE,OAAO,aAAa,KAAK,aAAa;AAAA,IACxC,EAAE,OAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,OAAiB,OAAO,YAAY,MAAM,WAAW,IACvD;AAAA,IACE,mCAAmC,OAAO,QAAQ,yCAAyC,OAAO,MAAM;AAAA,EAC1G,IACA;AAAA,IACE,gCAAgC,OAAO,QAAQ;AAAA,IAC/C,mCAAmC,OAAO,QAAQ,yCAAyC,OAAO,MAAM;AAAA,EAC1G;AAAA,EACJ,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,UAAU,OAAO,QAAQ;AAAA,MACzB,cAAc,OAAO,MAAM;AAAA,MAC3B;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAW,cAAc,KAAK,OAAO;AAAA,IAC9C;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,0BAA0B,CACxC,cACmB;AAAA,EACnB,MAAM,QAAQ,wBAAuB;AAAA,EACrC,MAAM,eAAe,qBAAqB;AAAA,EAC1C,MAAM,OAAO,CAAC,EAAE,OAAO,iBAAiB,OAAO,aAAa,CAAC;AAAA,EAC7D,MAAM,YAAY,CAAC,EAAE,OAAO,aAAa,KAAK,aAAa,CAAC;AAAA,EAC5D,MAAM,OAAiB,CAAC;AAAA,EACxB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,EAAE,aAAa;AAAA,IACvB,OAAO,EAAE,WAAW,aAAa;AAAA,IACjC;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;;;ACxkBF;AAFA;AACA,yBAAS,6BAAc;AAGvB;;;AC6BO,SAAS,iBAAiB,CAAC,QAA0B;AAAA,EAC1D,IAAI,WAAW,QAAQ,WAAW;AAAA,IAAW,OAAO;AAAA,EACpD,IAAI,OAAO,WAAW;AAAA,IAAU,OAAO;AAAA,EACvC,IAAI,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO;AAAA,EAElC,MAAM,MAAM;AAAA,EAGZ,IAAI,EAAE,UAAU,QAAQ,OAAO,IAAI,SAAS;AAAA,IAAU,OAAO;AAAA,EAG7D,IAAI,IAAI,SAAS,UAAU;AAAA,IACzB,IAAI,EAAE,gBAAgB,QAAQ,OAAO,IAAI,eAAe,YAAY,IAAI,eAAe,MAAM;AAAA,MAC3F,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AA0DF,SAAS,0BAA0B,CAAC,QAA2B;AAAA,EACpE,IAAI,WAAW,QAAQ,WAAW;AAAA,IAAW,OAAO,CAAC;AAAA,EACrD,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO,CAAC;AAAA,EAEjE,MAAM,MAAM;AAAA,EACZ,MAAM,aAAa,IAAI;AAAA,EACvB,IAAI,CAAC,cAAc,OAAO,eAAe,YAAY,MAAM,QAAQ,UAAU;AAAA,IAAG,OAAO,CAAC;AAAA,EAExF,MAAM,UAAoB,CAAC;AAAA,EAC3B,MAAM,QAAQ;AAAA,EACd,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU,QAAQ,UAAU,aAAa,OAAO,UAAU,UAAU;AAAA,MACtE,QAAQ,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IACA,MAAM,OAAO;AAAA,IACb,IAAI,OAAO,KAAK,gBAAgB,YAAY,KAAK,YAAY,KAAK,MAAM,IAAI;AAAA,MAC1E,QAAQ,KAAK,GAAG;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAQF,SAAS,mBAAmB,CAAC,WAA2B;AAAA,EAC7D,OAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK;AAAA,CAAI;AAAA;;;ADhIN,SAAS,mBAAmB,CAAC,SAAwB;AAAA,EAE1D,QACG,QAAQ,MAAM,EACd,YAAY,kBAAkB,EAC9B,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,wEAAwE;AAAA,KAC/E,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,cAAc,MAAM,OAAO,YAAY;AAAA,MAG7C,MAAM,QAAQ,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MAC7C,MAAM,UAAU,YAAY,MAAM,GAAG,KAAK;AAAA,MAE1C,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,QAAQ,IAAI,CAAC,OAAe;AAAA,UAC5C,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,SAAS,EAAE;AAAA,UACX,UAAU,EAAE;AAAA,UACZ,WAAW,EAAE;AAAA,UACb,QAAQ,YAAY,EAAE,EAAE;AAAA,QAC1B,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QAEL,MAAM,OAAO,OAAO,sBAAsB;AAAA,QAC1C,IAAI,MAAM;AAAA,UACR,OAAO,KAAK,cAAc,MAAM;AAAA,QAClC;AAAA,QAEA,IAAI,QAAQ,WAAW,GAAG;AAAA,UACxB,OAAO,KAAK,+FAA+F;AAAA,QAC7G,EAAO;AAAA,UAEL,MAAM,YAAY,QAAQ,IAAI,CAAC,OAAe;AAAA,YAC5C,IAAI,EAAE;AAAA,YACN,MAAM,EAAE;AAAA,YACR,SAAS,EAAE;AAAA,YACX,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,YACpE,KAAK,WAAW,EAAE,EAAE;AAAA,UACtB,EAAE;AAAA,UACF,OAAO,OAAO,SAAS;AAAA;AAAA;AAAA,MAG3B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,KAAK,EACb,YAAY,qCAAqC,EACjD,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,mBAAmB,kBAAkB,EAC5C,OAAO,gBAAgB,qBAAqB,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,qFAAqF;AAAA,KAC5F,EACA,OAAO,OAAO,IAAY,YAAwB;AAAA,IACjD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,UAAU,EAAE;AAAA,MAExC,MAAM,SAAkC,KAAK,OAAO;AAAA,MAEpD,IAAI,QAAQ,cAAc;AAAA,QACxB,MAAM,WAAW,MAAM,OAAO,aAAa,EAAE;AAAA,QAC7C,OAAO,WAAW;AAAA,MACpB;AAAA,MAEA,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,QAAQ,MAAM,OAAO,gBAAgB,EAAE;AAAA,QAC7C,OAAO,cAAc;AAAA,MACvB;AAAA,MAEA,IAAI,QAAQ;AAAA,QACV,OAAO,SAAS,YAAY,EAAE;AAAA,MAChC;AAAA,MACA,OAAO,OAAO,MAAM;AAAA,MACpB,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO,KAAK,sBAAsB,WAAW,EAAE,GAAG;AAAA,MACpD;AAAA,MACA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,qBAAqB,EACjC,OAAO,qBAAqB,yDAAwD,EACpF,OAAO,qBAAqB,iDAAiD,EAC7E,OAAO,qBAAqB,aAAa,EACzC,OAAO,wBAAwB,yCAAyC,EACxE,OAAO,2BAA2B,oDAAoD,EACtF,OAAO,oBAAoB,iCAAiC,EAC5D,OAAO,mBAAmB,kCAAkC,EAC5D,OAAO,kBAAkB,kCAAkC,EAC3D,OAAO,qBAAqB,sEAAwE,EACpG,OAAO,0BAA0B,0DAA0D,EAC3F,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,6DAG4C,OAAM,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOpF,OAAM,IAAI,sRAAwR;AAAA;AAAA,EAEpS,OAAM,OAAO,kBAAkB;AAAA;AAAA,+CAEc,OAAM,MAAM,WAAU;AAAA,+CACtB,OAAM,IAAI,SAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAK/D,OAAM,IAAI,2BAA2B;AAAA;AAAA,EAErC,OAAM,OAAO,iDAAiD;AAAA,KAC3D,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI;AAAA,MAGJ,IAAI,QAAQ,MAAM;AAAA,QAEhB,IAAI;AAAA,UACF,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,UAC9B,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,+BACA;AAAA,2FACF;AAAA;AAAA,QAGF,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO,SAAI,QAAQ,SAAS;AAAA,QAE1B,IAAI,CAAC,YAAW,QAAQ,OAAO,GAAG;AAAA,UAChC,MAAM,IAAI,cACR,kBACA,mBAAmB,QAAQ,WAC3B;AAAA,kCACF;AAAA,QACF;AAAA,QACA,MAAM,cAAc,cAAa,QAAQ,SAAS,OAAO;AAAA,QACzD,OAAO;AAAA,UACL,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,EAAE,EAAE,QAAQ,YAAY,EAAE;AAAA,UACpF,aAAa,QAAQ;AAAA,UACrB,WAAW;AAAA,QACb;AAAA,MACF,EAAO,SAAI,QAAQ,MAAM;AAAA,QAEvB,OAAO,EAAE,MAAM,QAAQ,MAAM,aAAa,QAAQ,YAAY;AAAA,QAG9D,IAAI,QAAQ,UAAU;AAAA,UAEpB,IAAI;AAAA,YACF,MAAM,WAAW,KAAK,MAAM,QAAQ,QAAQ;AAAA,YAE5C,MAAM,YAAY,SAAS,KAAK,OAAK,EAAE,SAAS,QAAQ;AAAA,YACxD,MAAM,WAAW,SAAS,KAAK,OAAK,EAAE,SAAS,UAAU,EAAE,SAAS,OAAO;AAAA,YAC3E,IAAI;AAAA,cAAW,KAAK,eAAe,UAAU;AAAA,YAC7C,IAAI;AAAA,cAAU,KAAK,cAAc,SAAS;AAAA,YAC1C,MAAM;AAAA,YACN,MAAM,IAAI,cACR,gBACA,mCACA;AAAA,wEACF;AAAA;AAAA,QAEJ,EAAO,SAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,UAE1C,IAAI,QAAQ;AAAA,YAAQ,KAAK,eAAe,QAAQ;AAAA,UAChD,IAAI,QAAQ;AAAA,YAAO,KAAK,cAAc,QAAQ;AAAA,QAChD,EAAO,SAAI,QAAQ,KAAK;AAAA,UAEtB,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,UAE1B,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO;AAAA,UACL,MAAM,IAAI,cACR,qBACA,2BACA;AAAA,yFACF;AAAA;AAAA,MAEJ,EAAO;AAAA,QACL,MAAM,IAAI,cACR,qBACA,wEACA;AAAA,qHACF;AAAA;AAAA,MAIF,IAAI,QAAQ,cAAc;AAAA,QACxB,IAAI;AAAA,UACF,KAAK,eAAe,KAAK,MAAM,QAAQ,YAAY;AAAA,UACnD,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,wCACA;AAAA,iGACF;AAAA;AAAA,MAEJ;AAAA,MAGA,IAAI,cAAc,KAAK,YAAY,GAAG;AAAA,QACpC,MAAM,IAAI,cACR,qBACA,gDACA;AAAA,6FACF;AAAA,MACF;AAAA,MAGA,IAAI,cAAc,KAAK,WAAW,GAAG;AAAA,QACnC,MAAM,IAAI,cACR,oBACA,qFACA;AAAA;AAAA,IACA,kHACF;AAAA,MACF,EAAO,SAAI,CAAC,kBAAkB,KAAK,WAAW,GAAG;AAAA,QAC/C,MAAM,IAAI,cACR,oBACA,kDACA;AAAA,IAA0C,oBAAoB,aAAa,CAC7E;AAAA,MACF,EAAO;AAAA,QACL,MAAM,eAAe,2BAA2B,KAAK,WAAW;AAAA,QAChE,IAAI,aAAa,SAAS,GAAG;AAAA,UAC3B,MAAM,IAAI,cACR,oBACA,gDAAgD,aAAa,KAAK,IAAI,KACtE;AAAA,wKACF;AAAA,QACF;AAAA;AAAA,MAIF,IAAI,cAAc,KAAK,YAAY,GAAG;AAAA,QACpC,OAAO,KAAK,sEAAsE;AAAA,MACpF,EAAO,SAAI,CAAC,kBAAkB,KAAK,YAAY,GAAG;AAAA,QAChD,OAAO,KAAK,oBAAoB,cAAc,CAAC;AAAA,MACjD;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,aAAa,IAAI;AAAA,MAE7C,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,uBAAuB,OAAO,IAAI,OAAO,IAAI;AAAA,QAC/D,OAAO,OAAO,KAAK,QAAQ,QAAQ,YAAY,OAAO,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QAClF,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,OAAO,aAAa,OAAO,OAAO,EAAE,IAAI;AAAA,QAC1E,OAAO,KAAK,cAAc,OAAO,sBAAsB,KAAK,8BAA8B;AAAA,QAC1F,MAAM,QAAQ,oBAAoB;AAAA,UAChC,cAAc;AAAA,UACd,IAAI,OAAO;AAAA,UACX,MAAM,OAAO;AAAA,UACb,cAAc,WAAW,OAAO,EAAE;AAAA,UAClC,SAAS,gBAAgB,OAAO,OAAO,EAAE;AAAA,QAC3C,CAAC;AAAA,QACD,QAAQ,IAAI,KAAK;AAAA;AAAA,MAInB,IAAI,QAAQ,SAAS;AAAA,QACnB,MAAM,cAAc,QAAQ;AAAA,QAC5B,sBAAsB,SAAO;AAAA,UAC3B,MAAM,WAAW,KAAK,aAAa,KAAK,gBAAgB,KAAK,QAAQ,IAAI,MAAM,GAAG,EAAE;AAAA,UACpF,IAAI,oBAAoB,aAAa,GAAG,OAAO;AAAA,UAC/C,IAAI,mBAAmB,aAAa,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO;AAAA,SACtE;AAAA,MACH;AAAA,MACA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,qBAAqB,gEAA+D,EAC3F,OAAO,qBAAqB,iDAAiD,EAC7E,OAAO,qBAAqB,UAAU,EACtC,OAAO,wBAAwB,sCAAsC,EACrE,OAAO,2BAA2B,iDAAiD,EACnF,OAAO,oBAAoB,iCAAiC,EAC5D,OAAO,mBAAmB,kCAAkC,EAC5D,OAAO,kBAAkB,kCAAkC,EAC3D,OAAO,qBAAqB,sEAAwE,EACpG,OAAO,yBAAyB,6BAA6B,EAC7D,OAAO,8BAA8B,6BAA6B,EAClE,OAAO,0BAA0B,8BAA8B,EAC/D,OAAO,+BAA+B,8BAA8B,EACpE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,4CAA4C;AAAA,KACnD,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,OAAwB,CAAC;AAAA,MAG7B,IAAI,QAAQ,MAAM;AAAA,QAChB,IAAI;AAAA,UACF,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,UAC9B,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,+BACA;AAAA,IACA,0FACF;AAAA;AAAA,QAGF,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO,SAAI,QAAQ,SAAS;AAAA,QAE1B,IAAI,CAAC,YAAW,QAAQ,OAAO,GAAG;AAAA,UAChC,MAAM,IAAI,cACR,kBACA,mBAAmB,QAAQ,WAC3B;AAAA,IACA,mCACF;AAAA,QACF;AAAA,QACA,MAAM,cAAc,cAAa,QAAQ,SAAS,OAAO;AAAA,QACzD,KAAK,YAAY;AAAA,QACjB,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO;AAAA,QACL,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,QAIpD,IAAI,QAAQ,UAAU;AAAA,UAEpB,IAAI;AAAA,YACF,MAAM,WAAW,KAAK,MAAM,QAAQ,QAAQ;AAAA,YAE5C,MAAM,YAAY,SAAS,KAAK,OAAK,EAAE,SAAS,QAAQ;AAAA,YACxD,MAAM,WAAW,SAAS,KAAK,OAAK,EAAE,SAAS,UAAU,EAAE,SAAS,OAAO;AAAA,YAC3E,IAAI;AAAA,cAAW,KAAK,eAAe,UAAU;AAAA,YAC7C,IAAI;AAAA,cAAU,KAAK,cAAc,SAAS;AAAA,YAC1C,MAAM;AAAA,YACN,MAAM,IAAI,cACR,gBACA,mCACA;AAAA,IACA,yEACF;AAAA;AAAA,QAEJ,EAAO,SAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,UAE1C,IAAI,QAAQ;AAAA,YAAQ,KAAK,eAAe,QAAQ;AAAA,UAChD,IAAI,QAAQ;AAAA,YAAO,KAAK,cAAc,QAAQ;AAAA,QAChD,EAAO,SAAI,QAAQ,KAAK;AAAA,UAEtB,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,UAE1B,KAAK,YAAY,QAAQ;AAAA,QAC3B;AAAA;AAAA,MAIF,MAAM,oBAAoB,kBACxB,QAAQ,aAAa,QAAQ,iBAC7B,gBAAgB,gCAClB;AAAA,MACA,IAAI;AAAA,QAAmB,KAAK,cAAc;AAAA,MAG1C,MAAM,qBAAqB,kBACzB,QAAQ,cAAc,QAAQ,kBAC9B,iBAAiB,gCACnB;AAAA,MACA,IAAI;AAAA,QAAoB,KAAK,eAAe;AAAA,MAG5C,IAAI,KAAK,eAAe,kBAAkB,KAAK,WAAW,GAAG;AAAA,QAC3D,MAAM,eAAe,2BAA2B,KAAK,WAAW;AAAA,QAChE,IAAI,aAAa,SAAS,GAAG;AAAA,UAC3B,MAAM,IAAI,cACR,oBACA,gDAAgD,aAAa,KAAK,IAAI,KACtE;AAAA,IACA,yKACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAAA,QAClC,MAAM,IAAI,cACR,qBACA,2BACA;AAAA,IACA,yGACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,aAAa,IAAI,IAAI;AAAA,MAEjD,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,uBAAuB,OAAO,IAAI,OAAO,IAAI;AAAA,QAC/D,OAAO,OAAO,KAAK,QAAQ,QAAQ,YAAY,OAAO,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QAClF,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,OAAO,aAAa,OAAO,OAAO,EAAE,IAAI;AAAA,QAC1E,MAAM,QAAQ,oBAAoB;AAAA,UAChC,cAAc;AAAA,UACd,IAAI,OAAO;AAAA,UACX,MAAM,OAAO;AAAA,UACb,cAAc,WAAW,OAAO,EAAE;AAAA,UAClC,SAAS,gBAAgB,OAAO,OAAO,EAAE;AAAA,QAC3C,CAAC;AAAA,QACD,QAAQ,IAAI,KAAK;AAAA;AAAA,MAInB,IAAI,QAAQ,SAAS;AAAA,QACnB,MAAM,cAAc,QAAQ;AAAA,QAC5B,sBAAsB,SAAO;AAAA,UAC3B,IAAI,mBAAmB,aAAa,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO;AAAA,SACtE;AAAA,MACH;AAAA,MACA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,wHAAuH;AAAA,KAC9H,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,IAAI,cACR,yBACA,mBAAmB,4BACnB;AAAA,IACA;AAAA,IACA,mDAAmD,YACrD;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,IAAI;AAAA,QACF,MAAM,OAAO,aAAa,EAAE;AAAA,QAC5B,OAAO,aAAa;AAAA,QAEpB,IAAI,uBAAuB,YAAY,YAAY,eAAe,KAAK;AAAA,UACrE,IAAI,QAAQ;AAAA,YACV,MAAM,YAAY,uBAAuB,EAAE;AAAA,YAC3C,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,IAAI,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,YAClH,sBAAsB,SAAS;AAAA,UACjC,EAAO;AAAA,YACL,OAAO,QAAQ,UAAU,iCAAiC;AAAA;AAAA,UAE5D;AAAA,QACF;AAAA,QACA,MAAM;AAAA;AAAA,MAGR,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,uBAAuB,EAAE;AAAA,QAC3C,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,IAAI,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QAClH,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,IAAI;AAAA,QACtC,OAAO,KAAK,iBAAiB,qBAAqB,GAAG;AAAA;AAAA,MAEvD,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA;;;AE1jBL;AAFA,oBAAS;AACT;AAGA;AA4EO,SAAS,uBAAuB,CAAC,SAAwB;AAAA,EAC9D,MAAM,UAAU,IAAI,SAAQ,SAAS,EAClC,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,QAAQ,KAAK;AAAA,GACd;AAAA,EACH,QAAQ,WAAW,OAAO;AAAA,EAG1B,QACG,QAAQ,MAAM,EACd,YAAY,4BAA4B,EACxC,SAAS,eAAe,yCAAyC,EACjE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,aAAa,QAAQ;AAAA,MAEnD,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,SAAS,IAAI,CAAC,OAAO;AAAA,UACrC,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,WAAW,EAAE;AAAA,UACb,WAAW,EAAE;AAAA,UACb,QAAQ,aAAa,UAAU,EAAE,EAAE;AAAA,QACrC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAY,SAAS,IAAI,CAAC,OAAO;AAAA,UACrC,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,WAAW,EAAE;AAAA,UACb,SAAS,EAAE,YAAY,IAAI,KAAK,OAAO,EAAE,SAAS,CAAC,EAAE,mBAAmB,IAAI;AAAA,UAC5E,KAAK,YAAY,UAAU,EAAE,EAAE;AAAA,QACjC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,KAAK,EACb,YAAY,yBAAyB,EACrC,SAAS,eAAe,yCAAyC,EACjE,OAAO,qBAAqB,oCAAoC,EAChE,OAAO,qBAAqB,cAAc,EAC1C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA,IAIb,OAAM,IAAI,uEAAuE;AAAA;AAAA;AAAA,IAGjF,OAAM,IAAI,6EAA6E;AAAA;AAAA,EAEzF,OAAM,OAAO,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpC,OAAM,IAAI,oCAAoC;AAAA,KAC3C,EACA,OAAO,OAAO,UAAkB,YAA+B;AAAA,IAC9D,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,CAAC,QAAQ,MAAM;AAAA,QACjB,MAAM,IAAI,cACR,qBACA,yBACA;AAAA,IACA,8CACF;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,MAGJ,IAAI;AAAA,QACF,MAAM,SAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,QAC/C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,UAC1B,MAAM,IAAI,cACR,gBACA,oCACA;AAAA,IACA,2EACF;AAAA,QACF;AAAA,QACA,UAAU,QAAQ;AAAA,QAClB,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAe,MAAM;AAAA,QACtC,MAAM,IAAI,cACR,gBACA,kCACA;AAAA,IACA,iFACF;AAAA;AAAA,MAIF,MAAM,cAAc,QAAQ;AAAA,MAC5B,IAAI,CAAC,aAAa;AAAA,QAChB,MAAM,IAAI,cACR,qBACA,4BACA;AAAA,IACA;AAAA,IACA,yDAAyD,yCAC3D;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,gBAAgB,MAAM,OAAO,WAAW,UAAU,SAAS,WAAW;AAAA,MAE5E,IAAI,QAAQ;AAAA,QACV,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,MAAM,QAAQ,MAAM,OAAO,gBAAgB,QAAQ;AAAA,UACnD,UAAU,EAAE,aAAa,MAAM,OAAO;AAAA,UACtC,MAAM;AAAA,QACR,MAAM,YAAY,sBAAsB,UAAU,cAAc,IAAI,cAAc,MAAM,cAAc,WAAW,OAAO;AAAA,QACxH,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ,aAAa,UAAU,cAAc,EAAE;AAAA,UAC/C,YAAY;AAAA,QACd,CAAC;AAAA,QACD,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,kBAAkB,cAAc,oBAAoB,iBAAiB,OAAO,cAAc,EAAE,IAAI;AAAA,QAC/G,IAAI,cAAc,cAAc,aAAa,cAAc,YAAY,GAAG;AAAA,UACxE,OAAO,KAAK,mBAAmB,OAAO,cAAc,SAAS,GAAG;AAAA,QAClE;AAAA,QACA,IAAI,cAAc,+BAA+B,aAAa,cAAc,6BAA6B,GAAG;AAAA,UAC1G,OAAO,KACL,GAAG,OAAO,cAAc,0BAA0B,QAAQ,OAAO,cAAc,aAAa,CAAC,iFAC/F;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,oBAAoB;AAAA,UAChC,cAAc;AAAA,UACd,IAAI,cAAc;AAAA,UAClB,MAAM,cAAc;AAAA,UACpB,cAAc,YAAY,UAAU,cAAc,EAAE;AAAA,UACpD,SAAS,gBAAgB,qBAAqB,OAAO,cAAc,EAAE;AAAA,QACvE,CAAC;AAAA,QACD,QAAQ,IAAI,KAAK;AAAA;AAAA,MAInB,sBAAsB,SAAO;AAAA,QAC3B,IAAI,qBAAqB,eAAe,cAAc,MAAM,cAAc,aAAa,CAAC;AAAA,QACxF,IAAI,oBAAoB,eAAe,OAAO,cAAc,EAAE,GAAG,QAAQ;AAAA,OAC1E;AAAA,MACD,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,gCAAgC,EAC5C,SAAS,eAAe,yCAAyC,EACjE,SAAS,gBAAgB,8DAA8D,EACvF,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB,WAAmB,YAA2B;AAAA,IAC7E,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,IAAI,cACR,yBACA,oBAAoB,yBAAyB,kCAC7C;AAAA,IACA;AAAA,IACA,2DAA2D,YAAY,mBACzE;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,IAAI;AAAA,QACF,MAAM,OAAO,cAAc,UAAU,SAAS;AAAA,QAC9C,OAAO,aAAa;AAAA,QAEpB,IAAI,uBAAuB,YAAY,YAAY,eAAe,KAAK;AAAA,UACrE,IAAI,QAAQ;AAAA,YACV,MAAM,YAAY,wBAAwB,UAAU,SAAS;AAAA,YAC7D,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,WAAW,QAAQ,EAAE,UAAU,mBAAmB,QAAQ,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,YAChI,sBAAsB,SAAS;AAAA,UACjC,EAAO;AAAA,YACL,OAAO,QAAQ,WAAW,wCAAwC;AAAA;AAAA,UAEpE;AAAA,QACF;AAAA,QACA,MAAM;AAAA;AAAA,MAGR,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,wBAAwB,UAAU,SAAS;AAAA,QAC7D,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,WAAW,QAAQ,EAAE,UAAU,mBAAmB,QAAQ,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QAChI,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,yBAAyB,UAAU;AAAA,QACrE,OAAO,KAAK,kBAAkB,mBAAmB,QAAQ,GAAG;AAAA;AAAA,MAE9D,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA;;;AC7TL;AAFA,oBAAS;AACT;AAGA;;;ACJA;AAsCA,eAAsB,mBAAmB,CAAC,UAAiD;AAAA,EACzF,MAAM,SAAS,aAAa;AAAA,EAC5B,MAAM,SAAS,MAAM,OAAO,UAAU,QAAQ;AAAA,EAE9C,MAAM,WAAW,CAAC,GAAW,QAAwB,EAAE,SAAS,MAAM,EAAE,MAAM,GAAG,GAAG,IAAI,QAAQ;AAAA,EAEhG,MAAM,mBAAmB,OAAO,gBAAgB,OAAO,OAAO,iBAAiB,WACzE,OAAO,aAAyC,cAAc,CAAC,IACjE,CAAC;AAAA,EACL,MAAM,kBAAkB,OAAO,eAAe,OAAO,OAAO,gBAAgB,WACtE,OAAO,YAAwC,cAAc,CAAC,IAChE,CAAC;AAAA,EAEL,MAAM,cAAc,OAAO,KAAK,eAAe;AAAA,EAC/C,MAAM,eAAe,OAAO,KAAK,gBAAgB;AAAA,EAEjD,MAAM,YAAyB;AAAA,IAC7B,GAAG,YAAY,IAAI,QAAM,EAAE,OAAO,GAAG,QAAQ,eAAwB,aAAa,gBAAgB,GAAG,EAAE;AAAA,IACvG,GAAG,aAAa,IAAI,QAAM,EAAE,OAAO,GAAG,QAAQ,gBAAyB,aAAa,iBAAiB,GAAG,EAAE;AAAA,EAC5G;AAAA,EAGA,IAAI,iBAAiD;AAAA,EACrD,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,OAAO,aAAa,QAAQ;AAAA,IACnD,IAAI,SAAS,SAAS,GAAG;AAAA,MACvB,IAAI;AAAA,QACF,MAAM,OAAO,SAAS,IAAI;AAAA,QAC1B,MAAM,QAAQ,QAAQ,OAAO,MAAM,OAAO,iBAAiB,OAAO,IAAI,CAAC,IAAI,CAAC;AAAA,QAC5E,IAAI,MAAM,SAAS,GAAG;AAAA,UACpB,MAAM,YAAY,MAAM;AAAA,UACxB,iBAAmB,WAAW,kBAAkB,WAAW,SAAU;AAAA,QACvE;AAAA,QACA,MAAM;AAAA,IAGV;AAAA,IACA,MAAM;AAAA,EAER,MAAM,mBAAmB,UAAU,IAAI,GAAG,OAAO,QAAQ,kBAAkB;AAAA,IACzE,MAAM,UAAU,WAAW;AAAA,IAC3B,MAAM,WAAW,UACb,0CAA0C,oLAC1C,wBAAwB;AAAA,IAC5B,MAAM,OAAO,UACT,qMACA;AAAA,IACJ,MAAM,SAAS,UAAU,GAAG,kBAAkB,GAAG;AAAA,IACjD,MAAM,aAAa,UACf,0CAA0C,0FAC1C,yCAAyC;AAAA,IAE7C,OAAO;AAAA,MACL;AAAA,MACA;AAAA,SACI,QAAQ,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MAC/B,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,aAAa,yEAAyE;AAAA,QACxF;AAAA,MACF;AAAA,MACA,aAAa;AAAA,MACb,SAAS;AAAA,QACP,WAAW,aAAa,QAAQ;AAAA,QAChC,kBAAkB,aAAa,eAAe;AAAA,QAC9C,aAAa;AAAA,QACb,eAAe,SAAS,OAAO,eAAe,OAAO,gBAAgB,OAAO,aAAa,IAAI,GAAG;AAAA,QAChG,cAAc,iBAAiB,UAAU;AAAA,MAC3C;AAAA,IACF;AAAA,GACD;AAAA,EAED,OAAO;AAAA,IACL,QAAQ,EAAE,IAAI,UAAU,MAAM,OAAO,KAAK;AAAA,IAC1C,aAAa,EAAE,QAAQ,YAAY;AAAA,IACnC,cAAc,EAAE,QAAQ,aAAa;AAAA,IACrC,UAAU;AAAA,MACR,aAAa;AAAA,MACb,OAAO;AAAA,QACL,EAAE,MAAM,GAAG,QAAQ,qCAAqC,QAAQ,6DAA6D;AAAA,QAC7H,EAAE,MAAM,GAAG,QAAQ,+CAA+C,QAAQ,mBAAmB,OAAO,UAAU,MAAM,wFAAwF,OAAO,YAAY,MAAM,yFAAwF,OAAO,aAAa,MAAM,uJAAuJ;AAAA,QAC9e,EAAE,MAAM,GAAG,QAAQ,uBAAuB,QAAQ,uFAAuF;AAAA,QACzI,EAAE,MAAM,GAAG,QAAQ,2BAA2B,QAAQ,wCAAwC;AAAA,QAC9F,EAAE,MAAM,GAAG,QAAQ,yBAAyB,QAAQ,sCAAsC,8CAA8C;AAAA,MAC1I;AAAA,MACA,kBAAkB;AAAA,QAChB,YAAY;AAAA,UACV,UAAU,CAAC;AAAA,YACT,MAAM;AAAA,YACN,aAAa;AAAA,YACb,qBAAqB,YAAY,UAAU,SAAS,IAAI,UAAU,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI;AAAA,UACnG,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,gBAAgB,sCAAsC,uCAAuC,KAAK,UAAU;AAAA,QAC1G,YAAY;AAAA,UACV,UAAU,aAAa,MAAM,GAAG,CAAC,EAAE,IAAI,QAAM;AAAA,YAC3C,MAAM,GAAG;AAAA,YACT,aAAa,cAAc;AAAA,YAC3B,qBAAqB;AAAA,UACvB,EAAE;AAAA,QACJ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA;AAAA,IACA,YAAY;AAAA,MACV,SAAS;AAAA,MACT,aACE;AAAA,IACA,2FAA2F,OAAO,UAAU,MAAM;AAAA,IAClH;AAAA,IACA,oBAAoB,OAAO,YAAY,MAAM;AAAA,IAC7C;AAAA,IACA,qBAAqB,OAAO,aAAa,MAAM;AAAA,IAC/C,2BAA2B,OAAO,UAAU,MAAM;AAAA,IAClD;AAAA,MACF,qBAAqB;AAAA,QACnB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO,EAAE,aAAa,cAAc,UAAU;AAAA,EAChD;AAAA;;;ADhJK,SAAS,0BAA0B,CAAC,SAAwB;AAAA,EACjE,MAAM,aAAa,IAAI,SAAQ,YAAY,EACxC,YAAY,gCAAgC,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,WAAW,KAAK;AAAA,GACjB;AAAA,EACH,QAAQ,WAAW,UAAU;AAAA,EAG7B,WACG,QAAQ,MAAM,EACd,YAAY,+BAA+B,EAC3C,SAAS,eAAe,yCAAyC,EACjE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,gBAAgB,QAAQ;AAAA,MAEnD,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,MAAM,IAAI,CAAC,OAAO;AAAA,UAClC,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,aAAa,EAAE;AAAA,UACf,WAAW,EAAE;AAAA,UACb,QAAQ,gBAAgB,UAAU,EAAE,EAAE;AAAA,QACxC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAY,MAAM,IAAI,CAAC,OAAO;AAAA,UAClC,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,aAAa,EAAE;AAAA,UACf,SAAS,EAAE,YAAY,IAAI,KAAK,OAAO,EAAE,SAAS,CAAC,EAAE,mBAAmB,IAAI;AAAA,UAC5E,KAAK,eAAe,UAAU,EAAE,EAAE;AAAA,QACpC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,KAAK,EACb,YAAY,2CAA2C,EACvD,SAAS,mBAAmB,oEAAoE,EAChG,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,iBAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAAU,MAAM,OAAO,cAAc,YAAY;AAAA,MAEvD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,EAAE;AAAA,QAC3D,CAAC;AAAA,MACH,EAAO;AAAA,QACL,OAAO,QAAQ,eAAe,QAAQ,aAAa,OAAO,QAAQ,EAAE,IAAI;AAAA,QACxE,IAAI,QAAQ,aAAa;AAAA,UACvB,QAAQ,IAAI,kBAAkB,QAAQ,aAAa;AAAA,QACrD;AAAA,QACA,QAAQ,IAAI,kBAAkB,QAAQ,YAAY,IAAI,KAAK,OAAO,QAAQ,SAAS,CAAC,EAAE,mBAAmB,IAAI,OAAO;AAAA,QACpH,QAAQ,IAAI,EAAE;AAAA,QAGd,MAAM,SAAS,QAAQ;AAAA,QACvB,MAAM,WAAW,QAAQ;AAAA,QACzB,IAAI,YAAY,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAAS,GAAG;AAAA,UAC9D,QAAQ,IAAI,aAAa;AAAA,UACzB,WAAW,KAAK,UAAU;AAAA,YACxB,QAAQ,IAAI,OAAO,OAAM,KAAK,EAAE,IAAI,GAAG;AAAA,YACvC,IAAI,EAAE,aAAa;AAAA,cACjB,QAAQ,IAAI,sBAAsB,EAAE,aAAa;AAAA,YACnD;AAAA,YACA,IAAI,EAAE,qBAAqB;AAAA,cACzB,QAAQ,IAAI,sBAAsB,EAAE,qBAAqB;AAAA,YAC3D;AAAA,YACA,QAAQ,IAAI,EAAE;AAAA,UAChB;AAAA,QACF,EAAO;AAAA,UACL,QAAQ,IAAI,wBAAwB;AAAA;AAAA,QAItC,MAAM,YAAY,QAAQ;AAAA,QAC1B,IAAI,aAAa,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AAAA,UAClD,QAAQ,IAAI,eAAe;AAAA,UAC3B,YAAY,KAAK,UAAU,OAAO,QAAQ,SAAS,GAAG;AAAA,YACpD,QAAQ,IAAI,OAAO,QAAQ,OAAO,KAAK,GAAG;AAAA,UAC5C;AAAA,UACA,QAAQ,IAAI,EAAE;AAAA,QAChB;AAAA,QAEA,OAAO,KAAK,sBAAsB,eAAe,QAAQ,eAAe,QAAQ,EAAE,GAAG;AAAA;AAAA,MAEvF,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,QAAQ,EAChB,YAAY,iDAAiD,EAC7D,SAAS,eAAe,yCAAyC,EACjE,OAAO,qBAAqB,6DAA6D,EACzF,OAAO,qBAAqB,4CAA4C,EACxE,OAAO,wBAAwB,wBAAwB,EACvD,OAAO,YAAY,8EAA6E,EAChG,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG,sEAAsE,OAAM,IAAI,qDAAqD;AAAA,IAClJ,OAAM,IAAI,GAAG,qEAAqE,OAAM,IAAI,qCAAqC;AAAA,IACjI,OAAM,IAAI,GAAG,8GAA8G,OAAM,IAAI,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBnJ,OAAM,IAAI,yHAAyH;AAAA;AAAA;AAAA,EAGrI,OAAM,IAAI,gFAAgF;AAAA,EAC1F,OAAM,IAAI,2DAA2D;AAAA,EACrE,OAAM,IAAI,uCAAuC;AAAA,KAC9C,EACA,OAAO,OAAO,UAAkB,YAAqC;AAAA,IAEpE,IAAI,SAAS,YAAY,OAAO;AAAA,IAChC,IAAI,QAAQ,QAAQ;AAAA,MAClB,SAAS;AAAA,IACX;AAAA,IACA,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,MAAM,uBAAuB,CAAC,OAAmC;AAAA,QAC/D,QAAQ,aAAa,cAAc,cAAc,GAAG;AAAA,QACpD,IAAI,QAAQ;AAAA,UACV,QAAQ,OAAO,eAAe,kBAAkB;AAAA,UAEhD,OAAO,OAAO,aAAa;AAAA,UAC3B,sBAAsB,GAAG,UAAU;AAAA,QACrC,EAAO;AAAA,UACL,OAAO,QAAQ,0CAA0C,GAAG,OAAO,aAAa,WAAW;AAAA,UAC3F,QAAQ,IAAI,EAAE;AAAA,UACd,IAAI,aAAa,SAAS,GAAG;AAAA,YAC3B,QAAQ,IAAI,2BAA2B,aAAa,KAAK,IAAI,GAAG;AAAA,UAClE;AAAA,UACA,IAAI,YAAY,SAAS,GAAG;AAAA,YAC1B,QAAQ,IAAI,2BAA2B,YAAY,KAAK,IAAI,GAAG;AAAA,UACjE;AAAA,UACA,QAAQ,IAAI,EAAE;AAAA,UACd,QAAQ,IAAI,0DAA0D;AAAA,UACtE,aAAa,OAAO,YAAY,WAAW;AAAA,YACzC,QAAQ,IAAI,OAAO,OAAM,KAAK,KAAK,MAAM,SAAS;AAAA,YAClD,QAAQ,IAAI,8CAA6C,SAAS;AAAA,UACpE;AAAA,UACA,QAAQ,IAAI,EAAE;AAAA,UACd,QAAQ,IAAI,+BAA+B;AAAA,UAC3C,QAAQ,IAAI,0CAA0C,8BAA8B;AAAA,UACpF,QAAQ,IAAI,+IAA+I,aAAa,MAAM,iBAAiB;AAAA,UAC/L,QAAQ,IAAI,EAAE;AAAA;AAAA;AAAA,MAKlB,IAAI,QAAQ,QAAQ;AAAA,QAClB,MAAM,WAAW,MAAM,oBAAoB,QAAQ;AAAA,QACnD,qBAAqB,QAAQ;AAAA,QAC7B;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,QAAQ,MAAM;AAAA,QACjB,IAAI,UAAU,QAAQ,OAAO,OAAO;AAAA,UAClC,MAAM,WAAW,MAAM,oBAAoB,QAAQ;AAAA,UACnD,qBAAqB,QAAQ;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,IAAI,cACR,qBACA,+BACA;AAAA,IACA,8CAA8C,WAAW,kBAC3D;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,QAAQ,MAAM;AAAA,QACjB,MAAM,IAAI,cACR,qBACA,+BACA;AAAA,IACA;AAAA,IACA,iEAAiE,WAAW,gCAC9E;AAAA,MACF;AAAA,MAEA,MAAM,WAOF;AAAA,QACF,MAAM,QAAQ;AAAA,QACd,aAAa,QAAQ;AAAA,MACvB;AAAA,MAGA,IAAI;AAAA,QACF,MAAM,SAAS,KAAK,MAAM,QAAQ,IAAI;AAAA,QACtC,IAAI,OAAO;AAAA,UAAY,SAAS,aAAa,OAAO;AAAA,QACpD,IAAI,OAAO;AAAA,UAAW,SAAS,YAAY,OAAO;AAAA,QAClD,IAAI,OAAO;AAAA,UAAM,SAAS,OAAO,OAAO;AAAA,QACxC,IAAI,OAAO;AAAA,UAAU,SAAS,WAAW,OAAO;AAAA,QAChD,MAAM;AAAA,QACN,MAAM,IAAI,cACR,gBACA,+BACA;AAAA,IACA,sGACF;AAAA;AAAA,MAIF,IAAI,QAAQ;AAAA,QAAM,SAAS,OAAO,QAAQ;AAAA,MAC1C,IAAI,QAAQ;AAAA,QAAa,SAAS,cAAc,QAAQ;AAAA,MAGxD,MAAM,WAAW,SAAS,YAAY;AAAA,MACtC,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAAG;AAAA,QAElE,IAAI,aAAa;AAAA,QACjB,IAAI;AAAA,UACF,MAAM,UAAS,aAAa;AAAA,UAC5B,MAAM,UAAS,MAAM,QAAO,UAAU,QAAQ;AAAA,UAC9C,IAAI,QAAO,gBAAgB,OAAO,QAAO,iBAAiB,UAAU;AAAA,YAClE,MAAM,QAAS,QAAO,aAAyC;AAAA,YAC/D,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,cACtC,MAAM,SAAS,OAAO,KAAK,KAAgC;AAAA,cAC3D,IAAI,OAAO,SAAS,GAAG;AAAA,gBACrB,aAAa;AAAA,6CAAgD,OAAO,KAAK,IAAI;AAAA;AAAA,cAC/E;AAAA,YACF;AAAA,UACF;AAAA,UACA,MAAM;AAAA,QAGR,MAAM,IAAI,cACR,oBACA,kEACA;AAAA,IACA,8CAA8C,WAAW;AAAA,IACzD,aACA;AAAA;AAAA,IACA;AAAA,CACF;AAAA,MACF;AAAA,MACA,WAAW,KAAK,UAAuC;AAAA,QAGrD,IAAI,EAAE,iBAAiB,CAAC,EAAE,aAAa;AAAA,UACrC,EAAE,cAAc,EAAE;AAAA,UAClB,OAAO,EAAE;AAAA,QACX;AAAA,QACA,IAAI,EAAE,eAAe,CAAC,EAAE,qBAAqB;AAAA,UAC3C,MAAM,KAAK,EAAE;AAAA,UACb,EAAE,sBAAsB,GAAG,WAAW,SAAS,IAAI,GAAG,MAAM,UAAU,MAAM,IACxE,GAAG,WAAW,QAAQ,IAAI,GAAG,MAAM,SAAS,MAAM,IAAI;AAAA,UAC1D,OAAO,EAAE;AAAA,QACX;AAAA,QAEA,MAAM,iBAAiB,EAAE;AAAA,QACzB,MAAM,eAAe,EAAE;AAAA,QACvB,IAAI,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,cAAc;AAAA,UAC/C,MAAM,QAAQ,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO;AAAA,UACpD,MAAM,IAAI,cACR,oBACA,cAAc,oFACd;AAAA,IACA,8CAA8C,WAAW,kBAC3D;AAAA,QACF;AAAA,MACF;AAAA,MAGA,MAAM,aAAa,IAAI;AAAA,MACvB,MAAM,kBAA4B,CAAC;AAAA,MACnC,WAAW,KAAK,UAAgD;AAAA,QAC9D,MAAM,QAAQ,EAAE;AAAA,QAChB,IAAI,OAAO;AAAA,UACT,IAAI,WAAW,IAAI,KAAK,GAAG;AAAA,YACzB,gBAAgB,KAAK,KAAK;AAAA,UAC5B;AAAA,UACA,WAAW,IAAI,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,MACA,IAAI,gBAAgB,SAAS,GAAG;AAAA,QAE9B,IAAI,kBAA4B,CAAC;AAAA,QACjC,IAAI;AAAA,UACF,MAAM,UAAS,aAAa;AAAA,UAC5B,MAAM,UAAS,MAAM,QAAO,UAAU,QAAQ;AAAA,UAC9C,IAAI,QAAO,gBAAgB,OAAO,QAAO,iBAAiB,UAAU;AAAA,YAClE,MAAM,QAAS,QAAO,aAAyC;AAAA,YAC/D,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,cACtC,kBAAkB,OAAO,KAAK,KAAgC;AAAA,YAChE;AAAA,UACF;AAAA,UACA,MAAM;AAAA,QAGR,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,eAAe,CAAC;AAAA,QAChD,MAAM,aAAa,gBAAgB,SAAS,IACxC;AAAA,2BAA8B,gBAAgB,KAAK,IAAI,MACvD;AAAA,QACJ,MAAM,IAAI,cACR,oBACA,mCAAmC,YAAY,KAAK,MAAM,yDAC1D;AAAA,IACA,+GACA,aACA;AAAA;AAAA;AAAA,yCACA,oFACA,iFACA,MACF;AAAA,MACF;AAAA,MAGA,MAAM,eAAe,aAAa;AAAA,MAClC,MAAM,SAAS,MAAM,aAAa,UAAU,QAAQ;AAAA,MACpD,MAAM,iBAAsD,CAAC;AAAA,MAE7D,IAAI,OAAO,eAAe,OAAO,OAAO,gBAAgB,UAAU;AAAA,QAChE,MAAM,QAAS,OAAO,YAAwC;AAAA,QAC9D,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,UACtC,WAAW,SAAS,OAAO,KAAK,KAAgC,GAAG;AAAA,YACjE,eAAe,KAAK,EAAE,OAAO,QAAQ,cAAc,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,OAAO,gBAAgB,OAAO,OAAO,iBAAiB,UAAU;AAAA,QAClE,MAAM,QAAS,OAAO,aAAyC;AAAA,QAC/D,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,UACtC,WAAW,SAAS,OAAO,KAAK,KAAgC,GAAG;AAAA,YACjE,eAAe,KAAK,EAAE,OAAO,QAAQ,eAAe,CAAC;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,eAAe,SAAS,GAAG;AAAA,QAC7B,MAAM,gBAAgB,IAAI,IACvB,SAAgD,IAAI,OAAK,EAAE,mBAAmB,CACjF;AAAA,QACA,MAAM,UAAU,eAAe,OAAO,OAAK,CAAC,cAAc,IAAI,EAAE,KAAK,CAAC;AAAA,QACtE,IAAI,QAAQ,SAAS,GAAG;AAAA,UACtB,MAAM,cAAc,QAAQ,IAAI,OAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI;AAAA,UAC1E,MAAM,IAAI,cACR,oBACA,uDAAuD,eACvD;AAAA,IACA,mBAAmB,eAAe,qBAAqB,cAAc;AAAA,IACrE,6CAA6C,WAAW,kBAC1D;AAAA,QACF;AAAA,MACF;AAAA,MAGA,IAAI,eAAe,SAAS,GAAG;AAAA,QAC7B,MAAM,kBAAkB,IAAI,IAAI,eAAe,IAAI,OAAK,EAAE,KAAK,CAAC;AAAA,QAChE,MAAM,gBAAiB,SACpB,OAAO,OAAK,EAAE,uBAAuB,CAAC,gBAAgB,IAAI,EAAE,mBAAmB,CAAC;AAAA,QACnF,IAAI,cAAc,SAAS,GAAG;AAAA,UAC5B,MAAM,cAAc,cAAc,IAAI,OAAK,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,KAAK,IAAI;AAAA,UACzG,MAAM,IAAI,cACR,oBACA,mCAAmC,2CACnC,qBAAqB,eAAe,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,IAAI;AAAA,IAC/D,6CAA6C,WAAW,kBAC1D;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,iBAAiB,UAAU,QAAQ;AAAA,MAEnE,IAAI,QAAQ;AAAA,QACV,MAAM,cAAe,SAAS,YAAY,UAAoC,UAAU;AAAA,QACxF,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,MAAM,WAAW,MAAM,OAAO,aAAa,QAAQ;AAAA,UACnD,UAAU,EAAE,UAAU,SAAS,OAAO;AAAA,UACtC,MAAM;AAAA,QACR,MAAM,YAAY,2BAA2B,UAAU,WAAW,IAAI,WAAW,MAAM,aAAa,OAAO;AAAA,QAC3G,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ,gBAAgB,UAAU,WAAW,EAAE;AAAA,UAC/C,YAAY;AAAA,QACd,CAAC;AAAA,QACD,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,uBAAuB,WAAW,aAAa,OAAO,WAAW,EAAE,IAAI;AAAA,QACtF,MAAM,QAAQ,oBAAoB;AAAA,UAChC,cAAc;AAAA,UACd,IAAI,WAAW;AAAA,UACf,MAAM,WAAW;AAAA,UACjB,cAAc,eAAe,UAAU,WAAW,EAAE;AAAA,UACpD,SAAS,gBAAgB,wBAAwB,OAAO,WAAW,EAAE;AAAA,QACvE,CAAC;AAAA,QACD,QAAQ,IAAI,KAAK;AAAA;AAAA,MAInB,MAAM,gBAAiB,SAAS,YAAY,UAAoC,UAAU;AAAA,MAC1F,sBAAsB,SAAO;AAAA,QAC3B,IAAI,cAAc,WAAW,MAAM,eAAe,OAAO,WAAW,EAAE,GAAG,QAAQ;AAAA,OAClF;AAAA,MACD,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,QAAQ,EAChB,YAAY,sBAAsB,EAClC,SAAS,mBAAmB,oEAAoE,EAChG,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,cAAsB,YAA2B;AAAA,IAC9D,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,IAAI,cACR,yBACA,uBAAuB,sCACvB;AAAA,IACA;AAAA,IACA,8DAA8D,sBAChE;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,IAAI;AAAA,QACF,MAAM,OAAO,iBAAiB,YAAY;AAAA,QAC1C,OAAO,aAAa;AAAA,QAEpB,IAAI,uBAAuB,YAAY,YAAY,eAAe,KAAK;AAAA,UACrE,IAAI,QAAQ;AAAA,YACV,MAAM,YAAY,2BAA2B,YAAY;AAAA,YACzD,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,cAAc,QAAQ,EAAE,WAAW,qBAAqB,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,YAC9H,sBAAsB,SAAS;AAAA,UACjC,EAAO;AAAA,YACL,OAAO,QAAQ,cAAc,2CAA2C;AAAA;AAAA,UAE1E;AAAA,QACF;AAAA,QACA,MAAM;AAAA;AAAA,MAGR,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,2BAA2B,YAAY;AAAA,QACzD,OAAO,OAAO,EAAE,SAAS,MAAM,WAAW,cAAc,QAAQ,EAAE,WAAW,qBAAqB,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QAC9H,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,OAAO,QAAQ,cAAc,mCAAmC;AAAA,QAChE,OAAO,KAAK,qBAAqB,qBAAqB,GAAG;AAAA;AAAA,MAE3D,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA;;;AE/hBL;AAFA,oBAAS;AACT;AAGA;;;ACJA;AA8CA,SAAS,YAAY,CAAC,MAAc,QAAwB;AAAA,EAC1D,IAAI,KAAK,UAAU;AAAA,IAAQ,OAAO;AAAA,EAClC,OAAO,KAAK,UAAU,GAAG,SAAS,CAAC,IAAI;AAAA;AAGzC,SAAS,iBAAiB,CAAC,QAA4B,OAAmC;AAAA,EACxF,IAAI,WAAW,aAAa,UAAU;AAAA,IAAW,OAAO;AAAA,EACxD,MAAM,OAAO,QAAQ;AAAA,EACrB,MAAM,MAAM,SAAS,IAAI,KAAK,MAAO,OAAO,SAAU,GAAG,IAAI;AAAA,EAC7D,IAAI,OAAO;AAAA,IAAG,OAAO,OAAM,MAAM,MAAM,OAAO,GAAG,KAAK;AAAA,EACtD,IAAI,OAAO;AAAA,IAAG,OAAO,OAAM,IAAI,KAAK,OAAO,GAAG,KAAK;AAAA,EACnD,OAAO,OAAM,IAAI,cAAc;AAAA;AAGjC,SAAS,WAAW,CAAC,OAAmC;AAAA,EACtD,IAAI,UAAU;AAAA,IAAW,OAAO,OAAM,IAAI,KAAK;AAAA,EAC/C,OAAO,SAAS,MAAM,OAAM,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,SAAS,MAAM,OAAM,OAAO,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAM,IAAI,MAAM,QAAQ,CAAC,CAAC;AAAA;AAO3H,SAAS,eAAe,CAAC,MAAoC;AAAA,EAClE,QAAQ,KAAK,WAAW;AAAA,EAExB,MAAM,WAAW;AAAA,EACjB,MAAM,YAAY,IAAS,IAAS,OAAO,QAAQ;AAAA,EACnD,MAAM,eAAe,IAAS,IAAS,OAAO,QAAQ;AAAA,EACtD,MAAM,YAAY,KAAU,IAAS,OAAO,WAAW,CAAC;AAAA,EACxD,MAAM,MAAM,CAAC,MAAc,UAA0B;AAAA,IAGnD,MAAM,WAAW,KAAK,QAAQ,qBAAqB,EAAE;AAAA,IACrD,MAAM,YAAY,QAAQ,SAAS;AAAA,IACnC,OAAO,YAAY,IAAI,OAAO,IAAI,OAAO,SAAS,IAAI;AAAA;AAAA,EAExD,MAAM,OAAO,CAAC,SAAyB,KAAU,IAAI,MAAM,WAAW,CAAC;AAAA,EAEvE,MAAM,gBAAgB,KAAK;AAAA,EAC3B,MAAM,YAAY,KAAK;AAAA,EACvB,MAAM,aAAa,KAAK,uBAAuB,IAAI,QAAQ,iBAAiB;AAAA,EAG5E,MAAM,eAAe,KAAK,gBAAgB,gBACrC,KAAK,gBAAgB,aACrB;AAAA,EACL,MAAM,gBAAgB,OAAO,gBAAgB,OAAO,aAAa,OAAO,eAAe;AAAA,EAEvF,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,OAAM,KAAK,sBAAsB,CAAC,CAAC;AAAA,EACpD,QAAQ,IAAI,SAAS;AAAA,EAGrB,QAAQ,IAAI,KAAK,OAAM,IAAI,QAAQ,CAAC,CAAC;AAAA,EACrC,QAAQ,IAAI,KAAK,aAAa,OAAM,IAAI,aAAa,cAAc,EAAE,CAAC,GAAG,CAAC;AAAA,EAC1E,QAAQ,IAAI,KAAK,aAAa,YAAY,aAAa,GAAG,CAAC;AAAA,EAC3D,QAAQ,IAAI,KAAK,EAAE,CAAC;AAAA,EAGpB,QAAQ,IAAI,KAAK,OAAM,KAAK,OAAO,CAAC,CAAC;AAAA,EACrC,QAAQ,IAAI,KAAK,aAAa,OAAM,KAAK,aAAa,eAAe,EAAE,CAAC,GAAG,CAAC;AAAA,EAC5E,QAAQ,IAAI,KAAK,aAAa,YAAY,SAAS,IAAI,kBAAkB,eAAe,SAAS,GAAG,CAAC;AAAA,EACrG,QAAQ,IAAI,SAAS;AAAA,EAGrB,IAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS,GAAG;AAAA,IACzD,QAAQ,IAAI,KAAK,OAAM,IAAI,+CAA+C,CAAC,CAAC;AAAA,IAC5E,QAAQ,IAAI,KAAK,OAAM,IAAI,OAAO,IAAS,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,IACvD,WAAW,KAAK,KAAK,gBAAgB;AAAA,MACnC,MAAM,OAAO,EAAE,KAAK,SAAS,KAAK,EAAE,KAAK,UAAU,GAAG,EAAE,IAAI,QAAQ,EAAE;AAAA,MACtE,MAAM,aAAa,OAAO,IAAI,OAAO,KAAK,KAAK,MAAM;AAAA,MACrD,MAAM,YAAY,EAAE,WAAW,YAAY,EAAE,OAAO,QAAQ,CAAC,IAAI;AAAA,MACjE,MAAM,WAAW,EAAE,UAAU,YAAY,EAAE,MAAM,QAAQ,CAAC,IAAI;AAAA,MAC9D,MAAM,YAAY,EAAE,WAAW,aAAa,EAAE,UAAU,aAAa,EAAE,SAAS,KAC3E,MAAc;AAAA,QACb,MAAM,MAAM,KAAK,OAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAU,GAAG;AAAA,QAC9D,IAAI,MAAM;AAAA,UAAG,OAAO,OAAM,MAAM,IAAI,OAAO,GAAG,IAAI;AAAA,QAClD,IAAI,MAAM;AAAA,UAAG,OAAO,OAAM,IAAI,GAAG,OAAO,GAAG,IAAI;AAAA,QAC/C,OAAO,OAAM,IAAI,IAAI;AAAA,SACpB,IACH;AAAA,MACJ,QAAQ,IAAI,KAAK,KAAK,aAAa,kBAAkB,gBAAgB,WAAW,CAAC;AAAA,IACnF;AAAA,IACA,QAAQ,IAAI,KAAK,OAAM,IAAI,OAAO,IAAS,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,IACvD,MAAM,gBAAgB,kBAAkB,YAAY,cAAc,QAAQ,CAAC,IAAI;AAAA,IAC/E,MAAM,eAAe,cAAc,YAAY,UAAU,QAAQ,CAAC,IAAI;AAAA,IACtE,MAAM,gBAAgB,kBAAkB,aAAa,cAAc,aAAa,gBAAgB,KAC3F,MAAc;AAAA,MACb,MAAM,MAAM,KAAK,OAAQ,YAAY,iBAAiB,gBAAiB,GAAG;AAAA,MAC1E,IAAI,MAAM;AAAA,QAAG,OAAO,OAAM,MAAM,IAAI,OAAO,GAAG,IAAI;AAAA,MAClD,IAAI,MAAM;AAAA,QAAG,OAAO,OAAM,IAAI,GAAG,OAAO,GAAG,IAAI;AAAA,MAC/C,OAAO,OAAM,IAAI,IAAI;AAAA,OACpB,IACH;AAAA,IACJ,QAAQ,IAAI,KAAK,KAAK,YAAY,IAAI,OAAO,EAAE,IAAI,sBAAsB,oBAAoB,eAAe,CAAC;AAAA,IAC7G,QAAQ,IAAI,SAAS;AAAA,EACvB;AAAA,EAGA,MAAM,YAAY,IAAI,WAAW,cAAc,OAAM,MAAM,WAAW,IAAI,OAAM,OAAO,IAAI,MAAM;AAAA,EACjG,QAAQ,IAAI,KAAK,WAAW,6BAA6B,OAAO,UAAU,GAAG,CAAC;AAAA,EAE9E,IAAI,IAAI,QAAQ,OAAO;AAAA,IACrB,QAAQ,IAAI,KAAK,UAAU,OAAM,IAAI,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,EAC3D;AAAA,EAGA,IAAI,KAAK,oBAAoB,KAAK,iBAAiB,SAAS,GAAG;AAAA,IAC7D,QAAQ,IAAI,KAAK,EAAE,CAAC;AAAA,IACpB,QAAQ,IAAI,KAAK,OAAM,IAAI,oBAAoB,CAAC,CAAC;AAAA,IACjD,MAAM,WAAW;AAAA,IACjB,SAAS,IAAI,EAAG,IAAI,KAAK,iBAAiB,QAAQ,KAAK;AAAA,MACrD,MAAM,IAAI,KAAK,iBAAiB,MAAM;AAAA,MACtC,MAAM,SAAS,KAAK,MAAM,IAAI,QAAQ;AAAA,MACtC,MAAM,MAAM,IAAS,OAAO,MAAM,IAAI,IAAS,OAAO,WAAW,MAAM;AAAA,MACvE,QAAQ,IAAI,KAAK,OAAM,IAAI,MAAM,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA,EAEA,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,cAAc,OAAM,UAAU,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC;AAAA,EACxE,QAAQ,IAAI,YAAY;AAAA,EACxB,QAAQ,IAAI,EAAE;AAAA;AAOT,SAAS,2BAA2B,CAAC,MAAmC;AAAA,EAC7E,QAAQ,QAAQ;AAAA,EAChB,MAAM,WAAW;AAAA,EACjB,MAAM,YAAY,IAAS,IAAG,OAAO,QAAQ;AAAA,EAC7C,MAAM,eAAe,IAAS,IAAG,OAAO,QAAQ;AAAA,EAChD,MAAM,YAAY,KAAU,IAAG,OAAO,WAAW,CAAC;AAAA,EAClD,MAAM,MAAM,CAAC,MAAc,UAA0B;AAAA,IAEnD,MAAM,WAAW,KAAK,QAAQ,qBAAqB,EAAE;AAAA,IACrD,MAAM,YAAY,QAAQ,SAAS;AAAA,IACnC,OAAO,YAAY,IAAI,OAAO,IAAI,OAAO,SAAS,IAAI;AAAA;AAAA,EAExD,MAAM,OAAO,CAAC,SAAyB,KAAU,IAAI,MAAM,WAAW,CAAC;AAAA,EAEvE,MAAM,UAAU,IAAI,OAAO;AAAA,EAC3B,MAAM,QAAQ,IAAI,OAAO,SAAS;AAAA,EAClC,MAAM,SAAS,IAAI,OAAO,eAAe;AAAA,EAEzC,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,OAAM,KAAK,wBAA6B,CAAC,CAAC;AAAA,EAC3D,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,gBAAgB,OAAM,KAAK,IAAI,EAAE,GAAG,CAAC;AAAA,EACtD,QAAQ,IAAI,KAAK,gBAAgB,OAAM,IAAI,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC5D,QAAQ,IAAI,KAAK,gBAAgB,OAAM,IAAI,KAAK,SAAS,GAAG,CAAC;AAAA,EAC7D,QAAQ,IAAI,KAAK,gBAAgB,OAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB,OAAM,KAAK,OAAO,QAAQ,CAAC,CAAC,GAAG,CAAC;AAAA,EAC5G,QAAQ,IAAI,KAAK,gBAAgB,OAAM,IAAI,KAAK,GAAG,CAAC;AAAA,EACpD,QAAQ,IAAI,KAAK,gBAAgB,OAAM,OAAO,IAAI,MAAM,GAAG,CAAC;AAAA,EAC5D,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,yBAAyB,OAAM,UAAU,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC;AAAA,EACnF,QAAQ,IAAI,KAAK,OAAM,IAAI,0CAA0C,IAAI,IAAI,CAAC,CAAC;AAAA,EAC/E,QAAQ,IAAI,YAAY;AAAA,EACxB,QAAQ,IAAI,YAAY;AAAA,EACxB,QAAQ,IAAI,EAAE;AAAA;AAOT,SAAS,4BAA4B,CAAC,QAA8B;AAAA,EACzE,MAAM,WAAW;AAAA,EACjB,MAAM,YAAY,IAAS,IAAG,OAAO,QAAQ;AAAA,EAC7C,MAAM,eAAe,IAAS,IAAG,OAAO,QAAQ;AAAA,EAChD,MAAM,YAAY,KAAU,IAAG,OAAO,WAAW,CAAC;AAAA,EAClD,MAAM,MAAM,CAAC,MAAc,UAA0B;AAAA,IAEnD,MAAM,WAAW,KAAK,QAAQ,qBAAqB,EAAE;AAAA,IACrD,MAAM,YAAY,QAAQ,SAAS;AAAA,IACnC,OAAO,YAAY,IAAI,OAAO,IAAI,OAAO,SAAS,IAAI;AAAA;AAAA,EAExD,MAAM,OAAO,CAAC,SAAyB,KAAU,IAAI,MAAM,WAAW,CAAC;AAAA,EAGvE,MAAM,WAAW,OAAO;AAAA,EACxB,MAAM,WAAW;AAAA,EACjB,MAAM,SAAS,KAAK,MAAO,WAAW,MAAO,QAAQ;AAAA,EACrD,MAAM,cAAc,IAAS,OAAO,MAAM,IAAI,IAAS,OAAO,WAAW,MAAM;AAAA,EAG/E,MAAM,cAAc,OAAO,WAAW,cAAc,OAAM,QACtD,OAAO,WAAW,WAAW,OAAM,MACnC,OAAO,WAAW,cAAc,OAAM,OACtC,OAAO,WAAW,YAAY,OAAM,OACpC,OAAM;AAAA,EAGV,MAAM,WAAW,OAAO,cAAc,YAClC,YAAY,OAAO,SAAS,IAC5B,OAAM,IAAI,SAAS;AAAA,EAEvB,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,OAAM,KAAK,kCAAkC,CAAC,CAAC;AAAA,EAChE,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,gBAAgB,OAAM,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,EAC5D,QAAQ,IAAI,KAAK,gBAAgB,YAAY,OAAO,MAAM,GAAG,CAAC;AAAA,EAC9D,QAAQ,IAAI,KAAK,gBAAgB,OAAM,KAAK,GAAG,OAAO,OAAO,gBAAgB,KAAK,OAAO,OAAO,aAAa,GAAG,GAAG,CAAC;AAAA,EACpH,QAAQ,IAAI,KAAK,gBAAgB,UAAU,CAAC;AAAA,EAC5C,QAAQ,IAAI,KAAK,EAAE,CAAC;AAAA,EACpB,QAAQ,IAAI,KAAK,iBAAiB,gBAAgB,OAAO,QAAQ,IAAI,CAAC;AAAA,EACtE,IAAI,OAAO,SAAS;AAAA,IAClB,QAAQ,IAAI,KAAK,gBAAgB,OAAM,IAAI,OAAO,OAAO,GAAG,CAAC;AAAA,EAC/D;AAAA,EACA,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,KAAK,yBAAyB,OAAM,UAAU,cAAc,OAAO,KAAK,CAAC,GAAG,CAAC;AAAA,EACzF,IAAI,OAAO,WAAW,aAAa;AAAA,IACjC,QAAQ,IAAI,KAAK,OAAM,IAAI,2CAA2C,OAAO,OAAO,CAAC,CAAC;AAAA,EACxF,EAAO,SAAI,OAAO,WAAW,aAAa,OAAO,WAAW,UAAU;AAAA,IACpE,QAAQ,IAAI,KAAK,OAAM,IAAI,6CAA6C,OAAO,OAAO,CAAC,CAAC;AAAA,EAC1F;AAAA,EACA,QAAQ,IAAI,YAAY;AAAA,EACxB,QAAQ,IAAI,YAAY;AAAA,EACxB,QAAQ,IAAI,EAAE;AAAA;AAOT,SAAS,cAAc,CAAC,KAAsB,UAAkB,WAAoB,cAAgD;AAAA,EACzI,MAAM,QAAQ,iCAAgC;AAAA,EAC9C,MAAM,aAAa,cAAc,IAAI,EAAE;AAAA,EACvC,MAAM,SAAS,gBAAgB,0BAA0B,IAAI;AAAA,EAC7D,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,UAAU,OAAO,IAAI,GAAG;AAAA,IACjC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,IACnC,EAAE,OAAO,WAAW,OAAO,aAAa,MAAM;AAAA,IAC9C,EAAE,OAAO,cAAc,OAAO,gBAAgB,MAAM;AAAA,IACpD,EAAE,OAAO,UAAU,OAAO,IAAI,OAAO;AAAA,IACrC,EAAE,OAAO,kBAAkB,OAAO,OAAO,IAAI,OAAO,aAAa,EAAE;AAAA,IACnE,EAAE,OAAO,gBAAgB,OAAO,OAAO,IAAI,OAAO,eAAe,GAAG,EAAE;AAAA,IACtE,EAAE,OAAO,SAAS,OAAO,IAAI,OAAO,SAAS,UAAU;AAAA,EACzD;AAAA,EACA,MAAM,YAAY;AAAA,IAChB,EAAE,OAAO,WAAW,KAAK,WAAW;AAAA,IACpC,EAAE,OAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA,EACA,MAAM,OAAO,CAAC,oCAAoC,IAAI,WAAW;AAAA,EACjE,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,IAAI;AAAA,MACX;AAAA,MACA,WAAW,aAAa;AAAA,MACxB,cAAc,gBAAgB;AAAA,MAC9B,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI,OAAO;AAAA,MAC1B,aAAa,IAAI,OAAO,eAAe;AAAA,MACvC,OAAO,IAAI,OAAO,SAAS;AAAA,IAC7B;AAAA,IACA,OAAO,EAAE,SAAS,YAAY,KAAK,OAAO;AAAA,IAC1C;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,KAAI,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAGK,SAAS,eAAe,CAAC,QAAiD;AAAA,EAC/E,MAAM,OAAO,OAAO,WAAW,cAC3B,CAAC,qCAAqC,OAAO,cAAc,IAC3D,OAAO,WAAW,aAAa,OAAO,WAAW,WAC/C,CAAC,oCAAoC,OAAO,cAAc,IAC1D,CAAC;AAAA,EAGP,IAAI,MAAM;AAAA,EACV,MAAM,YAAa,OAA8C;AAAA,EACjE,IAAI,OAAO,mBAAmB,KAAK,WAAW;AAAA,IAC5C,MAAM,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,QAAQ;AAAA,IACzD,MAAM,eAAe,UAAU,OAAO;AAAA,IACtC,MAAM,aAAa,OAAO,gBAAgB,OAAO,oBAAoB;AAAA,IACrE,MAAM,UAAU,KAAK,KAAK,YAAY,KAAK;AAAA,IAC3C,MAAM,IAAI,OAAO,OAAO;AAAA,EAC1B;AAAA,EAEA,MAAM,OAAO,OAAO,WAAW,cAAc,MAAK,OAAO,WAAW,WAAW,MAAM;AAAA,EACrF,MAAM,QAAQ,gBAAgB,OAAO,YAAW,OAAO;AAAA,EACvD,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,UAAU,OAAO,OAAO,MAAM;AAAA,IACvC,EAAE,OAAO,UAAU,OAAO,OAAO,OAAO;AAAA,IACxC,EAAE,OAAO,aAAa,OAAO,GAAG,OAAO,OAAO,gBAAgB,KAAK,OAAO,OAAO,aAAa,IAAI;AAAA,IAClG,EAAE,OAAO,cAAc,OAAO,OAAO,cAAc,YAAY,OAAO,OAAO,SAAS,IAAI,UAAU;AAAA,IACpG,EAAE,OAAO,YAAY,OAAO,GAAG,OAAO,OAAO,eAAe,KAAK;AAAA,IACjE,EAAE,OAAO,OAAO,OAAO,IAAI;AAAA,IAC3B,GAAI,OAAO,UAAU,CAAC,EAAE,OAAO,WAAW,OAAO,OAAO,QAAQ,CAAC,IAAI,CAAC;AAAA,EACxE;AAAA,EACA,MAAM,aAAa,cAAc,OAAO,KAAK;AAAA,EAC7C,MAAM,YAAY,CAAC,EAAE,OAAO,WAAW,KAAK,WAAW,CAAC;AAAA,EAExD,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,WAAW,GAAG,OAAO,OAAO,gBAAgB,KAAK,OAAO,OAAO,aAAa;AAAA,MAC5E,WAAW,OAAO;AAAA,MAClB,UAAU,GAAG,OAAO,OAAO,eAAe;AAAA,MAC1C;AAAA,MACA,SAAS,OAAO;AAAA,IAClB;AAAA,IACA,OAAO,EAAE,SAAS,WAAW;AAAA,IAC7B;AAAA,IACA,aAAa;AAAA,IACb,cAAc,gBAAgB,EAAE,OAAO,MAAM,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,EAC7E;AAAA;AAwBK,SAAS,cAAc,CAAC,UAAyB,WAAgC;AAAA,EACtF,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAM,KAAK,gBAAgB,CAAC;AAAA,EACxC,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAM,IAAI,UAAU,YAAY,UAAU,CAAC;AAAA,EACvD,QAAQ,IAAI,OAAM,MAAM,UAAU,aAAa,UAAU,CAAC;AAAA,EAC1D,QAAQ,IAAI,EAAE;AAAA;;;ADjXT,SAAS,wBAAwB,CAAC,SAAwB;AAAA,EAC/D,MAAM,WAAW,IAAI,SAAQ,UAAU,EACpC,YAAY,iCAAiC,EAC7C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,KAGZ,EACA,OAAO,MAAM;AAAA,IACZ,SAAS,KAAK;AAAA,GACf;AAAA,EACH,QAAQ,WAAW,QAAQ;AAAA,EAG3B,SACG,QAAQ,OAAO,EACf,YAAY,2BAA2B,EACvC,SAAS,eAAe,yCAAyC,EACjE,eAAe,sBAAsB,+EAA+E,EACpH,eAAe,yBAAyB,gFAAgF,EACxH,OAAO,wBAAwB,0CAA0C,EACzE,OAAO,sBAAsB,oCAAoC,EACjE,OAAO,kBAAkB,gDAAgD,EACzE,OAAO,sBAAsB,uDAAuD,EACpF,OAAO,2BAA2B,6CAA6C,EAC/E,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,EACf,OAAM,OAAO,2DAA2D;AAAA,4BAC/C,OAAM,IAAI,+CAA+C;AAAA,4BACzD,OAAM,IAAI,+CAA+C;AAAA,4BACzD,OAAM,IAAI,uCAAuC;AAAA,4BACjD,OAAM,IAAI,mCAAmC;AAAA,4BAC7C,OAAM,IAAI,8CAA8C;AAAA;AAAA,EAEjF;AAAA;AAAA,EAEA,OAAM,IAAI,kEAAkE;AAAA;AAAA,EAE5E,OAAM,OAAO;AAAA;AAAA;AAAA,mEAGoD;AAAA;AAAA,EAEjE,OAAM,OAAO,iDAAiD;AAAA,KAC3D,EACA,OAAO,OAAO,UAAkB,YAAkC;AAAA,IACjE,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAGF,MAAM,SAAS,aAAa;AAAA,MAG5B,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO,KAAK,8BAA8B;AAAA,MAC5C;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,UAAU,QAAQ;AAAA,MAG9C,MAAM,kBAAyF,CAAC;AAAA,MAGhG,IAAI,cAAc,OAAO,YAAY,GAAG;AAAA,QACtC,gBAAgB,eAAe;AAAA,UAC7B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF,EAAO;AAAA,QACL,gBAAgB,eAAe,EAAE,QAAQ,KAAK;AAAA;AAAA,MAIhD,IAAI,cAAc,OAAO,WAAW,GAAG;AAAA,QACrC,gBAAgB,cAAc;AAAA,UAC5B,QAAQ;AAAA,UACR,OAAO;AAAA,QACT;AAAA,MACF,EAAO;AAAA,QACL,gBAAgB,cAAc,EAAE,QAAQ,KAAK;AAAA;AAAA,MAI/C,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,MAAM,UAAU,MAAM,OAAO,cAAc,QAAQ,UAAU;AAAA,QAC7D,aAAa;AAAA,QACb,MAAM,aAAa,QAAQ;AAAA,QAC3B,MAAM,WAAW,YAAY;AAAA,QAC7B,IAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AAAA,UACtC,gBAAgB,aAAa;AAAA,YAC3B,QAAQ;AAAA,YACR,SAAS,cAAc,QAAQ,yCAC7B,iDAAiD;AAAA,UACrD;AAAA,QACF,EAAO;AAAA,UACL,MAAM,uBAAuB,SAAS,KAAK,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW;AAAA,UACxF,IAAI,CAAC,sBAAsB;AAAA,YACzB,gBAAgB,aAAa;AAAA,cAC3B,QAAQ;AAAA,cACR,SAAS,cAAc,QAAQ,oEAC7B,iDAAiD;AAAA,YACrD;AAAA,UACF,EAAO;AAAA,YACL,gBAAgB,aAAa,EAAE,QAAQ,KAAK;AAAA,YAC5C,IAAI,CAAC,QAAQ;AAAA,cACX,OAAO,KAAK,oBAAoB,QAAQ,mBAAmB,OAAO,SAAS,MAAM,aAAa;AAAA,YAChG;AAAA;AAAA;AAAA,QAGJ,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAe,MAAM;AAAA,QACtC,gBAAgB,aAAa;AAAA,UAC3B,QAAQ;AAAA,UACR,SAAS,iCAAiC,QAAQ;AAAA,QACpD;AAAA;AAAA,MAIF,IAAI;AAAA,QACF,MAAM,eAAe,MAAM,OAAO,iBAAiB,QAAQ,OAAO;AAAA,QAClE,IAAI,aAAa,WAAW,GAAG;AAAA,UAC7B,gBAAgB,eAAe;AAAA,YAC7B,QAAQ;AAAA,YACR,SAAS,WAAW,QAAQ;AAAA,UAC9B;AAAA,QACF,EAAO;AAAA,UACL,MAAM,kBAAkB,aAAa,OAAO,UAAQ,CAAC,KAAK,cAAc;AAAA,UACxE,IAAI,gBAAgB,SAAS,GAAG;AAAA,YAC9B,gBAAgB,eAAe;AAAA,cAC7B,QAAQ;AAAA,cACR,SAAS,GAAG,OAAO,gBAAgB,MAAM,QAAQ,OAAO,aAAa,MAAM,6CACzE;AAAA,YACJ;AAAA,UACF,EAAO;AAAA,YACL,gBAAgB,eAAe,EAAE,QAAQ,KAAK;AAAA;AAAA;AAAA,QAGlD,MAAM;AAAA,QACN,gBAAgB,eAAe;AAAA,UAC7B,QAAQ;AAAA,UACR,SAAS,wCAAwC,QAAQ;AAAA,QAC3D;AAAA;AAAA,MAIF,IAAI,cAAc,gBAAgB,YAAY,UAAU,gBAAgB,aAAa,QAAQ;AAAA,QAC3F,MAAM,aAAc,OAAO,aAAgD;AAAA,QAC3E,MAAM,cAAe,OAAO,cAAiD;AAAA,QAC7E,MAAM,eAAe;AAAA,UACnB,GAAG,OAAO,KAAM,cAAsD,CAAC,CAAC;AAAA,UACxE,GAAG,OAAO,KAAM,eAAuD,CAAC,CAAC;AAAA,QAC3E;AAAA,QACA,MAAM,UAAU,WAAW;AAAA,QAC3B,MAAM,eAAe,SAAS,YAAY,CAAC;AAAA,QAC3C,MAAM,oBAAoB,aAAa,OACrC,CAAC,MAAM,EAAE,uBAAuB,CAAC,aAAa,SAAS,EAAE,mBAAmB,CAC9E;AAAA,QACA,IAAI,kBAAkB,SAAS,GAAG;AAAA,UAChC,MAAM,QAAQ,kBAAkB,IAAI,OAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,IAAI;AAAA,UACnF,gBAAgB,gBAAgB;AAAA,YAC9B,QAAQ;AAAA,YACR,SAAS,uDAAuD,YAC9D,4BAA4B,aAAa,KAAK,IAAI,KAAK;AAAA,UAC3D;AAAA,QACF,EAAO;AAAA,UACL,gBAAgB,gBAAgB,EAAE,QAAQ,KAAK;AAAA;AAAA,MAEnD;AAAA,MAGA,MAAM,eAAe,OAAO,QAAQ,eAAe,EAAE,OACnD,IAAI,WAAW,CAAC,MAAM,MACxB;AAAA,MAEA,IAAI,aAAa,SAAS,GAAG;AAAA,QAC3B,IAAI,QAAQ;AAAA,UAEV,MAAM,mBAA6B,CAAC;AAAA,UACpC,IAAI,CAAC,gBAAgB,YAAY,QAAQ;AAAA,YACvC,iBAAiB,KACf;AAAA,IACA,6BAA6B;AAAA,IAC7B,gCAAgC,oGAClC;AAAA,UACF;AAAA,UACA,IAAI,CAAC,gBAAgB,aAAa,QAAQ;AAAA,YACxC,iBAAiB,KACf,+CAA+C,4FACjD;AAAA,UACF;AAAA,UACA,OAAO,OAAO;AAAA,YACZ,SAAS;AAAA,YACT,OAAO;AAAA,YACP,MAAM;AAAA,YACN,iBAAiB,iBAAiB,KAAK;AAAA,CAAI;AAAA,YAC3C;AAAA,UACF,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QAGA,YAAY,MAAM,UAAU,cAAc;AAAA,UACxC,QAAQ,MAAM,OAAM,IAAI,UAAU,UAAS,MAAM,SAAS,UAAU,CAAC;AAAA,QACvE;AAAA,QAEA,IAAI,CAAC,gBAAgB,aAAa,QAAQ;AAAA,UACxC,QAAQ,MAAM,OAAM,IAClB,0CAA0C,4FAC5C,CAAC;AAAA,QACH;AAAA,QACA,IAAI,CAAC,gBAAgB,YAAY,QAAQ;AAAA,UACvC,QAAQ,MAAM,OAAM,IAClB,0CAA0C,oGAC5C,CAAC;AAAA,QACH;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,QAAQ;AAAA,QACX,cAAc,UAAU,OAAO,QAAQ,eAAe,GAAG;AAAA,UACvD,IAAI,MAAM,SAAS;AAAA,YACjB,OAAO,KAAK,MAAM,OAAO;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,MAAM,MAAM,OAAO,kBAAkB,UAAU,QAAQ,SAAS,QAAQ,YAAY;AAAA,QACxF,eAAe,QAAQ,gBAAgB,SAAS,QAAQ,eAAe,EAAE,IAAI;AAAA,QAC7E,aAAa,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,QACrE,UAAU,QAAQ,WAAW,SAAS,QAAQ,UAAU,EAAE,IAAI;AAAA,QAC9D,OAAO,QAAQ;AAAA,QACf,WAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,MAED,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,eAAe,KAAK,UAAU,QAAQ,SAAS,QAAQ,UAAU;AAAA,QACnF,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ;AAAA,YACN,WAAW,cAAc,IAAI,EAAE;AAAA,YAC/B,KAAK,gBAAgB,0BAA0B,IAAI;AAAA,UACrD;AAAA,UACA,YAAY;AAAA,QACd,CAAC;AAAA,QACD,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,4BAA4B,EAAE,KAAK,UAAU,WAAW,QAAQ,QAAQ,CAAC;AAAA;AAAA,MAE3E,OAAO,OAAO;AAAA,MAEd,IAAI,iBAAiB,UAAU;AAAA,QAC7B,MAAM,WAAW,sBAAsB,KAAK;AAAA,QAC5C,MAAM,YAAY,SAAS,KAAK,GAAG;AAAA,QAGnC,MAAM,cAAwB,CAAC;AAAA,QAC/B,IAAI,UAAU,SAAS,8BAA8B,KAAK,UAAU,SAAS,cAAc,GAAG;AAAA,UAC5F,YAAY,KAAK,0CAA0C,qEAAqE;AAAA,QAClI;AAAA,QACA,IAAI,UAAU,SAAS,uBAAuB,KAAK,UAAU,SAAS,qBAAqB,GAAG;AAAA,UAC5F,YAAY,KAAK,6FAA6F;AAAA,QAChH;AAAA,QACA,IAAI,UAAU,SAAS,sBAAsB,GAAG;AAAA,UAC9C,YAAY,KAAK,yFAAyF;AAAA,QAC5G;AAAA,QACA,IAAI,UAAU,SAAS,cAAc,KAAM,UAAU,SAAS,SAAS,KAAK,UAAU,SAAS,WAAW,GAAI;AAAA,UAC5G,YAAY,KAAK,6CAA6C,yCAAyC;AAAA,QACzG;AAAA,QACA,IAAI,UAAU,SAAS,6BAA6B,GAAG;AAAA,UACrD,YAAY,KAAK,yDAAyD,mBAAmB;AAAA,QAC/F;AAAA,QACA,IAAI,UAAU,SAAS,OAAO,KAAK,UAAU,SAAS,OAAO,GAAG;AAAA,UAC9D,YAAY,KAAK,+DAA+D;AAAA,QAClF;AAAA,QAEA,IAAI,CAAC,QAAQ;AAAA,UACX,QAAQ,MAAM,OAAM,IAAI;AAAA,qBAAwB,CAAC;AAAA,UACjD,WAAW,OAAO,UAAU;AAAA,YAC1B,QAAQ,MAAM,OAAM,IAAI,KAAK,KAAK,CAAC;AAAA,UACrC;AAAA,UACA,IAAI,YAAY,SAAS,GAAG;AAAA,YAC1B,QAAQ,MAAM,OAAM,OAAO;AAAA,iBAAoB,CAAC;AAAA,YAChD,WAAW,KAAK,aAAa;AAAA,cAC3B,QAAQ,MAAM,OAAM,OAAO,OAAM,GAAG,CAAC;AAAA,YACvC;AAAA,UACF;AAAA,UACA,QAAQ,MAAM,EAAE;AAAA,UAChB,QAAQ,MAAM,kBAAkB;AAAA,QAClC;AAAA,MACF;AAAA,MACA,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,SACG,QAAQ,QAAQ,EAChB,YAAY,2BAA2B,EACvC,SAAS,YAAY,6DAA6D,EAClF,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB;AAAA,IAC/B,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,sBAAsB,KAAK;AAAA,MAEvD,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,gBAAgB,MAAM;AAAA,QACxC,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ,EAAE,WAAW,cAAc,KAAK,EAAE;AAAA,UAC1C,YAAY;AAAA,QACd,CAAC;AAAA,QACD,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QACL,6BAA6B,MAAM;AAAA;AAAA,MAErC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,SACG,QAAQ,SAAS,EACjB,YAAY,0BAA0B,EACtC,SAAS,YAAY,6DAA6D,EAClF,OAAO,WAAW,2CAA2C,EAC7D,OAAO,UAAU,qCAAqC,EACtD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG,gEAAgE,OAAM,IAAI,kBAAkB;AAAA,IACzG,OAAM,IAAI,GAAG,gEAAgE,OAAM,IAAI,oBAAoB;AAAA,IAC3G,OAAM,IAAI,GAAG,gEAAgE,OAAM,IAAI,0BAA0B;AAAA,IACjH,OAAM,IAAI,GAAG,gEAAgE,OAAM,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,IAK5G,OAAM,IAAI,gCAAgC;AAAA;AAAA,IAE1C,OAAM,IAAI,0EAA0E;AAAA,KACnF,EACA,OAAO,OAAO,OAAe,YAAiD;AAAA,IAC7E,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAAU,MAAM,OAAO,uBAAuB,KAAK;AAAA,MACzD,MAAM,aAAa;AAAA,MAEnB,IAAI,QAAQ;AAAA,QACV,MAAM,UAAU,WAAW;AAAA,QAC3B,MAAM,cAAc,SAAS,WAAW;AAAA,QACxC,MAAM,gBAAgB,0BAA0B,UAAU;AAAA,QAC1D,MAAM,YAAY;AAAA,UAChB,SAAS;AAAA,UACT,aAAa;AAAA,UACb,cAAc;AAAA,UACd,MAAM,cAAc;AAAA,YAClB,qCAAqC;AAAA,YACrC,qCAAqC;AAAA,UACvC,IAAI,CAAC;AAAA,QACP;AAAA,QACA,OAAO,OAAO,KAAK,YAAY,QAAQ,EAAE,WAAW,cAAc,KAAK,EAAE,GAAG,YAAY,UAAU,CAAC;AAAA,QACnG,sBAAsB,SAAS;AAAA,MACjC,EAAO;AAAA,QAEL,gBAAgB,UAA8D;AAAA,QAE9E,MAAM,UAAU,WAAW;AAAA,QAC3B,MAAM,cAAc,SAAS,WAAW;AAAA,QAGxC,IAAI,QAAQ,MAAM;AAAA,UAChB,MAAM,WAAY,WAAW;AAAA,UAC7B,MAAM,YAAY,WAAW;AAAA,UAC7B,eACE,UAAU,gBAAgB,UAAU,aAAa,MACjD,WAAW,gBAAgB,WAAW,aAAa,IACrD;AAAA,QACF;AAAA,QAGA,IAAI,QAAQ,SAAS,aAAa;AAAA,UAChC,MAAM,kBAAkB,WAAW;AAAA,UACnC,MAAM,cAAc,OAAO,QAAQ,QAAQ;AAAA,UAC3C,IAAI,mBAAmB,aAAa;AAAA,YAClC,OAAO,KAAK,8BAA8B;AAAA,YAC1C,MAAM,aAA8B,CAAC;AAAA,YACrC,IAAI,gBAAgB;AAAA,cAAc,WAAW,eAAe,gBAAgB;AAAA,YAC5E,IAAI,gBAAgB;AAAA,cAAa,WAAW,cAAc,gBAAgB;AAAA,YAC1E,IAAI,gBAAgB;AAAA,cAAW,WAAW,YAAY,gBAAgB;AAAA,YAEtE,MAAM,OAAO,aAAa,aAAa,UAAU;AAAA,YACjD,OAAO,QAAQ,0CAA0C;AAAA,YACzD,OAAO,KAAK,gBAAgB,WAAW,WAAW,GAAG;AAAA,YAErD,sBAAsB,SAAO;AAAA,cAC3B,IAAI,mBACF,gBAAgB,SAChB,aACA,WACF;AAAA,aACD;AAAA,UACH;AAAA,QACF,EAAO,SAAI,QAAQ,SAAS,CAAC,aAAa;AAAA,UACxC,OAAO,MAAM,mDAAkD;AAAA,QACjE,EAAO,SAAI,eAAe,CAAC,QAAQ,OAAO;AAAA,UAExC,OAAO,KAAK,UAAU;AAAA,UACtB,OAAO,KAAK,+DAA+D,eAAe;AAAA,UAC1F,OAAO,KAAK,8DAA8D,cAAc;AAAA,UACxF,OAAO,KAAK,4CAA4C;AAAA,QAC1D,EAAO,SAAI,CAAC,aAAa;AAAA,UACvB,MAAM,YAAa,SAAS,UAAiC;AAAA,UAC7D,OAAO,KAAK,eAAe,oCAAoC;AAAA,UAC/D,OAAO,KAAK,SAAS,cAAc,KAAK,GAAG;AAAA,QAC7C;AAAA;AAAA,MAEF,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA;;;APtZE,SAAS,qBAAqB,CAAC,SAA+C;AAAA,EACnF,IAAI;AAAA,IACF,MAAM,MAAM,gBAAgB,KAAK;AAAA,IACjC,QAAQ,GAAG;AAAA,IACX,IAAI,KAAK;AAAA,IACT,MAAM;AAAA;AASH,SAAS,qBAAqB,CAAC,OAA0B;AAAA,EAC9D,IAAI,iBAAiB,UAAU;AAAA,IAC7B,IAAI;AAAA,MACF,MAAM,OAAO,KAAK,MAAM,MAAM,OAAO;AAAA,MACrC,IAAI,KAAK,UAAU,MAAM,QAAQ,KAAK,MAAM,GAAG;AAAA,QAC7C,OAAO,KAAK,OAAO,IAAI,CAAC,MAA4B,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC;AAAA,MACpF;AAAA,MACA,IAAI,KAAK,SAAS;AAAA,QAChB,OAAO,CAAC,KAAK,OAAO;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,MAEN,OAAO,CAAC,MAAM,OAAO;AAAA;AAAA,EAEzB;AAAA,EACA,IAAI,iBAAiB,OAAO;AAAA,IAC1B,OAAO,CAAC,MAAM,OAAO;AAAA,EACvB;AAAA,EACA,OAAO,CAAC,2BAA2B;AAAA;AAQ9B,SAAS,aAAa,CAAC,QAA0B;AAAA,EACtD,IAAI,WAAW,aAAa,WAAW;AAAA,IAAM,OAAO;AAAA,EACpD,IAAI,OAAO,WAAW;AAAA,IAAU,OAAO;AAAA,EACvC,MAAM,MAAM;AAAA,EAEZ,IAAI,OAAO,KAAK,GAAG,EAAE,WAAW;AAAA,IAAG,OAAO;AAAA,EAC1C,OAAO;AAAA;AAQF,SAAS,iBAAiB,CAC/B,YACA,UACA,YACA,aACqC;AAAA,EACrC,IAAI,cAAc,UAAU;AAAA,IAC1B,MAAM,IAAI,cACR,qBACA,gBAAgB,oBAAoB,4BACpC,QAAQ;AAAA,QAAsB,mCAAmC,gDACnE;AAAA,EACF;AAAA,EACA,IAAI,YAAY;AAAA,IACd,IAAI;AAAA,MACF,OAAO,KAAK,MAAM,UAAU;AAAA,MAC5B,MAAM;AAAA,MACN,MAAM,IAAI,cACR,gBACA,qBAAqB,mBACrB,QAAQ;AAAA,gGACV;AAAA;AAAA,EAEJ;AAAA,EACA,IAAI,UAAU;AAAA,IACZ,IAAI,CAAC,YAAW,QAAQ,GAAG;AAAA,MACzB,MAAM,IAAI,cACR,kBACA,mBAAmB,YACnB,QAAQ;AAAA,kCACV;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,OAAO,KAAK,MAAM,cAAa,UAAU,OAAO,CAAC;AAAA,MACjD,MAAM;AAAA,MACN,MAAM,IAAI,cACR,gBACA,6BAA6B,YAC7B,QAAQ;AAAA,2CACV;AAAA;AAAA,EAEJ;AAAA,EACA;AAAA;AAMK,SAAS,yBAAyB,CAAC,YAA6C;AAAA,EACrF,MAAM,UAAU,WAAW;AAAA,EAC3B,MAAM,QAAQ,OAAO,SAAS,OAAO,WAAW,QAAQ,KAAK;AAAA,EAC7D,MAAM,YAAY,OAAO,SAAS,WAAW,WAAW,QAAQ,SAAS;AAAA,EACzE,MAAM,gBAAgB,WAAW;AAAA,EACjC,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,aAAc,WAAW,uBAA8C;AAAA,EAE7E,MAAM,QAAQ;AAAA,EACd,MAAM,OAAO;AAAA,IACX,EAAE,OAAO,UAAU,OAAO,MAAM;AAAA,IAChC,EAAE,OAAO,UAAU,OAAO,UAAU;AAAA,IACpC,EAAE,OAAO,cAAc,OAAO,OAAO,UAAU,EAAE;AAAA,IACjD,EAAE,OAAO,kBAAkB,OAAO,kBAAkB,YAAY,cAAc,QAAQ,CAAC,IAAI,MAAM;AAAA,IACjG,EAAE,OAAO,cAAc,OAAO,cAAc,YAAY,UAAU,QAAQ,CAAC,IAAI,MAAM;AAAA,EACvF;AAAA,EACA,IAAI,kBAAkB,aAAa,cAAc,aAAa,gBAAgB,GAAG;AAAA,IAC/E,MAAM,MAAM,KAAK,OAAQ,YAAY,iBAAiB,gBAAiB,GAAG;AAAA,IAC1E,KAAK,KAAK,EAAE,OAAO,eAAe,OAAO,GAAG,MAAM,IAAI,MAAM,KAAK,OAAO,GAAG,KAAK,CAAC;AAAA,EACnF;AAAA,EAEA,OAAO,gBAAgB,EAAE,OAAO,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;AAAA;AA2BtD,IAAM,qBAAqB;AAAA,EAChC,QAAM,IAAI,2BAA2B;AAAA,oCACH,QAAM,IAAI,sCAAsC;AAAA,oCAChD,QAAM,IAAI,2CAA2C;AAAA,IACrF,QAAM,IAAI,6GAA6G;AAEpH,SAAS,oBAAoB,GAAY;AAAA,EAC9C,MAAM,UAAU,IAAI,SAAQ,SAAS,EAClC,YAAY,0DAA0D,EACtE,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOZ;AAAA,EAEH,oBAAoB,OAAO;AAAA,EAC3B,wBAAwB,OAAO;AAAA,EAC/B,2BAA2B,OAAO;AAAA,EAClC,yBAAyB,OAAO;AAAA,EAEhC,OAAO;AAAA;;;ASjPT;AAFA,oBAAS;AACT;AAGA;AAeO,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,SAAQ,QAAQ,EAChC,YAAY,6CAA6C,EACzD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,KAGZ;AAAA,EAGH,OACG,QAAQ,MAAM,EACd,YAAY,aAAa,EACzB,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,oEAAoE;AAAA,KAC3E,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,WAAW;AAAA,QACzC,UAAU,QAAQ;AAAA,MACpB,CAAC;AAAA,MAED,MAAM,QAAQ,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MAC7C,MAAM,UAAU,WAAW,MAAM,GAAG,KAAK;AAAA,MAEzC,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAa,QAAoB,IAAI,CAAC,OAAO;AAAA,UACjD,IAAI,EAAE;AAAA,UACN,UAAU,EAAE;AAAA,UACZ,QAAQ,EAAE;AAAA,UACV,SAAS,EAAE;AAAA,UACX,QAAQ,EAAE;AAAA,UACV,WAAW,EAAE;AAAA,UACb,QAAQ,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE;AAAA,QAClC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAa,QAAoB,IAAI,CAAC,OAAO;AAAA,UACjD,IAAI,EAAE;AAAA,UACN,UAAU,EAAE;AAAA,UACZ,SAAS,GAAG,OAAO,EAAE,OAAO;AAAA,UAC5B,QAAQ,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,OAAO,EAAE,OAAO,MAAM;AAAA,UAC3D,WAAW,IAAI,KAAK,EAAE,SAAS,EAAE,eAAe;AAAA,UAChD,KAAK,UAAU,EAAE,EAAE;AAAA,QACrB,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,mBAAmB,EAC/B,SAAS,QAAQ,UAAU,EAC3B,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,kEAAkE;AAAA,KACzE,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,MACtC,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,OAAiB,QAAQ,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,CAAC;AAAA,MACvE,EAAO;AAAA,QACL,OAAO,OAAO,KAAK;AAAA,QACnB,OAAO,KAAK,SAAS,UAAU,EAAE,GAAG;AAAA;AAAA,MAEtC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,SAAS,EACjB,YAAY,6BAA6B,EACzC,SAAS,eAAe,WAAW,EACnC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,4EAA4E;AAAA,KACnF,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,cAAc,QAAQ;AAAA,MAEpD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,UAAoB,QAAQ,EAAE,QAAQ,GAAG,cAAc,qBAAqB,WAAW,EAAE,CAAC;AAAA,MAC/G,EAAO;AAAA,QACL,OAAO,OAAO,QAAQ;AAAA;AAAA,MAExB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,eAAe,EAC3B,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,yBAAyB,6BAA6B,MAAM,EACnE,OAAO,uBAAuB,kBAAkB,EAChD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,+DAA+D;AAAA,KACtE,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,WAAW;AAAA,QACzC,UAAU,QAAQ;AAAA,MACpB,CAAC;AAAA,MAED,IAAI;AAAA,MAEJ,IAAI,QAAQ,WAAW,QAAQ;AAAA,QAC7B,UAAU,KAAK,UAAU,YAAY,MAAM,CAAC;AAAA,MAC9C,EAAO,SAAI,QAAQ,WAAW,OAAO;AAAA,QAEnC,MAAM,UAAU,CAAC,MAAM,YAAY,WAAW,eAAe,gBAAgB,WAAW;AAAA,QACxF,MAAM,OAAQ,WAAuB,IAAI,CAAC,MAAM;AAAA,UAC9C,EAAE;AAAA,UACF,EAAE;AAAA,UACF,EAAE;AAAA,UACF,EAAE,OAAO;AAAA,UACT,EAAE,OAAO;AAAA,UACT,EAAE;AAAA,QACJ,CAAC;AAAA,QACD,UAAU,CAAC,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,IAAI,OAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA,MACxE,EAAO;AAAA,QACL,MAAM,IAAI,MAAM,uBAAuB,QAAQ,QAAQ;AAAA;AAAA,MAGzD,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,kCAAkB,MAAa;AAAA,QACvC,eAAc,QAAQ,QAAQ,OAAO;AAAA,QACrC,OAAO,QAAQ,YAAY,OAAO,WAAW,MAAM,eAAe,QAAQ,QAAQ;AAAA,MACpF,EAAO;AAAA,QACL,QAAQ,OAAO,MAAM,OAAO;AAAA;AAAA,MAE9B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AC1MT;AAJA,oBAAS;AACT;AACA,0BAAS,8BAAe;AACxB;AAGA;;;ACNA,yBAAS,6BAAc;AAQhB,IAAM,uBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,MAAM,GAA6B;AAAA,IACjC,IAAI,eAAe;AAAA,IAEnB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAA+B,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QACnF,eAAe,eAAe,QAAQ,qBAAqB;AAAA,QAC3D,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO,QAAQ,QAAQ;AAAA,MACrB,UAAU;AAAA,MACV,YAAY,eAAe,MAAM;AAAA,MACjC,OAAO,eAAe,CAAC,cAAc,IAAI,CAAC;AAAA,IAC5C,CAAC;AAAA;AAAA,EAGH,QAAQ,CAAC,QAA4C;AAAA,IACnD,OAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWL,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAkBX,OAAO;AAAA,oBACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoF1B;AAAA;AAED;;;ACtJA,yBAAS,6BAAc;AAQhB,IAAM,uBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,MAAM,GAA6B;AAAA,IACjC,IAAI,eAAe;AAAA,IAEnB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAA+B,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QACnF,eAAe,0BAA0B;AAAA,QACzC,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO,QAAQ,QAAQ;AAAA,MACrB,UAAU;AAAA,MACV,YAAY,eAAe,OAAO;AAAA,MAClC,OAAO,eAAe,CAAC,cAAc,IAAI,CAAC;AAAA,IAC5C,CAAC;AAAA;AAAA,EAGH,QAAQ,CAAC,QAA4C;AAAA,IACnD,OAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWL,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA4F7B;AAAA;AAED;;;AC3IA,yBAAS,6BAAc;AAQhB,IAAM,sBAA4C;AAAA,EACvD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,MAAM,GAA6B;AAAA,IACjC,IAAI,WAAW;AAAA,IAEf,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAA+B,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QACnF,WAAW,QAAQ;AAAA,QACnB,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO,QAAQ,QAAQ;AAAA,MACrB,UAAU;AAAA,MACV,YAAY,WAAW,MAAM;AAAA,MAC7B,OAAO,WAAW,CAAC,cAAc,IAAI,CAAC;AAAA,IACxC,CAAC;AAAA;AAAA,EAGH,QAAQ,CAAC,QAA4C;AAAA,IACnD,OAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWL,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA6G7B;AAAA;AAED;;;AC5JA,yBAAS,6BAAc;AAQhB,IAAM,oBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,MAAM,GAA6B;AAAA,IACjC,IAAI,YAAY;AAAA,IAEhB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAA+B,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QACnF,YAAY,YAAY;AAAA,QACxB,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO,QAAQ,QAAQ;AAAA,MACrB,UAAU;AAAA,MACV,YAAY,YAAY,OAAO;AAAA,MAC/B,OAAO,YAAY,CAAC,cAAc,IAAI,CAAC;AAAA,IACzC,CAAC;AAAA;AAAA,EAGH,QAAQ,CAAC,QAA4C;AAAA,IACnD,OAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWL,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA4E7B;AAAA;AAED;;;ACrHO,IAAM,oBAAoB,IAAI,IAAkC;AAAA,EACrE,CAAC,aAAa,oBAAoB;AAAA,EAClC,CAAC,aAAa,oBAAoB;AAAA,EAClC,CAAC,aAAa,mBAAmB;AAAA,EACjC,CAAC,UAAU,iBAAiB;AAC9B,CAAC;AAEM,IAAM,oBAA2C;AAAA,EACtD;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AACF;AAEO,SAAS,YAAY,CAAC,MAAgD;AAAA,EAC3E,OAAO,kBAAkB,IAAI,IAAI;AAAA;AAG5B,SAAS,oBAAoB,CAAC,MAA+C;AAAA,EAClF,OAAO,kBAAkB,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA;;;AL3BtD,SAAS,oBAAoB,GAAmB;AAAA,EAE9C,IAAI,aAAW,WAAW,KAAK,aAAW,UAAU,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,gBAAgB,GAAG;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,WAAW,GAAG;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,mBAAmB,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EAGA,IAAI;AAAA,IACF,SAAS,iBAAiB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC7C,OAAO;AAAA,IACP,MAAM;AAAA,IAEN,OAAO;AAAA;AAAA;AAOX,SAAS,iBAAiB,CAAC,IAAoB,aAA6B;AAAA,EAC1E,MAAM,WAA2C;AAAA,IAC/C,KAAK,WAAW;AAAA,IAChB,KAAK,eAAe;AAAA,IACpB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,EACpB;AAAA,EACA,OAAO,SAAS;AAAA;AAOlB,SAAS,+BAA+B,GAAW;AAAA,EACjD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBF,SAAS,sBAAsB,GAAY;AAAA,EAChD,MAAM,YAAY,IAAI,SAAQ,WAAW,EACtC,YAAY,8DAA8D,EAC1E,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ;AAAA,EAGH,UACG,SAAS,eAAe,0DAA0D,EAClF,OAAO,uBAAuB,2BAA2B,EACzD,OAAO,SAAS,qCAAqC,EACrD,OAAO,YAAY,gCAAgC,EACnD,OAAO,OAAO,cAAkC,YAA8B;AAAA,IAC7E,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,MAAM,SAAS,UAAU;AAAA,MACzB,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,cACR,iBACA,oCACA,0BACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,WAAW;AAAA,MAG1B,IAAI,CAAC,cAAc;AAAA,QACjB,MAAM,0BAA0B,gCAAgC;AAAA,QAEhE,IAAI,QAAQ,QAAQ;AAAA,UAClB,eAAc,QAAQ,QAAQ,uBAAuB;AAAA,UACrD,OAAO,QAAQ,qCAAqC,QAAQ,QAAQ;AAAA,QACtE,EAAO,SAAI,QAAQ;AAAA,UACjB,OAAO,OAAO;AAAA,YACZ,MAAM;AAAA,YACN,YAAY,MAAM,KAAK,kBAAkB,KAAK,CAAC;AAAA,YAC/C,cAAc;AAAA,UAChB,CAAC;AAAA,QACH,EAAO,SAAI,QAAQ,QAAQ,MAAM;AAAA,UAC/B,QAAQ,OAAO,MAAM,uBAAuB;AAAA,QAC9C,EAAO;AAAA,UACL,OAAO,KAAK,4CAA4C;AAAA,UACxD,OAAO,KAAK,IAAG,OAAO,EAAE,CAAC;AAAA,UACzB,QAAQ,OAAO,MAAM,uBAAuB;AAAA;AAAA,QAE9C;AAAA,MACF;AAAA,MAGA,MAAM,YAAY,aAAa,YAAY;AAAA,MAC3C,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,cACR,qBACA,sBAAsB,gBACtB,cAAc,MAAM,KAAK,kBAAkB,KAAK,CAAC,EAAE,KAAK,IAAI,GAC9D;AAAA,MACF;AAAA,MAGA,MAAM,OAAO,qBAAqB,YAAY;AAAA,MAC9C,MAAM,kBAAkB,MAAM;AAAA,MAG9B,MAAM,KAAK,qBAAqB;AAAA,MAGhC,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,MAAM,oBAAoB,MAAM,UAAU,SAAS;AAAA,QACjD;AAAA,QACA;AAAA,QACA,YAAY,QAAQ;AAAA,MACtB,CAAC;AAAA,MAGD,IAAI,eAAe;AAAA,MAGnB,IAAI,iBAAiB;AAAA,QACnB,MAAM,aAAa,kBAAkB,IAAI,eAAe;AAAA,QACxD,gBAAgB;AAAA;AAAA,EAExB;AAAA;AAAA;AAAA;AAAA,MAIM;AAAA,MAGA,MAAM,aAAa,kBAAkB,MAAM;AAAA,MAC3C,gBAAgB,WAAW;AAAA,EACjC;AAAA;AAAA,MAIM,MAAM,gBAAgB,kBAAkB,MAAM;AAAA,MAC9C,gBAAgB;AAAA,UACd;AAAA;AAAA,0BAEgB,OAAO,UAAU,GAAG,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,MAOxC,IAAI,QAAQ,QAAQ;AAAA,QAClB,eAAc,QAAQ,QAAQ,YAAY;AAAA,QAC1C,OAAO,QAAQ,qCAAqC,QAAQ,QAAQ;AAAA,MACtE,EAAO,SAAI,QAAQ;AAAA,QACjB,OAAO,OAAO;AAAA,UACZ,WAAW;AAAA,UACX,aAAa,MAAM,eAAe;AAAA,UAClC,iBAAiB,mBAAmB;AAAA,UACpC;AAAA,QACF,CAAC;AAAA,MACH,EAAO,SAAI,QAAQ,QAAQ,MAAM;AAAA,QAC/B,QAAQ,OAAO,MAAM,YAAY;AAAA,MACnC,EAAO;AAAA,QACL,MAAM,cAAc,MAAM,eAAe;AAAA,QACzC,OAAO,KAAK,cAAc,sCAAsC;AAAA,QAChE,OAAO,KAAK,IAAG,OAAO,EAAE,CAAC;AAAA,QACzB,QAAQ,OAAO,MAAM,YAAY;AAAA;AAAA,MAInC,IAAI,QAAQ,QAAQ;AAAA,QAClB,OAAO,KAAK,EAAE;AAAA,QACd,OAAO,KAAK,sBAAsB;AAAA,QAClC,OAAO,QAAQ,sBAAsB;AAAA,MACvC;AAAA,MAEA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,MAAM,EACd,YAAY,uCAAuC,EACnD,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,aAAa,kBAAkB,IAAI,QAAM;AAAA,MAC7C,MAAM,EAAE;AAAA,MACR,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,YAAY,EAAE;AAAA,MACd,iBAAiB,EAAE;AAAA,IACrB,EAAE;AAAA,IAEF,OAAO,OAAO,UAAU;AAAA,GACzB;AAAA,EAEH,OAAO;AAAA;;;AMvQT,oBAAS;AACT;;;ACCA;AADA;AAGA;AAKO,SAAS,kBAAkB,CAAC,QAAuB;AAAA,EAExD,OACG,QAAQ,MAAM,EACd,YAAY,iBAAiB,EAC7B,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,OAAO,qBAAqB,gBAAgB,EAC5C,OAAO,yBAAyB,6CAA6C,EAC7E,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+E;AAAA,QACnF,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,QAAQ,MAAM;AAAA,QAChB,QAAQ,OAAO,QAAQ;AAAA,MACzB;AAAA,MACA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,QAAQ;AAAA,MAC3B;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,WAAW,OAAO;AAAA,MAE9C,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAc;AAAA,UAC/C,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,OAAO,EAAE;AAAA,UACT,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE;AAAA,UACZ,WAAW,EAAE;AAAA,UACb,QAAQ,WAAW,EAAE,EAAE;AAAA,QACzB,EAAE;AAAA,QACF,OAAO,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAAA,MAC9C,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAc;AAAA,UAC/C,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,OAAO,EAAE;AAAA,UACT,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE,WAAW,QAAQ;AAAA,UAC/B,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,UACpE,KAAK,UAAU,EAAE,EAAE;AAAA,QACrB,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,mBAAmB,EAC/B,SAAS,QAAQ,UAAU,EAC3B,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,MAEtC,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,OAAO,QAAQ,WAAW,MAAM,EAAE,EAAE,CAAC;AAAA,MAC1D,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,MAAM;AAAA,UACV,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM;AAAA,UACZ,aAAa,MAAM,eAAe;AAAA,UAClC,OAAO,MAAM;AAAA,UACb,QAAQ,MAAM;AAAA,UACd,UAAU,MAAM,WAAW,QAAQ;AAAA,UACnC,UAAU,MAAM,YAAY;AAAA,UAC5B,gBAAgB,MAAM,kBAAkB;AAAA,UACxC,cAAc,MAAM,cAAc,KAAK,IAAI,KAAK;AAAA,UAChD,iBAAiB,MAAM,iBAAiB,KAAK,IAAI,KAAK;AAAA,UACtD,MAAM,MAAM,MAAM,KAAK,IAAI,KAAK;AAAA,UAChC,WAAW,MAAM,aAAa;AAAA,UAC9B,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,EAAE,eAAe,IAAI;AAAA,UAC1E,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,EAAE,eAAe,IAAI;AAAA,UAC1E,KAAK,UAAU,MAAM,EAAE;AAAA,QACzB;AAAA,QACA,OAAO,OAAO,SAAS;AAAA,QAGvB,IAAI,MAAM,cAAc;AAAA,UACtB,QAAQ,IAAI,QAAM,KAAK;AAAA,eAAkB,CAAC;AAAA,UAC1C,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,MAAM,YAAY;AAAA,UAC9B,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,QACvC;AAAA;AAAA,MAEF,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,oBAAoB,EAChC,OAAO,qBAAqB,0DAA0D,EACtF,OAAO,qBAAqB,YAAY,EACxC,OAAO,qBAAqB,sCAAsC,EAClE,OAAO,gCAAgC,eAAe,EACtD,OAAO,uBAAuB,8DAA8D,EAC5F,OAAO,wBAAwB,mBAAmB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,QAAM,IAAI,uHAAuH;AAAA;AAAA;AAAA,wCAG7F,QAAM,MAAM,eAAe;AAAA;AAAA;AAAA,EAGjE,QAAM,IAAI,qCAAqC,KAAK,QAAM,IAAI,mCAAmC;AAAA,KAC9F,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI;AAAA,MAEJ,IAAI,QAAQ,MAAM;AAAA,QAChB,IAAI;AAAA,UACF,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,UAC9B,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,+BACA,wGACF;AAAA;AAAA,QAGF,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAc,KAAK,eAAe,QAAQ;AAAA,QACtD,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO,SAAI,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,cAAc;AAAA,QAC/D,OAAO;AAAA,UACL,MAAM,QAAQ;AAAA,UACd,MAAM,QAAQ;AAAA,UACd,cAAc,QAAQ;AAAA,QACxB;AAAA,QACA,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO;AAAA,QACL,MAAM,IAAI,cACR,qBACA,uEACA,2EACF;AAAA;AAAA,MAGF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,YAAY,IAAI;AAAA,MAE3C,OAAO,QAAQ,kBAAkB,MAAM,SAAS,MAAM,OAAO;AAAA,MAC7D,OAAO,OAAO,KAAK;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,UAAU,EAC3B,OAAO,qBAAqB,kDAAkD,EAC9E,OAAO,qBAAqB,UAAU,EACtC,OAAO,gCAAgC,mBAAmB,EAC1D,OAAO,uBAAuB,WAAW,EACzC,OAAO,wBAAwB,iBAAiB,EAChD,OAAO,yBAAyB,uCAAuC,EACvE,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,iDAGgC,QAAM,MAAM,eAAe;AAAA;AAAA;AAAA,EAG1E,QAAM,IAAI,mCAAmC;AAAA,KAC1C,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,OAAyB,CAAC;AAAA,MAE9B,IAAI,QAAQ,MAAM;AAAA,QAChB,IAAI;AAAA,UACF,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,UAC9B,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,+BACA,0FACF;AAAA;AAAA,QAGF,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAc,KAAK,eAAe,QAAQ;AAAA,QACtD,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,QACpD,IAAI,QAAQ;AAAA,UAAQ,KAAK,SAAS,QAAQ;AAAA,MAC5C,EAAO;AAAA,QACL,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAc,KAAK,eAAe,QAAQ;AAAA,QACtD,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,QACpD,IAAI,QAAQ;AAAA,UAAQ,KAAK,SAAS,QAAQ;AAAA;AAAA,MAG5C,IAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAAA,QAClC,MAAM,IAAI,cACR,qBACA,2BACA,0EACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,YAAY,IAAI,IAAI;AAAA,MAE/C,OAAO,QAAQ,kBAAkB,MAAM,MAAM;AAAA,MAC7C,OAAO,OAAO,KAAK;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,UAAU,EAC3B,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,gFAAgF;AAAA,KACvF,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,aAAY,MAAa,oBAAa;AAAA,QAC5C,MAAM,UAAU,MAAM,UAAS,OAAsB,CAAC;AAAA,UACpD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS,gBAAgB;AAAA,UACzB,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,IAAI,CAAC,QAAQ,SAAS;AAAA,UACpB,OAAO,KAAK,WAAW;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAAO,YAAY,EAAE;AAAA,MAE3B,OAAO,QAAQ,kBAAkB,IAAI;AAAA,MACrC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA;;;ADzRE,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,SAAQ,QAAQ,EAChC,YAAY,kBAAkB,EAC9B,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA,KAIZ;AAAA,EAEH,mBAAmB,MAAM;AAAA,EAEzB,OAAO;AAAA;;;AEtDT;AAFA,oBAAS;AACT;AAGA;AAEA,IAAM,oBAAoB,CAAC,UAAU,YAAY,UAAU,WAAW,oBAAoB,qBAAqB;AAExG,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,UAAQ,QAAQ,EAChC,YAAY,0BAA0B,EACtC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,OACG,QAAQ,MAAM,EACd,YAAY,wBAAwB,EACpC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,MAAM,WAAW;AAAA,IAGvB,MAAM,UAAU;AAAA,SACX;AAAA,MACH,QAAQ,IAAI,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,CAAC,SAAS;AAAA,IACxD;AAAA,IAEA,OAAO,OAAO,OAAO;AAAA,GACtB;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,yBAAyB,EACrC,SAAS,SAAS,8FAA8F,EAChH,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,gFAAgF;AAAA,KACvF,EACA,OAAO,CAAC,QAAgB;AAAA,IACvB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,MAAM,WAAW;AAAA,MAEvB,IAAI,EAAE,OAAO,MAAM;AAAA,QACjB,MAAM,IAAI,cACR,qBACA,wBAAwB,QACxB,eAAe,kBAAkB,KAAK,IAAI;AAAA,IAC1C,uCACF;AAAA,MACF;AAAA,MAEA,MAAM,QAAQ,IAAI;AAAA,MAElB,MAAM,cAAc,OAAO,UAAU,WAAW,KAAK,UAAU,KAAK,IAAI,OAAO,SAAS,EAAE;AAAA,MAC1F,MAAM,eAAe,QAAQ,YAAY,QAAQ,GAAG,YAAY,MAAM,GAAG,CAAC,SAAS;AAAA,MAEnF,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,GAAG,MAAM,aAAa,CAAC;AAAA,MACvC,EAAO;AAAA,QACL,OAAO,KAAK,YAAY;AAAA;AAAA,MAE1B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,MAAM,MAAM,IAAI,UAAQ,KAAK,EAC1B,YAAY,yBAAyB,EACrC,OAAO,MAAM;AAAA,IACZ,IAAI,KAAK;AAAA,GACV;AAAA,EAGH,IACG,QAAQ,WAAW,EACnB,YAAY,0BAA0B,EACtC,SAAS,QAAQ,gCAAgC,EACjD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,2EAA4E;AAAA,KACnF,EACA,OAAO,CAAC,OAAe;AAAA,IACtB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,oBAAoB,EAAE;AAAA,IAEtB,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,EAAE,SAAS,MAAM,kBAAkB,GAAG,CAAC;AAAA,IACvD,EAAO;AAAA,MACL,OAAO,QAAQ,4BAA4B,IAAI;AAAA;AAAA,GAElD;AAAA,EAGH,IACG,QAAQ,KAAK,EACb,YAAY,6BAA6B,EACzC,SAAS,QAAQ,mCAAmC,EACpD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,mDAAmD;AAAA,KAC1D,EACA,OAAO,CAAC,OAAe;AAAA,IACtB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,uBAAuB,EAAE;AAAA,IAEzB,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,EAAE,SAAS,MAAM,qBAAqB,GAAG,CAAC;AAAA,IAC1D,EAAO;AAAA,MACL,OAAO,QAAQ,+BAA+B,IAAI;AAAA;AAAA,GAErD;AAAA,EAEH,OAAO,WAAW,GAAG;AAAA,EAErB,OAAO;AAAA;;;ACzIT;AAFA,oBAAS;AACT;AAGA;AA2CA,SAAS,YAAY,CAAC,MAAuD;AAAA,EAC3E,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,KAAK,QAAQ,GAAG;AAAA,EACnC,IAAI,eAAe,IAAI;AAAA,IACrB,OAAO,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,EAClC;AAAA,EAEA,MAAM,QAAQ,KAAK,MAAM,GAAG,UAAU;AAAA,EACtC,IAAI,QAAQ,KAAK,MAAM,aAAa,CAAC;AAAA,EACrC,IAAI,MAAM,WAAW,GAAG,GAAG;AAAA,IACzB,QAAQ,MAAM,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,EAAE,OAAO,MAAM;AAAA;AAMxB,SAAS,sBAAsB,CAAC,MAAwC;AAAA,EACtE,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAQJ,SAAS,uBAAuB,GAAY;AAAA,EACjD,MAAM,aAAa,IAAI,UAAQ,YAAY,EACxC,YAAY,wCAAwC,EACpD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAaZ;AAAA,EAGH,WACG,QAAQ,KAAK,EACb,YAAY,uCAAuC,EACnD,SAAS,eAAe,oDAAoD,EAC5E,OAAO,sBAAsB,yBAAyB,EACtD,OAAO,gBAAgB,qBAAqB,EAC5C,OAAO,uBAAuB,gBAAgB,EAC9C,OAAO,mBAAmB,wBAAwB,EAClD,OAAO,kBAAkB,6BAA6B,EACtD,OAAO,qBAAqB,yCAAyC,EACrE,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,4DAG2C,QAAM,MAAM,eAAe;AAAA;AAAA;AAAA,EAGrF,QAAM,IAAI,sFAAwF;AAAA,KAC/F,EACA,OAAO,OAAO,UAAkB,YAAwB;AAAA,IACvD,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,MAAM,YAAY,WAAW,OAAO;AAAA,MAEpC,MAAM,SAAS,aAAa;AAAA,MAE5B,IAAI,QAAQ,QAAQ;AAAA,QAElB,MAAM,iBAAiB,QAAQ,UAAU,WAAW,QAAQ,OAAO,QAAQ,MAAM;AAAA,MACnF,EAAO;AAAA,QAEL,MAAM,SAAS,MAAM,OAAO,cAAc,UAAU,WAAW;AAAA,UAC7D,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,QAED,IAAI,QAAQ;AAAA,UACV,OAAO,OAAO;AAAA,eACT;AAAA,YACH,QAAQ;AAAA,cACN,YAAY,eAAe;AAAA,cAC3B,QAAQ,WAAW,QAAQ;AAAA,YAC7B;AAAA,UACF,CAAC;AAAA,QACH,EAAO;AAAA,UAEL,QAAQ,IAAI,QAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,UAC7C,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,QAAM,KAAK,SAAS,CAAC;AAAA,UACjC,QAAQ,IAAI,OAAO,MAAM;AAAA,UACzB,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,QAAM,IAAI,UAAU,OAAO,OAAO,CAAC;AAAA,UAC/C,QAAQ,IAAI,QAAM,IAAI,mBAAmB,OAAO,OAAO,eAAe,KAAK,CAAC;AAAA,UAC5E,IAAI,OAAO,QAAQ;AAAA,YACjB,QAAQ,IAAI,QAAM,IAAI,WAAW,OAAO,OAAO,OAAO,MAAM,cAAc,OAAO,OAAO,OAAO,UAAU,kBAAkB,OAAO,OAAO,OAAO,KAAK,SAAS,CAAC;AAAA,UACjK;AAAA,UACA,IAAI,OAAO,SAAS,WAAW;AAAA,YAC7B,QAAQ,IAAI,QAAM,IAAI,UAAU,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC;AAAA,UAC3D;AAAA,UACA,QAAQ,IAAI,QAAM,IAAI,eAAe,eAAe,GAAG,CAAC;AAAA,UACxD,QAAQ,IAAI;AAAA;AAAA;AAAA,MAGhB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;AAUT,SAAS,UAAU,CAAC,SAA8C;AAAA,EAEhE,MAAM,sBAAsB,QAAQ,UAAU,QAAQ,SAAS,QAAQ;AAAA,EAEvE,IAAI,QAAQ,SAAS,qBAAqB;AAAA,IACxC,MAAM,IAAI,cACR,qBACA,8EACA,oDACF;AAAA,EACF;AAAA,EAGA,IAAI,qBAAqB;AAAA,IACvB,OAAO,sBAAsB,OAAO;AAAA,EACtC;AAAA,EAGA,MAAM,YAAY,aAAa,OAAO;AAAA,EAEtC,OAAO,eAAe,SAAS;AAAA;AAMjC,SAAS,qBAAqB,CAAC,SAA8C;AAAA,EAE3E,IAAI,QAAQ,UAAU;AAAA,IACpB,IAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,MACnC,MAAM,IAAI,cACR,qBACA,kDACA,2DACF;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ;AAAA,MAC1C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,QAC1B,MAAM,IAAI,cACR,iBACA,mCACA,4DACF;AAAA,MACF;AAAA,MAGA,WAAW,OAAO,QAAQ;AAAA,QACxB,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAAA,UAC3C,MAAM,IAAI,cACR,iBACA,kCACA,6DACF;AAAA,QACF;AAAA,QACA,MAAM,SAAS;AAAA,QACf,IAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,SAAS;AAAA,UACnC,MAAM,IAAI,cACR,iBACA,kDACA,6DACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAO,EAAE,UAAU,OAA0B;AAAA,MAC7C,OAAO,KAAK;AAAA,MACZ,IAAI,eAAe,eAAe;AAAA,QAChC,MAAM;AAAA,MACR;AAAA,MACA,MAAM,IAAI,cACR,gBACA,sCACA,eAAe,QAAQ,IAAI,UAAU,sCACvC;AAAA;AAAA,EAEJ;AAAA,EAGA,IAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,OAAO;AAAA,IACrC,MAAM,IAAI,cACR,qBACA,iFACA,gDACF;AAAA,EACF;AAAA,EAEA,MAAM,WAA4B,CAAC;AAAA,EAEnC,IAAI,QAAQ,QAAQ;AAAA,IAClB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,QAAQ,OAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IACjB,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,QAAQ,MAAM,CAAC;AAAA,EACxD;AAAA,EAEA,OAAO,EAAE,SAAS;AAAA;AAMpB,SAAS,YAAY,CAAC,SAA6B;AAAA,EACjD,IAAI,QAAQ,OAAO;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,IAAI,cACR,qBACA,qBACA,qEACF;AAAA;AAMF,SAAS,cAAc,CAAC,WAA4C;AAAA,EAElE,IAAI;AAAA,IACF,MAAM,SAAS,KAAK,MAAM,SAAS;AAAA,IACnC,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAAA,MAC1E,MAAM,IAAI,cACR,iBACA,+BACA,0CACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,IACP,OAAO,KAAK;AAAA,IACZ,IAAI,eAAe,eAAe;AAAA,MAChC,MAAM;AAAA,IACR;AAAA,IACA,MAAM,IAAI,cACR,gBACA,iCACA,eAAe,QAAQ,IAAI,UAAU,gCACvC;AAAA;AAAA;AAOJ,eAAe,gBAAgB,CAC7B,QACA,UACA,OACA,OACA,QACA,QACe;AAAA,EACf,MAAM,WAAW,MAAM,OAAO,oBAAoB,UAAU,OAAO,EAAE,MAAM,CAAC;AAAA,EAE5E,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,cACR,gBACA,6BACA,gDACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAAS,KAAK,UAAU;AAAA,EACvC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EAEb,IAAI,CAAC,QAAQ;AAAA,IACX,QAAQ,IAAI,QAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,IAC7C,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,IAAI;AAAA,IACF,UAAS;AAAA,MACP,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MAEV,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,MAChD,MAAM,QAAQ,OAAO,MAAM;AAAA,CAAI;AAAA,MAC/B,SAAS,MAAM,IAAI,KAAK;AAAA,MAExB,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,SAAS,aAAa,IAAI;AAAA,QAChC,IAAI,CAAC;AAAA,UAAQ;AAAA,QAEb,IAAI,OAAO,UAAU,QAAQ;AAAA,UAC3B,MAAM,QAAQ,uBAAuB,OAAO,KAAK;AAAA,UACjD,IAAI,CAAC;AAAA,YAAO;AAAA,UAEZ,QAAQ,MAAM;AAAA,iBACP;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,WAAW,MAAM,UAAU,CAAC,CAAC;AAAA,cAC3E;AAAA,cACA;AAAA,iBAEG;AAAA,cACH,IAAI,MAAM,OAAO;AAAA,gBACf,IAAI,QAAQ;AAAA,kBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,gBACnE,EAAO;AAAA,kBACL,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA;AAAA,cAEpC;AAAA,cACA;AAAA,iBAEG;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,YAAY,QAAQ,MAAM,OAAO,CAAC,CAAC;AAAA,cACxE,EAAO;AAAA,gBACL,QAAQ,IAAI;AAAA,gBACZ,QAAQ,IAAI,QAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,gBACrC,IAAI,MAAM,QAAQ;AAAA,kBAChB,QAAQ,IAAI,QAAM,IAAI,UAAU,MAAM,OAAO,OAAO,CAAC;AAAA,kBACrD,QAAQ,IAAI,QAAM,IAAI,mBAAmB,OAAO,MAAM,OAAO,eAAe,KAAK,CAAC;AAAA,kBAClF,IAAI,MAAM,OAAO,QAAQ;AAAA,oBACvB,QAAQ,IAAI,QAAM,IAAI,WAAW,OAAO,MAAM,OAAO,OAAO,MAAM,cAAc,OAAO,MAAM,OAAO,OAAO,UAAU,kBAAkB,OAAO,MAAM,OAAO,OAAO,KAAK,SAAS,CAAC;AAAA,kBACnL;AAAA,kBACA,IAAI,MAAM,OAAO,SAAS,WAAW;AAAA,oBACnC,QAAQ,IAAI,QAAM,IAAI,UAAU,MAAM,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC;AAAA,kBACjE;AAAA,gBACF;AAAA,gBACA,QAAQ,IAAI;AAAA;AAAA,cAEd;AAAA,iBAEG;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,cACnE,EAAO;AAAA,gBACL,OAAO,MAAM,MAAM,SAAS,yBAAyB;AAAA;AAAA,cAEvD;AAAA;AAAA,QAEN;AAAA,MACF;AAAA,IACF;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;;;AChbvB;AAFA,oBAAS;AACT;AAGA;AAUO,SAAS,uBAAuB,GAAY;AAAA,EACjD,MAAM,aAAa,IAAI,UAAQ,YAAY,EACxC,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ;AAAA,EAQH,WACG,QAAQ,MAAM,EACd,YAAY,qBAAqB,EACjC,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+C;AAAA,QACnD,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,eAAe,OAAO;AAAA,MAElD,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAkB;AAAA,UACnD,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,WAAW,EAAE;AAAA,UACb,WAAW,EAAE;AAAA,UACb,QAAQ,eAAe,EAAE,EAAE;AAAA,QAC7B,EAAE;AAAA,QACF,OAAO,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAAA,MAC9C,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAkB;AAAA,UACnD,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,WAAW,EAAE,YAAY,QAAQ;AAAA,UACjC,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,UACpE,KAAK,cAAc,EAAE,EAAE;AAAA,QACzB,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,KAAK,EACb,YAAY,uBAAuB,EACnC,SAAS,QAAQ,cAAc,EAC/B,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,YAAY,MAAM,OAAO,aAAa,EAAE;AAAA,MAE9C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,WAAW,QAAQ,eAAe,UAAU,EAAE,EAAE,CAAC;AAAA,MACtE,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,UAAU;AAAA,UACd,MAAM,UAAU;AAAA,UAChB,MAAM,UAAU;AAAA,UAChB,aAAa,UAAU,eAAe;AAAA,UACtC,WAAW,UAAU,YAAY,QAAQ;AAAA,UACzC,WAAW,UAAU,aAAa;AAAA,UAClC,WAAW,UAAU,YAAY,IAAI,KAAK,UAAU,SAAS,EAAE,eAAe,IAAI;AAAA,UAClF,WAAW,UAAU,YAAY,IAAI,KAAK,UAAU,SAAS,EAAE,eAAe,IAAI;AAAA,UAClF,KAAK,cAAc,UAAU,EAAE;AAAA,QACjC;AAAA,QACA,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AC9HT;AAFA,oBAAS;AACT;AAGA;AAKA,IAAM,uBAAuC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAYA,SAAS,oBAAoB,CAAC,MAA4B;AAAA,EACxD,IAAI,CAAC,qBAAqB,SAAS,IAAoB,GAAG;AAAA,IACxD,MAAM,IAAI,cACR,yBACA,0BAA0B,QAC1B,gBAAgB,qBAAqB,KAAK,IAAI,GAChD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,sBAAsB,GAAY;AAAA,EAChD,MAAM,YAAY,IAAI,UAAQ,WAAW,EACtC,YAAY,gCAAgC,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUf,QAAM,OAAO,OAAO;AAAA;AAAA;AAAA,KAGjB;AAAA,EAOH,UACG,QAAQ,MAAM,EACd,YAAY,oBAAoB,EAChC,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,OAAO,qBAAqB,yBAAyB,EACrD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA8D;AAAA,QAClE,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,QAAQ,MAAM;AAAA,QAChB,QAAQ,OAAO,qBAAqB,QAAQ,IAAI;AAAA,MAClD;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,cAAc,OAAO;AAAA,MAEjD,IAAI,QAAQ;AAAA,QAEV,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAiB;AAAA,UAClD,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,UAAU,EAAE;AAAA,UACZ,WAAW,EAAE;AAAA,UACb,QAAQ,cAAc,EAAE,EAAE;AAAA,QAC5B,EAAE;AAAA,QACF,OAAO,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAAA,MAC9C,EAAO;AAAA,QACL,QAAQ,IAAI,QAAM,OAAO,iHAAiH,CAAC;AAAA,QAC3I,QAAQ,IAAI,EAAE;AAAA,QACd,IAAI,OAAO,KAAK,WAAW,GAAG;AAAA,UAC5B,OAAO,KAAK,0BAA0B;AAAA,UACtC,OAAO,KAAK,iBAAiB,qBAAqB,GAAG;AAAA,QACvD,EAAO;AAAA,UAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAiB;AAAA,YAClD,IAAI,EAAE;AAAA,YACN,MAAM,EAAE;AAAA,YACR,MAAM,EAAE;AAAA,YACR,SAAS,EAAE,WAAW;AAAA,YACtB,QAAQ,EAAE,WAAW,QAAQ;AAAA,YAC7B,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,YACpE,KAAK,aAAa,EAAE,EAAE;AAAA,UACxB,EAAE;AAAA,UACF,OAAO,OAAO,SAAS;AAAA;AAAA;AAAA,MAG3B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,KAAK,EACb,YAAY,sBAAsB,EAClC,SAAS,QAAQ,6CAA6C,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,YAAY,EAAE;AAAA,MAE5C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,UAAU,QAAQ,cAAc,SAAS,EAAE,EAAE,CAAC;AAAA,MACnE,EAAO;AAAA,QACL,QAAQ,IAAI,QAAM,OAAO,iHAAiH,CAAC;AAAA,QAC3I,QAAQ,IAAI,EAAE;AAAA,QAEd,MAAM,YAAqC;AAAA,UACzC,IAAI,SAAS;AAAA,UACb,MAAM,SAAS;AAAA,UACf,MAAM,SAAS;AAAA,UACf,SAAS,SAAS,WAAW;AAAA,UAC7B,UAAU,SAAS,WAAW,QAAQ;AAAA,UACtC,WAAW,SAAS,aAAa;AAAA,UACjC,WAAW,SAAS,YAAY,IAAI,KAAK,SAAS,SAAS,EAAE,eAAe,IAAI;AAAA,UAChF,WAAW,SAAS,YAAY,IAAI,KAAK,SAAS,SAAS,EAAE,eAAe,IAAI;AAAA,UAChF,KAAK,aAAa,SAAS,EAAE;AAAA,QAC/B;AAAA,QACA,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,MAAM,EACd,YAAY,4BAA4B,EACxC,SAAS,QAAQ,6CAA6C,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,iEAAiE;AAAA,KACxE,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAE5B,IAAI,CAAC,QAAQ;AAAA,QACX,QAAQ,IAAI,QAAM,OAAO,iHAAiH,CAAC;AAAA,QAC3I,QAAQ,IAAI,EAAE;AAAA,QACd,OAAO,KAAK,oBAAoB,OAAO;AAAA,MACzC;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,aAAa,EAAE;AAAA,MAE3C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,QAAQ,QAAQ,cAAc,EAAE,EAAE,CAAC;AAAA,MACxD,EAAO;AAAA,QACL,IAAI,OAAO,SAAS;AAAA,UAClB,OAAO,QAAQ,yBAAyB,OAAO,OAAO,cAAc,MAAM;AAAA,UAC1E,QAAQ,IAAI,QAAM,MAAM,YAAY,OAAO,SAAS,CAAC;AAAA,UACrD,IAAI,OAAO,mBAAmB,OAAO,gBAAgB,SAAS,GAAG;AAAA,YAC/D,QAAQ,IAAI,QAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,YAC7C,OAAO,gBAAgB,QAAQ,WAAS;AAAA,cACtC,QAAQ,IAAI,OAAO,OAAO;AAAA,aAC3B;AAAA,UACH;AAAA,QACF,EAAO;AAAA,UACL,OAAO,MAAM,yBAAyB,OAAO,SAAS;AAAA,UACtD,IAAI,OAAO,OAAO;AAAA,YAChB,QAAQ,IAAI,QAAM,IAAI,UAAU,OAAO,OAAO,CAAC;AAAA,UACjD;AAAA;AAAA;AAAA,MAGJ,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;ACjOT;AANA,oBAAS;AACT;AACA;AACA,uBAAS,2BAAY,6BAAW;AAChC,qBAAS;AACT,iBAAS;AAGT;;;ACRA,uBAAS,8BAAY;AACrB,qBAAS;AACT,iBAAS;AAuBF,IAAM,0BAA8D;AAAA,EACzE,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EACA,wBAAwB;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAa;AAAA,IACX,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,mBAAmB;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,IAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EACA,QAAU;AAAA,IACR,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AACF;AASO,SAAS,qBAAoB,CAAC,MAAc,QAAQ,IAAI,GAAmB;AAAA,EAChF,IAAI,aAAW,MAAK,KAAK,WAAW,CAAC,KAAK,aAAW,MAAK,KAAK,UAAU,CAAC,GAAG;AAAA,IAC3E,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,gBAAgB,CAAC,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,WAAW,CAAC,GAAG;AAAA,IACtC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,mBAAmB,CAAC,GAAG;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EAGA,IAAI;AAAA,IACF,UAAS,iBAAiB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC7C,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOJ,SAAS,kBAAiB,CAAC,IAAoB,UAA4B;AAAA,EAChF,MAAM,UAAU,SAAS,KAAK,GAAG;AAAA,EACjC,MAAM,WAA2C;AAAA,IAC/C,KAAK,WAAW;AAAA,IAChB,KAAK,eAAe;AAAA,IACpB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,EACpB;AAAA,EACA,OAAO,SAAS;AAAA;AAMX,SAAS,8BAA8B,CAAC,MAAc,QAAQ,IAAI,GAA8B;AAAA,EACrG,MAAM,UAAU,MAAK,KAAK,cAAc;AAAA,EACxC,IAAI,CAAC,aAAW,OAAO,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,KAAK,MAAM,eAAa,SAAS,OAAO,CAAC;AAAA,IAC/C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,MAAM,UAAU;AAAA,OACX,IAAI;AAAA,OACJ,IAAI;AAAA,EACT;AAAA,EAGA,YAAY,SAAS,cAAc,OAAO,QAAQ,uBAAuB,GAAG;AAAA,IAC1E,IAAI,WAAW,SAAS;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,WAAW,CAAC,MAAc,QAAQ,IAAI,GAAY;AAAA,EAChE,OAAO,aAAW,MAAK,KAAK,kBAAkB,CAAC;AAAA;;;AD7GjD,SAAS,aAAa,CAAC,QAA0B,MAAc,QAAQ,IAAI,GAAS;AAAA,EAClF,MAAM,SAAS,MAAK,KAAK,kBAAkB;AAAA,EAC3C,eAAc,QAAQ,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI;AAAA,CAAI;AAAA;AAOvD,SAAS,iBAAiB,GAAY;AAAA,EAC3C,MAAM,OAAO,IAAI,UAAQ,MAAM,EAC5B,YAAY,qCAAqC,EACjD,OAAO,qBAAqB,sDAAsD,EAClF,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,QAAM,KAAK,eAAe;AAAA,IAC1B,QAAM,KAAK,UAAU;AAAA,IACrB,QAAM,KAAK,MAAM;AAAA,KAChB,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAEjB,MAAM,MAAM,QAAQ,IAAI;AAAA,MAGxB,IAAI,YAAY,GAAG,GAAG;AAAA,QACpB,OAAO,KAAK,oDAAoD;AAAA,QAChE,IAAI,kBAAkB;AAAA,UACpB,OAAO,KAAK,wDAAwD;AAAA,UACpE;AAAA,QACF;AAAA,QACA,QAAQ,cAAc,MAAM,UAAS,OAA+B,CAAC;AAAA,UACnE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QACF,IAAI,CAAC,WAAW;AAAA,UACd,OAAO,KAAK,iBAAiB;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,MAGA,MAAM,gBAAgB,eAAe;AAAA,MACrC,IAAI,CAAC,eAAe;AAAA,QAClB,OAAO,KAAK,oBAAoB;AAAA,QAChC,OAAO,KAAK,oCAAoC;AAAA,QAChD,IAAI,kBAAkB;AAAA,UACpB,MAAM,IAAI,cACR,iBACA,uCACA,oCACF;AAAA,QACF;AAAA,QACA,QAAQ,WAAW,MAAM,UAAS,OAA4B,CAAC;AAAA,UAC7D,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QACF,IAAI,QAAQ;AAAA,UACV,OAAO,KAAK,sEAAsE;AAAA,UAClF;AAAA,QACF;AAAA,MACF;AAAA,MAGA,MAAM,oBAAoB,+BAA+B,GAAG;AAAA,MAG5D,IAAI;AAAA,MACJ,IAAI,qBAAgD;AAAA,MAEpD,IAAI,kBAAkB;AAAA,QACpB,OAAO;AAAA,QACP,IAAI,QAAQ;AAAA,UACV,OAAO,OAAO;AAAA,YACZ,MAAM;AAAA,YACN,gBAAgB;AAAA,YAChB,mBAAmB,mBAAmB,QAAQ;AAAA,UAChD,CAAC;AAAA,QACH;AAAA,MACF,EAAO;AAAA,QAEL,IAAI,mBAAmB;AAAA,UACrB,OAAO,KAAK,uBAAuB,kBAAkB,gBAAgB,kBAAkB,aAAa;AAAA,UAEpG,QAAQ,qBAAqB,MAAM,UAAS,OAAsC,CAAC;AAAA,YACjF,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,OAAO,kBAAkB;AAAA,YAClC,SAAS;AAAA,UACX,CAAC,CAAC;AAAA,UAEF,IAAI,CAAC,kBAAkB;AAAA,YACrB,MAAM,mBAAmB;AAAA,cACvB,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,cAClC,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,cACxC,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,cACxC,EAAE,MAAM,iBAAiB,OAAO,YAAY;AAAA,cAC5C,EAAE,MAAM,cAAc,OAAO,SAAS;AAAA,cACtC,EAAE,MAAM,+BAA+B,OAAO,UAAU;AAAA,cACxD,EAAE,MAAM,yBAAyB,OAAO,OAAO;AAAA,YACjD;AAAA,YAEA,QAAQ,sBAAsB,MAAM,UAAS,OAAsC,CAAC;AAAA,cAClF,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS;AAAA,YACX,CAAC,CAAC;AAAA,YAEF,IAAI,sBAAsB,QAAQ;AAAA,cAChC,qBAAqB;AAAA,YACvB,EAAO;AAAA,cAEL,MAAM,QAAQ,OAAO,OAAO,uBAAuB,EAAE,KAAK,OAAK,EAAE,SAAS,iBAAiB;AAAA,cAC3F,qBAAqB,SAAS;AAAA;AAAA,UAElC;AAAA,QACF,EAAO;AAAA,UACL,OAAO,KAAK,2CAA2C;AAAA;AAAA,QAIzD,MAAM,cAAc;AAAA,UAClB,GAAI,oBAAoB,kBAAkB,CAAC;AAAA,YACzC,MAAM,2CAA2C,mBAAmB;AAAA,YACpE,OAAO;AAAA,UACT,CAAC,IAAI,CAAC;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,QAAQ,iBAAiB,MAAM,UAAS,OAAmC,CAAC;AAAA,UAC1E,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,OAAO;AAAA;AAAA,MAIT,IAAI,SAAS,QAAQ;AAAA,QACnB,OAAO,KAAK,eAAe;AAAA,QAC3B;AAAA,MACF;AAAA,MAGA,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,IAAI,YAAY,OAAO;AAAA,MAGvB,IAAI;AAAA,MACJ,IAAI,eAAe;AAAA,QACjB,IAAI;AAAA,UACF,MAAM,SAAS,UAAU;AAAA,UACzB,IAAI,QAAQ;AAAA,YACV,QAAQ,yCAAoB,sCAAoB;AAAA,YAChD,IAAI,QAAQ,OAAO;AAAA,YACnB,IAAI,CAAC,OAAO;AAAA,cACV,MAAM,OAAO,MAAM,oBAAmB,QAAQ,QAAQ;AAAA,cACtD,QAAQ,KAAK,IAAI;AAAA,YACnB;AAAA,YACA,IAAI,OAAO;AAAA,cACT,MAAM,aAAa,MAAM,iBAAgB,QAAQ,UAAU,KAAK;AAAA,cAChE,IAAI,WAAW,SAAS,GAAG;AAAA,gBACzB,MAAM,QAAQ,YAAY,WAAW,KAAK,OAAK,EAAE,OAAO,SAAS,IAAI;AAAA,gBACrE,IAAI,OAAO;AAAA,kBACT,sBAAsB,EAAE,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,WAAW,MAAM,WAAW,MAAM;AAAA,gBAC5F,EAAO,SAAI,WAAW,IAAI;AAAA,kBACxB,MAAM,QAAQ,WAAW;AAAA,kBACzB,oBAAoB,MAAM,EAAE;AAAA,kBAC5B,YAAY,MAAM;AAAA,kBAClB,sBAAsB,EAAE,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,WAAW,MAAM,WAAW,KAAK;AAAA,gBAC3F;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA,MAAM;AAAA,MAGV;AAAA,MAEA,MAAM,WAA6B;AAAA,QACjC;AAAA,WACI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,WAC7B,qBAAqB,EAAE,WAAW,mBAAmB,KAAK,IAAI,CAAC;AAAA,MACrE;AAAA,MAEA,IAAI,SAAS,UAAU,oBAAoB,iBAAiB;AAAA,QAE1D,MAAM,KAAK,sBAAqB,GAAG;AAAA,QACnC,MAAM,WAAW,CAAC,iBAAiB,mBAAmB,eAAe;AAAA,QACrE,MAAM,aAAa,mBAAkB,IAAI,QAAQ;AAAA,QAEjD,OAAO,KAAK,eAAe,SAAS,KAAK,IAAI,GAAG;AAAA,QAChD,OAAO,KAAK,YAAY,YAAY;AAAA,QAEpC,IAAI;AAAA,UACF,UAAS,YAAY,EAAE,KAAK,OAAO,UAAU,CAAC;AAAA,UAC9C,OAAO,QAAQ,kCAAkC;AAAA,UACjD,MAAM;AAAA,UACN,OAAO,MAAM,wDAAwD;AAAA,UACrE,OAAO,KAAK,KAAK,YAAY;AAAA;AAAA,QAI/B,cAAc,UAAU,GAAG;AAAA,QAC3B,OAAO,QAAQ,0BAA0B;AAAA,QAGzC,IAAI,CAAC,UAAU,qBAAqB;AAAA,UAClC,IAAI,oBAAoB,WAAW;AAAA,YACjC,OAAO,KAAK,gCAAgC,oBAAoB,SAAS,oBAAoB,KAAK;AAAA,UACpG,EAAO;AAAA,YACL,OAAO,KAAK,cAAc,oBAAoB,SAAS,oBAAoB,KAAK;AAAA;AAAA,QAEpF;AAAA,QACA,IAAI,CAAC,QAAQ;AAAA,UACX,OAAO,KAAK,mDAAmD;AAAA,QACjE;AAAA,QAGA,QAAQ,IAAI,EAAE;AAAA,QACd,OAAO,KAAK,aAAa;AAAA,QACzB,OAAO,KAAK,gCAAgC,mBAAmB,MAAM;AAAA,QACrE,OAAO,KAAK,+DAA+D;AAAA,QAC3E,OAAO,KAAK,iEAAiE;AAAA,MAC/E,EAAO;AAAA,QAEL,cAAc,UAAU,GAAG;AAAA,QAC3B,OAAO,QAAQ,0BAA0B;AAAA,QAGzC,IAAI,CAAC,UAAU,qBAAqB;AAAA,UAClC,IAAI,oBAAoB,WAAW;AAAA,YACjC,OAAO,KAAK,gCAAgC,oBAAoB,SAAS,oBAAoB,KAAK;AAAA,UACpG,EAAO;AAAA,YACL,OAAO,KAAK,cAAc,oBAAoB,SAAS,oBAAoB,KAAK;AAAA;AAAA,QAEpF;AAAA,QAEA,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO,KAAK,qCAAqC;AAAA,QACnD,EAAO;AAAA,UACL,OAAO,KAAK,yDAAyD;AAAA,UACrE,IAAI,CAAC,QAAQ;AAAA,YACX,OAAO,KAAK,mDAAmD;AAAA,UACjE;AAAA;AAAA;AAAA,MAKJ,IAAI,CAAC,kBAAkB;AAAA,QACrB,MAAM,YAAY,MAAK,KAAK,sCAAsC;AAAA,QAClE,IAAI,CAAC,aAAW,SAAS,GAAG;AAAA,UAC1B,QAAQ,iBAAiB,MAAM,UAAS,OAAkC,CAAC;AAAA,YACzE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC,CAAC;AAAA,UAEF,IAAI,cAAc;AAAA,YAChB,IAAI;AAAA,cAEF,MAAM,WAAW,MAAK,KAAK,6BAA6B;AAAA,cACxD,IAAI,CAAC,aAAW,QAAQ,GAAG;AAAA,gBACzB,WAAU,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,cACzC;AAAA,cACA,UAAS,UAAU,MAAK,KAAK,4BAA4B,IAAI,mBAAmB;AAAA,gBAC9E;AAAA,gBACA,OAAO;AAAA,cACT,CAAC;AAAA,cACD,OAAO,QAAQ,8CAA8C;AAAA,cAC7D,MAAM;AAAA,cAEN,OAAO,KAAK,iDAAiD;AAAA;AAAA,UAEjE;AAAA,QACF;AAAA,MACF;AAAA,MAGA,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,UACZ,SAAS;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,WAAW,oBAAoB,QAAQ;AAAA,UACvC;AAAA,UACA,qBAAqB,uBAAuB;AAAA,UAC5C,YAAY;AAAA,YACV,aAAa;AAAA,YACb,MAAM,CAAC,mCAAmC,8BAA8B;AAAA,UAC1E;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AEnXT,oBAAS;AACT;AACA,oBAAS;AAET;AAyBO,SAAS,oBAAoB,GAAY;AAAA,EAC9C,MAAM,UAAU,IAAI,UAAQ,SAAS,EAClC,YAAY,2DAA2D,EACvE,OAAO,oBAAoB,qBAAqB,GAAG,EACnD,OAAO,eAAe,uBAAuB,IAAI,EACjD,OAAO,oBAAoB,wBAAwB,yBAAyB,EAC5E,OAAO,oBAAoB,0CAA0C,2DAA2D,EAChI,OAAO,kBAAkB,qCAAqC,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,QAAM,IAAI,WAAW;AAAA,IACrB,QAAM,IAAI,QAAQ;AAAA;AAAA,EAEpB,QAAM,IAAI,+EAA+E;AAAA,KACtF,EACA,OAAO,CAAC,YAAmC;AAAA,IAC1C,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,WAAW,SAAQ,QAAQ,QAAQ,GAAG;AAAA,MAC5C,MAAM,QAAQ,SAAS,QAAQ,SAAS,MAAM,EAAE;AAAA,MAChD,MAAM,aAAa,gBAAgB,QAAQ,WAAW,yBAAyB;AAAA,MAC/E,MAAM,cAAc,iBAAiB,QAAQ,WAAW,2DAA2D;AAAA,MACnH,MAAM,cAAc,QAAQ,eAAe;AAAA,MAE3C,MAAM,cAA8B;AAAA,QAClC,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,CAAC,QAAQ;AAAA,QACX,QAAQ,IAAI,QAAM,KAAK;AAAA,WAAc;AAAA,CAAe,CAAC;AAAA,MACvD;AAAA,MAEA,MAAM,SAAS,gBAAgB,WAAW;AAAA,MAG1C,MAAM,MAAM,gBAAgB,KAAK,QAAQ;AAAA,MAEzC,WAAW,UAAU,OAAO,SAAS;AAAA,QACnC,IAAI,oBAAoB,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,MAClE;AAAA,MAEA,WAAW,WAAW,OAAO,UAAU;AAAA,QACrC,IAAI,qBAAqB,QAAQ,MAAM,QAAQ,MAAM,QAAQ,KAAK;AAAA,MACpE;AAAA,MAEA,IAAI,KAAK;AAAA,MAGT,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,UACZ,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO;AAAA,UACjB,SAAS,OAAO;AAAA,UAChB,SAAS;AAAA,YACP,cAAc,OAAO,QAAQ;AAAA,YAC7B,eAAe,OAAO,SAAS;AAAA,YAC/B,cAAc,OAAO,QAAQ;AAAA,UAC/B;AAAA,UACA,aAAa;AAAA,QACf,CAAC;AAAA,MACH,EAAO;AAAA,QAEL,MAAM,gBAAgB,OAAO,QAAQ,SAAS,OAAO,SAAS,SAAS,OAAO,QAAQ;AAAA,QAEtF,IAAI,kBAAkB,GAAG;AAAA,UACvB,OAAO,KAAK,yCAAyC;AAAA,UACrD,QAAQ,IAAI,QAAM,IAAI;AAAA,8EAAiF,CAAC;AAAA,UACxG;AAAA,QACF;AAAA,QAGA,IAAI,OAAO,QAAQ,SAAS,GAAG;AAAA,UAC7B,QAAQ,IAAI,QAAM,KAAK,oBAAoB,OAAO,OAAO,QAAQ,MAAM,KAAK,CAAC;AAAA,UAC7E,QAAQ,IAAI;AAAA,UACZ,WAAW,KAAK,OAAO,SAAS;AAAA,YAC9B,MAAM,gBAAgB,EAAE,eAAe,SAAS,QAAM,MAAM,QAAQ,IAChE,EAAE,eAAe,WAAW,QAAM,OAAO,UAAU,IACnD,QAAM,IAAI,OAAO;AAAA,YACrB,MAAM,YAAY,QAAM,IAAI,IAAI,EAAE,SAAS;AAAA,YAC3C,QAAQ,IAAI,OAAO,iBAAiB,QAAM,MAAM,EAAE,IAAI,KAAK,QAAM,OAAO,OAAO,EAAE,IAAI,CAAC,KAAK,WAAW;AAAA,YACtG,QAAQ,IAAI,SAAS,QAAM,IAAI,EAAE,OAAO,GAAG;AAAA,UAC7C;AAAA,UACA,QAAQ,IAAI;AAAA,QACd;AAAA,QAGA,IAAI,OAAO,SAAS,SAAS,GAAG;AAAA,UAC9B,QAAQ,IAAI,QAAM,KAAK,qBAAqB,OAAO,OAAO,SAAS,MAAM,KAAK,CAAC;AAAA,UAC/E,QAAQ,IAAI;AAAA,UACZ,WAAW,KAAK,OAAO,UAAU;AAAA,YAC/B,QAAQ,IAAI,OAAO,QAAM,MAAM,EAAE,IAAI,KAAK,QAAM,IAAI,IAAI,OAAO,EAAE,KAAK,UAAU,GAAG;AAAA,UACrF;AAAA,UACA,QAAQ,IAAI;AAAA,QACd;AAAA,QAGA,IAAI,OAAO,QAAQ,SAAS,GAAG;AAAA,UAC7B,QAAQ,IAAI,QAAM,KAAK,uBAAuB,OAAO,OAAO,QAAQ,MAAM,KAAK,CAAC;AAAA,UAChF,QAAQ,IAAI;AAAA,UACZ,WAAW,KAAK,OAAO,SAAS;AAAA,YAC9B,MAAM,SAAS,EAAE,aAAa,QAAM,KAAK,OAAO,EAAE,YAAY,IAAI;AAAA,YAClE,QAAQ,IAAI,OAAO,QAAM,MAAM,EAAE,IAAI,KAAK,QAAM,OAAO,OAAO,EAAE,IAAI,CAAC,KAAK,QAAM,QAAQ,EAAE,IAAI,IAAI,QAAQ;AAAA,UAC5G;AAAA,UACA,QAAQ,IAAI;AAAA,QACd;AAAA,QAGA,QAAQ,IAAI,QAAM,IAAI,qCAAoC,CAAC;AAAA,QAC3D,QAAQ,IAAI,KAAK,QAAM,KAAK,UAAU,KAAK,OAAO,OAAO,QAAQ,MAAM,cAAc,OAAO,OAAO,SAAS,MAAM,eAAe,OAAO,OAAO,QAAQ,MAAM,WAAW;AAAA,QACxK,QAAQ,IAAI,QAAM,IAAI,0CAA0C,CAAC;AAAA,QACjE,QAAQ,IAAI;AAAA;AAAA,MAEd,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AC/JT,oBAAS;AACT;AACA,uBAAS,2BAAY,6BAAW;AAChC,iBAAS;AACT,qBAAS;AAOF,SAAS,YAAY,GAAW;AAAA,EACrC,IAAI;AAAA,IACF,OAAO,UAAS,iCAAiC,EAAE,UAAU,SAAS,OAAO,CAAC,QAAQ,QAAQ,MAAM,EAAE,CAAC,EAAE,KAAK;AAAA,IAC9G,MAAM;AAAA,IACN,OAAO,QAAQ,IAAI;AAAA;AAAA;AAQvB,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU1B,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsGnB,IAAM,YAAY;AAClB,IAAM,aAAa;AAEZ,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,UAAQ,QAAQ,EAChC,YAAY,8CAA8C;AAAA,EAE7D,OACG,QAAQ,SAAS,EACjB,YAAY,4CAA4C,EACxD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA,KAIZ,EACA,OAAO,CAAC,UAAmC,QAAiB;AAAA,IAC3D,MAAM,YAAY,IAAI,QAAQ;AAAA,IAC9B,MAAM,SAAS,YAAY,YAAY,SAAS,IAAI;AAAA,IACpD,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,WAAW,aAAa;AAAA,IAC9B,MAAM,WAAW,MAAK,UAAU,SAAS;AAAA,IACzC,MAAM,YAAY,MAAK,UAAU,UAAU;AAAA,IAG3C,IAAI,CAAC,aAAW,QAAQ,GAAG;AAAA,MACzB,WAAU,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,IACzC;AAAA,IAGA,MAAM,UAAU,GAAG;AAAA;AAAA,EAAwB;AAAA;AAAA,IAC3C,eAAc,WAAW,SAAS,OAAO;AAAA,IAEzC,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO;AAAA,QACZ,WAAW;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AAAA,IACH,EAAO;AAAA,MACL,OAAO,QAAQ,8BAA8B;AAAA,MAC7C,QAAQ,IAAI,KAAK,QAAM,IAAI,OAAO,KAAK,WAAW;AAAA,MAClD,QAAQ,IAAI,EAAE;AAAA,MACd,QAAQ,IAAI,KAAK,QAAM,IAAI,+DAA+D,GAAG;AAAA,MAC7F,QAAQ,IAAI,KAAK,QAAM,IAAI,8EAA8E,GAAG;AAAA;AAAA,GAE/G;AAAA,EAEH,OAAO;AAAA;;;ACvLT;AAFA,oBAAS;AACT;AAGA;AACA;AAEA,IAAM,2BAA2B;AACjC,IAAM,cAAc;AAEpB,SAAS,iBAAiB,CAAC,MAAc,OAAe,QAAQ,IAAY;AAAA,EAC1E,MAAM,QAAQ,KAAK,IAAI,OAAO,OAAO,CAAC;AAAA,EACtC,MAAM,SAAS,KAAK,MAAM,QAAQ,KAAK;AAAA,EACvC,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,MAAM,IAAS,OAAO,MAAM,IAAI,IAAS,OAAO,KAAK;AAAA,EAC3D,MAAM,UAAU,KAAK,MAAM,QAAQ,GAAG;AAAA,EACtC,OAAO,GAAG,OAAO,OAAO,OAAO;AAAA;AAG1B,SAAS,kBAAkB,GAAY;AAAA,EAC5C,MAAM,QAAQ,IAAI,UAAQ,OAAO,EAC9B,YAAY,kDAAkD,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAEH,MAAM,OAAO,YAAY;AAAA,IACvB,MAAM,SAAS,YAAY,KAAK;AAAA,IAChC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,UAAU;AAAA,MACzB,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI;AAAA,MACZ;AAAA,MAEA,MAAM,UAAU,MAAM,cAAc,0BAA0B,MAAM,EAAE,MAAM;AAAA,MAE5E,MAAM,SAAS,aAAa;AAAA,MAG5B,MAAM,UAAU,MAAM,OAAO,YAAY;AAAA,MACzC,MAAM,cAAc,QAAQ;AAAA,MAG5B,IAAI,eAAe;AAAA,MACnB,IAAI,kBAAkB;AAAA,MAEtB,IAAI,cAAc,GAAG;AAAA,QACnB,MAAM,UAAU,MAAM,QAAQ,IAC5B,QAAQ,IAAI,OAAO,WAAW;AAAA,UAC5B,MAAM,KAAK,OAAO,OAAO,EAAE;AAAA,UAC3B,OAAO,UAAU,eAAe,MAAM,QAAQ,IAAI;AAAA,YAChD,OAAO,aAAa,EAAE,EAAE,MAAM,MAAM,CAAC,CAAc;AAAA,YACnD,OAAO,gBAAgB,EAAE,EAAE,MAAM,MAAM,CAAC,CAAc;AAAA,UACxD,CAAC;AAAA,UACD,OAAO,EAAE,UAAU,SAAS,QAAQ,aAAa,YAAY,OAAO;AAAA,SACrE,CACH;AAAA,QAEA,WAAW,KAAK,SAAS;AAAA,UACvB,gBAAgB,EAAE;AAAA,UAClB,mBAAmB,EAAE;AAAA,QACvB;AAAA,MACF;AAAA,MAGA,MAAM,oBAAoB;AAAA,MAC1B,MAAM,mBAAmB;AAAA,MACzB,MAAM,wBAAwB,oBAAoB;AAAA,MAElD,IAAI,WAAW,OAAQ,QAAkC,SAAS,YAAY;AAAA,QAC3E,QAAiC,KAAK;AAAA,MACzC;AAAA,MAEA,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,UACZ,WAAW;AAAA,YACT,SAAS;AAAA,YACT,UAAU;AAAA,YACV,aAAa;AAAA,UACf;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,OAAO;AAAA,YACP,WAAW;AAAA,YACX,MAAM;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,YACN,SAAS;AAAA,UACX;AAAA,QACF,CAAC;AAAA,MACH,EAAO;AAAA,QACL,QAAQ,IAAI,EAAE;AAAA,QACd,QAAQ,IAAI,QAAM,KAAK,6BAA6B,CAAC;AAAA,QACrD,QAAQ,IAAI,QAAM,IAAI,IAAS,OAAO,EAAE,CAAC,CAAC;AAAA,QAC1C,QAAQ,IAAI,EAAE;AAAA,QACd,QAAQ,IAAI,QAAM,KAAK,YAAY,CAAC;AAAA,QACpC,QAAQ,IAAI,oBAAoB,QAAM,KAAK,OAAO,WAAW,CAAC,GAAG;AAAA,QACjE,QAAQ,IAAI,oBAAoB,QAAM,KAAK,OAAO,YAAY,CAAC,GAAG;AAAA,QAClE,QAAQ,IAAI,oBAAoB,QAAM,KAAK,OAAO,eAAe,CAAC,GAAG;AAAA,QACrE,QAAQ,IAAI,EAAE;AAAA,QACd,QAAQ,IAAI,QAAM,KAAK,sBAAsB,QAAM,OAAO,OAAO,UAAU,CAAC;AAAA,QAC5E,QAAQ,IAAI,iBAAiB,QAAM,KAAK,OAAO,qBAAqB,CAAC,OAAO,OAAO,iBAAiB,GAAG;AAAA,QACvG,QAAQ,IAAI,KAAK,kBAAkB,kBAAkB,iBAAiB,GAAG;AAAA,QACzE,QAAQ,IAAI,EAAE;AAAA,QACd,QAAQ,IAAI,QAAM,OAAO,OAAY,OAAO,qBAAqB,+BAA+B,CAAC;AAAA,QACjG,QAAQ,IAAI,QAAM,IAAI,6CAAkD,CAAC;AAAA,QACzE,QAAQ,IAAI,cAAc,QAAM,UAAU,WAAW,GAAG;AAAA,QACxD,QAAQ,IAAI,EAAE;AAAA;AAAA,MAEhB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAED,OAAO;AAAA;;;AlClGT;AAmBA,IAAI,aAAa;AACjB,IAAI,QAAQ,IAAI,aAAa;AAAA,EAC3B,aAAa,QAAQ,IAAI;AAC3B,EAAO;AAAA,EACL,IAAI;AAAA,IACF,MAAM,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAAA,IACxD,MAAM,UAAU,MAAK,YAAW,MAAM,MAAM,cAAc;AAAA,IAC1D,MAAM,MAAM,KAAK,MAAM,eAAa,SAAS,OAAO,CAAC;AAAA,IACrD,aAAa,IAAI,WAAW;AAAA,IAC5B,MAAM;AAAA;AAKV,IAAM,UAAU,IAAI;AAEpB,QACG,KAAK,UAAU,EACf,YAAY;AAAA;AAAA;AAAA,yCAG0B,EACtC,QAAQ,YAAY,iBAAiB,4BAA4B,EACjE,OAAO,UAAU,wCAAwC,EACzD,OAAO,mBAAmB,kBAAkB,EAC5C,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,qBAAqB,gDAAgD,EAC5E,cAAc;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AACrB,CAAC;AAGH,QAAQ,YAAY,SAAS;AAAA,EAC3B,QAAM,OAAO,+CAA+C;AAAA,oCAC1B,QAAM,IAAI,IAAI;AAAA,WACvC,QAAM,IAAI,uBAAuB,0BAA0B,QAAM,IAAI,oBAAoB;AAAA;AAAA,EAElG,QAAM,OAAO,qBAAqB;AAAA,0CACM,QAAM,IAAI,sBAAsB;AAAA,0CAChC,QAAM,IAAI,wBAAwB;AAAA,0CAClC,QAAM,IAAI,uCAAuC;AAAA,0CACjD,QAAM,IAAI,8BAA8B;AAAA,0CACxC,QAAM,IAAI,6BAA6B;AAAA,0CACvC,QAAM,IAAI,sBAAsB;AAAA,0CAChC,QAAM,IAAI,mBAAmB;AAAA;AAAA,0CAE7B,QAAM,IAAI,kCAAkC;AAAA,0CAC5C,QAAM,IAAI,cAAc;AAAA,0CACxB,QAAM,IAAI,+BAA+B;AAAA;AAAA,0CAEzC,QAAM,IAAI,mCAAmC;AAAA,0CAC7C,QAAM,IAAI,eAAe;AAAA;AAAA,wDAEX,QAAM,IAAI,gCAAgC;AAAA,8DACpC,QAAM,IAAI,sBAAsB;AAAA,wDACtC,QAAM,IAAI,kBAAkB;AAAA;AAAA,gDAEpC,QAAM,IAAI,qCAAqC;AAAA,gDAC/C,QAAM,IAAI,eAAe;AAAA,gDACzB,QAAM,IAAI,gBAAgB;AAAA;AAAA,0CAEhC,QAAM,IAAI,6BAA6B;AAAA,kDAC/B,QAAM,IAAI,YAAY;AAAA;AAAA,EAEtE,QAAM,OAAO,gCAA+B;AAAA,oDACM,QAAM,IAAI,aAAY;AAAA,qDACrB,QAAM,IAAI,gDAA+C;AAAA,qDACzD,QAAM,IAAI,aAAY;AAAA,qDACtB,QAAM,IAAI,kBAAiB;AAAA,gEAChB,QAAM,IAAI,eAAc;AAAA;AAAA;AAAA,EAGtF,QAAM,OAAO,+CAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5D,CAAC,eAAe,IAAI;AAAA,IAAO,QAAM,OAAO,kEAAkE,IAAI;AAAA,IAAO,KAAK,CAAC,YAAY,IAAI;AAAA,IAAO,QAAM,MAAM,8BAA8B,IAAI;AAAA,IAAO,IAAI;AAI7M,QAAQ,KAAK,aAAa,CAAC,gBAAgB;AAAA,EACzC,MAAM,aAA+E,YAAY,gBAAgB;AAAA,EACjH,IAAI,WAAW,UAAU,CAAC,QAAQ,IAAI,kBAAkB;AAAA,IACtD,QAAQ,IAAI,mBAAmB,WAAW;AAAA,EAC5C;AAAA,EACA,IAAI,WAAW,YAAY,CAAC,QAAQ,IAAI,mBAAmB;AAAA,IACzD,QAAQ,IAAI,oBAAoB,WAAW;AAAA,EAC7C;AAAA,EACA,IAAI,WAAW,kBAAkB,QAAQ,IAAI,OAAO,UAAU,CAAC,QAAQ,MAAM,OAAO;AAAA,IAClF,QAAQ,IAAI,2BAA2B;AAAA,EACzC;AAAA,CACD;AAGD,QAAQ,WAAW,kBAAkB,CAAC;AACtC,QAAQ,WAAW,mBAAmB,CAAC;AACvC,QAAQ,WAAW,kBAAkB,CAAC;AACtC,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,qBAAqB,CAAC;AACzC,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,uBAAuB,CAAC;AAC3C,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,wBAAwB,CAAC;AAC5C,QAAQ,WAAW,wBAAwB,CAAC;AAC5C,QAAQ,WAAW,uBAAuB,CAAC;AAC3C,QAAQ,WAAW,qBAAqB,CAAC;AACzC,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,mBAAmB,CAAC;AAGvC,QAAQ,MAAM;",
|
|
45
|
+
"debugId": "E58AAC8256B9F1B664756E2164756E21",
|
|
46
46
|
"names": []
|
|
47
47
|
}
|