From 6e308408be74e52039eca3168af8e2f71374b9b7 Mon Sep 17 00:00:00 2001 From: Harshith Mullapudi Date: Fri, 18 Jul 2025 22:30:46 +0530 Subject: [PATCH] Feat: cli for core (#24) * Feat: cli for cor * Fix: add deploy registry namespace to Docker configurations * Feat: cli for init, start and stop --------- Co-authored-by: Manoj K --- .gitignore | 5 +- .../conversation/conversation.client.tsx | 2 +- .../app/components/logs/log-text-collapse.tsx | 6 +- apps/webapp/app/components/ui/avatar.tsx | 2 +- apps/webapp/app/routes/home.logs.activity.tsx | 84 +++-- apps/webapp/app/routes/home.logs.all.tsx | 94 +++-- .../app/services/knowledgeGraph.server.ts | 2 +- apps/webapp/app/trigger/chat/chat.ts | 2 +- apps/webapp/app/trigger/temp.ts | 334 ++++++++++++++++++ packages/core-cli/.gitignore | 2 + .../.tshy-build/.tshy/esm.tsbuildinfo | 1 - .../core-cli/.tshy-build/esm/cli/common.d.ts | 19 - .../core-cli/.tshy-build/esm/cli/common.js | 54 --- .../.tshy-build/esm/cli/common.js.map | 1 - .../core-cli/.tshy-build/esm/cli/index.d.ts | 1 - .../core-cli/.tshy-build/esm/cli/index.js | 2 - .../core-cli/.tshy-build/esm/cli/index.js.map | 1 - .../.tshy-build/esm/commands/init.d.ts | 1 - .../core-cli/.tshy-build/esm/commands/init.js | 2 - .../.tshy-build/esm/commands/init.js.map | 1 - packages/core-cli/.tshy-build/esm/index.d.ts | 1 - packages/core-cli/.tshy-build/esm/index.js | 2 - .../core-cli/.tshy-build/esm/index.js.map | 1 - .../.tshy-build/esm/utils/cliOutput.d.ts | 25 -- .../.tshy-build/esm/utils/cliOutput.js | 97 ----- .../.tshy-build/esm/utils/cliOutput.js.map | 1 - .../.tshy-build/esm/utils/logger.d.ts | 42 --- .../core-cli/.tshy-build/esm/utils/logger.js | 111 ------ .../.tshy-build/esm/utils/logger.js.map | 1 - .../esm/utils/supportsHyperlinks.d.ts | 15 - .../esm/utils/supportsHyperlinks.js | 122 ------- .../esm/utils/supportsHyperlinks.js.map | 1 - .../.tshy-build/esm/utils/terminalLink.d.ts | 56 --- .../.tshy-build/esm/utils/terminalLink.js | 76 ---- .../.tshy-build/esm/utils/terminalLink.js.map | 1 - packages/core-cli/.tshy/build.json | 8 - packages/core-cli/.tshy/esm.json | 16 - packages/core-cli/README.md | 193 ++++++++++ packages/core-cli/package.json | 7 +- packages/core-cli/src/cli/index.ts | 24 ++ packages/core-cli/src/commands/init.ts | 324 +++++++++++++++++ packages/core-cli/src/commands/start.ts | 72 ++++ packages/core-cli/src/commands/stop.ts | 72 ++++ packages/core-cli/src/index.ts | 3 + packages/core-cli/src/utils/ascii.ts | 24 ++ .../core-cli/src/utils/docker-interactive.ts | 108 ++++++ packages/core-cli/src/utils/docker.ts | 30 ++ packages/core-cli/src/utils/env-checker.ts | 23 ++ packages/core-cli/src/utils/env.ts | 17 + packages/core-cli/src/utils/file.ts | 41 +++ packages/core-cli/src/utils/git.ts | 22 ++ packages/core-cli/src/utils/spinner.ts | 22 ++ trigger/.env.example | 1 + trigger/docker-compose.aws.yaml | 1 + trigger/docker-compose.yaml | 3 +- 55 files changed, 1420 insertions(+), 759 deletions(-) create mode 100644 apps/webapp/app/trigger/temp.ts create mode 100644 packages/core-cli/.gitignore delete mode 100644 packages/core-cli/.tshy-build/.tshy/esm.tsbuildinfo delete mode 100644 packages/core-cli/.tshy-build/esm/cli/common.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/cli/common.js delete mode 100644 packages/core-cli/.tshy-build/esm/cli/common.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/cli/index.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/cli/index.js delete mode 100644 packages/core-cli/.tshy-build/esm/cli/index.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/commands/init.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/commands/init.js delete mode 100644 packages/core-cli/.tshy-build/esm/commands/init.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/index.d.ts delete mode 100755 packages/core-cli/.tshy-build/esm/index.js delete mode 100644 packages/core-cli/.tshy-build/esm/index.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/utils/cliOutput.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/utils/cliOutput.js delete mode 100644 packages/core-cli/.tshy-build/esm/utils/cliOutput.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/utils/logger.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/utils/logger.js delete mode 100644 packages/core-cli/.tshy-build/esm/utils/logger.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js delete mode 100644 packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js.map delete mode 100644 packages/core-cli/.tshy-build/esm/utils/terminalLink.d.ts delete mode 100644 packages/core-cli/.tshy-build/esm/utils/terminalLink.js delete mode 100644 packages/core-cli/.tshy-build/esm/utils/terminalLink.js.map delete mode 100644 packages/core-cli/.tshy/build.json delete mode 100644 packages/core-cli/.tshy/esm.json create mode 100644 packages/core-cli/README.md create mode 100644 packages/core-cli/src/commands/start.ts create mode 100644 packages/core-cli/src/commands/stop.ts create mode 100644 packages/core-cli/src/utils/ascii.ts create mode 100644 packages/core-cli/src/utils/docker-interactive.ts create mode 100644 packages/core-cli/src/utils/docker.ts create mode 100644 packages/core-cli/src/utils/env-checker.ts create mode 100644 packages/core-cli/src/utils/env.ts create mode 100644 packages/core-cli/src/utils/file.ts create mode 100644 packages/core-cli/src/utils/git.ts create mode 100644 packages/core-cli/src/utils/spinner.ts diff --git a/.gitignore b/.gitignore index f1f5f62..eacab88 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ coverage out/ build dist - +.tshy/ # Debug npm-debug.log* @@ -46,4 +46,5 @@ registry/ .cursor CLAUDE.md -.claude \ No newline at end of file +.claude + diff --git a/apps/webapp/app/components/conversation/conversation.client.tsx b/apps/webapp/app/components/conversation/conversation.client.tsx index a0d38cf..95066c4 100644 --- a/apps/webapp/app/components/conversation/conversation.client.tsx +++ b/apps/webapp/app/components/conversation/conversation.client.tsx @@ -55,7 +55,7 @@ export const ConversationNew = ({

- Demo UI: basic conversation to showcase memory integration. + Update your memory or ask about anything it already knows

diff --git a/apps/webapp/app/components/logs/log-text-collapse.tsx b/apps/webapp/app/components/logs/log-text-collapse.tsx index 3880799..dfc6123 100644 --- a/apps/webapp/app/components/logs/log-text-collapse.tsx +++ b/apps/webapp/app/components/logs/log-text-collapse.tsx @@ -83,9 +83,9 @@ export function LogTextCollapse({ isLong ? "max-h-16 overflow-hidden" : "", )} style={{ lineHeight: "1.5" }} - > - {displayText} -

+ dangerouslySetInnerHTML={{ __html: text }} + /> + {isLong && ( <> diff --git a/apps/webapp/app/components/ui/avatar.tsx b/apps/webapp/app/components/ui/avatar.tsx index e08f8b3..773f050 100644 --- a/apps/webapp/app/components/ui/avatar.tsx +++ b/apps/webapp/app/components/ui/avatar.tsx @@ -55,7 +55,7 @@ export const getInitials = (name: string, noOfChar?: number | undefined) => { return words .map((word) => word.charAt(0)) .filter((char) => char !== "") - .slice(0, noOfChar ? noOfChar : 2) + .slice(0, noOfChar ? noOfChar : 1) .join("") .toUpperCase(); }; diff --git a/apps/webapp/app/routes/home.logs.activity.tsx b/apps/webapp/app/routes/home.logs.activity.tsx index 0d405e1..0570a80 100644 --- a/apps/webapp/app/routes/home.logs.activity.tsx +++ b/apps/webapp/app/routes/home.logs.activity.tsx @@ -30,7 +30,7 @@ export default function LogsActivity() { return ( -
+
@@ -58,44 +58,52 @@ export default function LogsActivity() { ]} />
- {logs.length > 0 && ( - - )} + {isInitialLoad ? ( + <> + {" "} + + ) : ( + <> + {logs.length > 0 && ( + + )} - {/* Logs List */} -
- {logs.length === 0 ? ( - - -
- -

- No activity logs found -

-

- {selectedSource || selectedStatus - ? "Try adjusting your filters to see more results." - : "No activity ingestion logs are available yet."} -

-
-
-
- ) : ( - - )} -
+ {/* Logs List */} +
+ {logs.length === 0 ? ( + + +
+ +

+ No activity logs found +

+

+ {selectedSource || selectedStatus + ? "Try adjusting your filters to see more results." + : "No activity ingestion logs are available yet."} +

+
+
+
+ ) : ( + + )} +
+ + )}
); diff --git a/apps/webapp/app/routes/home.logs.all.tsx b/apps/webapp/app/routes/home.logs.all.tsx index 232b114..2797967 100644 --- a/apps/webapp/app/routes/home.logs.all.tsx +++ b/apps/webapp/app/routes/home.logs.all.tsx @@ -26,18 +26,6 @@ export default function LogsAll() { status: selectedStatus, }); - if (isInitialLoad) { - return ( - - -
- -
-
-
- ); - } - return ( <>
- {/* Filters */} - {logs.length > 0 && ( - + {isInitialLoad ? ( + <> + {" "} + + ) : ( + <> + {" "} + {/* Filters */} + {logs.length > 0 && ( + + )} + {/* Logs List */} +
+ {logs.length === 0 ? ( + + +
+ +

+ No logs found +

+

+ {selectedSource || selectedStatus + ? "Try adjusting your filters to see more results." + : "No ingestion logs are available yet."} +

+
+
+
+ ) : ( + + )} +
+ )} - - {/* Logs List */} -
- {logs.length === 0 ? ( - - -
- -

No logs found

-

- {selectedSource || selectedStatus - ? "Try adjusting your filters to see more results." - : "No ingestion logs are available yet."} -

-
-
-
- ) : ( - - )} -
); diff --git a/apps/webapp/app/services/knowledgeGraph.server.ts b/apps/webapp/app/services/knowledgeGraph.server.ts index 8812905..9cbc9ec 100644 --- a/apps/webapp/app/services/knowledgeGraph.server.ts +++ b/apps/webapp/app/services/knowledgeGraph.server.ts @@ -748,7 +748,7 @@ export class KnowledgeGraphService { // Phase 2: Find semantically similar statements const semanticMatches = await findSimilarStatements({ factEmbedding: triple.statement.factEmbedding, - threshold: 0.7, + threshold: 0.85, excludeIds: checkedStatementIds, userId: triple.provenance.userId, }); diff --git a/apps/webapp/app/trigger/chat/chat.ts b/apps/webapp/app/trigger/chat/chat.ts index efc8823..08fd44f 100644 --- a/apps/webapp/app/trigger/chat/chat.ts +++ b/apps/webapp/app/trigger/chat/chat.ts @@ -17,7 +17,7 @@ import { const chatQueue = queue({ name: "chat-queue", - concurrencyLimit: 10, + concurrencyLimit: 50, }); /** diff --git a/apps/webapp/app/trigger/temp.ts b/apps/webapp/app/trigger/temp.ts new file mode 100644 index 0000000..780467c --- /dev/null +++ b/apps/webapp/app/trigger/temp.ts @@ -0,0 +1,334 @@ +import { task, logger, queue } from "@trigger.dev/sdk"; +import { runQuery } from "~/lib/neo4j.server"; +import { getEmbedding } from "~/lib/model.server"; +import type { EntityNode } from "@core/types"; + +interface EntityUpdateResult { + uuid: string; + name: string; + type: string; + success: boolean; + error?: string; +} + +interface BatchResult { + batchId: string; + entities: number; + successful: number; + failed: number; + results: EntityUpdateResult[]; +} + +export const entity = queue({ + name: "entity-queue", + concurrencyLimit: 10, +}); + +/** + * Main orchestrator task that fans out batches of 100 entities + */ +export const updateAllEntityEmbeddings = task({ + id: "update-all-entity-embeddings", + machine: "large-1x", + + run: async (payload: { userId?: string; batchSize?: number } = {}) => { + const { userId, batchSize = 100 } = payload; + + logger.info("Starting entity embeddings update with fan-out approach", { + userId, + batchSize, + targetScope: userId ? `user ${userId}` : "all users", + }); + + try { + // Step 1: Fetch all entities + const entities = await getAllEntities(userId); + logger.info(`Found ${entities.length} entities to update`); + + if (entities.length === 0) { + return { + success: true, + totalEntities: 0, + totalBatches: 0, + updated: 0, + failed: 0, + batchResults: [], + }; + } + + // Step 2: Split entities into batches and fan out + const batches: EntityNode[][] = []; + for (let i = 0; i < entities.length; i += batchSize) { + batches.push(entities.slice(i, i + batchSize)); + } + + logger.info( + `Fanning out ${batches.length} batches of ~${batchSize} entities each`, + ); + + // Step 3: Fan out batch processing tasks in parallel + const batchPromises = batches.map((batch, index) => + updateEntityBatch.trigger({ + entities: batch, + batchId: `batch-${index + 1}`, + batchNumber: index + 1, + totalBatches: batches.length, + }), + ); + + // Wait for all batch tasks to complete + const batchRuns = await Promise.all(batchPromises); + + // Step 4: Collect results from all batches + const batchResults: BatchResult[] = []; + let totalUpdated = 0; + let totalFailed = 0; + + for (const run of batchRuns) { + try { + // Note: In a real implementation, you'd need to wait for the run to complete + // and fetch its result. This is a simplified version. + logger.info(`Batch run ${run.id} started successfully`); + } catch (error) { + logger.error(`Failed to start batch run:`, { error }); + } + } + + logger.info("All batches have been dispatched", { + totalBatches: batches.length, + totalEntities: entities.length, + batchRunIds: batchRuns.map((r) => r.id), + }); + + return { + success: true, + totalEntities: entities.length, + totalBatches: batches.length, + batchRunIds: batchRuns.map((r) => r.id), + message: + "All batches dispatched successfully. Check individual batch runs for detailed results.", + }; + } catch (error) { + logger.error( + "Fatal error during entity embeddings update orchestration:", + { error }, + ); + throw error; + } + }, +}); + +/** + * Worker task that processes a single batch of entities + */ +export const updateEntityBatch = task({ + id: "update-entity-batch", + queue: entity, + run: async (payload: { + entities: EntityNode[]; + batchId: string; + batchNumber: number; + totalBatches: number; + }) => { + const { entities, batchId, batchNumber, totalBatches } = payload; + + logger.info(`Processing ${batchId} (${batchNumber}/${totalBatches})`, { + entityCount: entities.length, + }); + + const results: EntityUpdateResult[] = []; + + try { + // Process all entities in this batch in parallel + const entityPromises = entities.map((entity) => + updateEntityEmbeddings(entity), + ); + const entityResults = await Promise.allSettled(entityPromises); + + // Collect results + entityResults.forEach((result, index) => { + const entity = entities[index]; + if (result.status === "fulfilled") { + results.push(result.value); + } else { + logger.error( + `Failed to update entity ${entity.uuid} in ${batchId}:`, + { error: result.reason }, + ); + results.push({ + uuid: entity.uuid, + name: entity.name, + type: entity.type, + success: false, + error: result.reason?.message || "Unknown error", + }); + } + }); + + const successful = results.filter((r) => r.success).length; + const failed = results.filter((r) => !r.success).length; + + logger.info(`Completed ${batchId}`, { + total: entities.length, + successful, + failed, + successRate: `${((successful / entities.length) * 100).toFixed(2)}%`, + }); + + return { + batchId, + batchNumber, + totalBatches, + entities: entities.length, + successful, + failed, + results, + }; + } catch (error) { + logger.error(`Fatal error in ${batchId}:`, { error }); + throw error; + } + }, +}); + +/** + * Fetch all entities from Neo4j database + */ +async function getAllEntities(userId?: string): Promise { + try { + const query = userId + ? `MATCH (entity:Entity {userId: $userId}) RETURN entity ORDER BY entity.createdAt` + : `MATCH (entity:Entity) RETURN entity ORDER BY entity.createdAt`; + + const params = userId ? { userId } : {}; + const records = await runQuery(query, params); + + return records.map((record) => { + const entityProps = record.get("entity").properties; + return { + uuid: entityProps.uuid, + name: entityProps.name, + type: entityProps.type, + attributes: JSON.parse(entityProps.attributes || "{}"), + nameEmbedding: entityProps.nameEmbedding || [], + typeEmbedding: entityProps.typeEmbedding || [], + createdAt: new Date(entityProps.createdAt), + userId: entityProps.userId, + space: entityProps.space, + }; + }); + } catch (error) { + logger.error("Error fetching entities:", { error }); + throw new Error(`Failed to fetch entities: ${error}`); + } +} + +/** + * Update embeddings for a single entity + */ +async function updateEntityEmbeddings( + entity: EntityNode, +): Promise { + try { + logger.info( + `Updating embeddings for entity: ${entity.name} (${entity.type})`, + ); + + // Generate new embeddings + const [nameEmbedding, typeEmbedding] = await Promise.all([ + getEmbedding(entity.name), + getEmbedding(entity.type), + ]); + + // Update entity in Neo4j + const updateQuery = ` + MATCH (entity:Entity {uuid: $uuid}) + SET + entity.nameEmbedding = $nameEmbedding, + entity.typeEmbedding = $typeEmbedding, + entity.updatedAt = $updatedAt + RETURN entity.uuid as uuid + `; + + const updateParams = { + uuid: entity.uuid, + nameEmbedding, + typeEmbedding, + updatedAt: new Date().toISOString(), + }; + + const result = await runQuery(updateQuery, updateParams); + + if (result.length === 0) { + throw new Error(`Entity ${entity.uuid} not found during update`); + } + + return { + uuid: entity.uuid, + name: entity.name, + type: entity.type, + success: true, + }; + } catch (error) { + return { + uuid: entity.uuid, + name: entity.name, + type: entity.type, + success: false, + error: error instanceof Error ? error.message : "Unknown error", // TODO: fix this + }; + } +} + +/** + * Helper function to trigger the entity embeddings update + */ +export async function triggerEntityEmbeddingsUpdate( + options: { + userId?: string; + batchSize?: number; + } = {}, +) { + try { + const result = await updateAllEntityEmbeddings.trigger(options); + logger.info(`Triggered entity embeddings update with run ID: ${result.id}`); + return result; + } catch (error) { + logger.error("Failed to trigger entity embeddings update:", { error }); + throw error; + } +} + +/** + * Update a single entity's embeddings (useful for individual updates) + */ +export async function updateSingleEntityEmbeddings( + entityUuid: string, +): Promise { + try { + const query = `MATCH (entity:Entity {uuid: $uuid}) RETURN entity`; + const records = await runQuery(query, { uuid: entityUuid }); + + if (records.length === 0) { + throw new Error(`Entity with UUID ${entityUuid} not found`); + } + + const entityProps = records[0].get("entity").properties; + const entity: EntityNode = { + uuid: entityProps.uuid, + name: entityProps.name, + type: entityProps.type, + attributes: JSON.parse(entityProps.attributes || "{}"), + nameEmbedding: entityProps.nameEmbedding || [], + typeEmbedding: entityProps.typeEmbedding || [], + createdAt: new Date(entityProps.createdAt), + userId: entityProps.userId, + space: entityProps.space, + }; + + return await updateEntityEmbeddings(entity); + } catch (error) { + logger.error(`Error updating single entity ${entityUuid}:`, { error }); + throw error; + } +} diff --git a/packages/core-cli/.gitignore b/packages/core-cli/.gitignore new file mode 100644 index 0000000..5384f3a --- /dev/null +++ b/packages/core-cli/.gitignore @@ -0,0 +1,2 @@ +.tshy/ +.tshy-build/ \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/.tshy/esm.tsbuildinfo b/packages/core-cli/.tshy-build/.tshy/esm.tsbuildinfo deleted file mode 100644 index b475410..0000000 --- a/packages/core-cli/.tshy-build/.tshy/esm.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"fileNames":["../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../src/index.ts","../../../../node_modules/.pnpm/commander@9.5.0/node_modules/commander/typings/index.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/typealiases.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/util.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/zoderror.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/locales/en.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/errors.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/parseutil.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/enumutil.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/errorutil.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/partialutil.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/types.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/external.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.d.ts","../../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/index.d.ts","../../../../node_modules/.pnpm/zod-validation-error@1.5.0_zod@3.23.8/node_modules/zod-validation-error/dist/types/validationerror.d.ts","../../../../node_modules/.pnpm/zod-validation-error@1.5.0_zod@3.23.8/node_modules/zod-validation-error/dist/types/index.d.ts","../../../../node_modules/.pnpm/chalk@5.4.1/node_modules/chalk/source/vendor/ansi-styles/index.d.ts","../../../../node_modules/.pnpm/chalk@5.4.1/node_modules/chalk/source/vendor/supports-color/index.d.ts","../../../../node_modules/.pnpm/chalk@5.4.1/node_modules/chalk/source/index.d.ts","../../../../node_modules/.pnpm/cli-table3@0.6.5/node_modules/cli-table3/index.d.ts","../../../../node_modules/.pnpm/esbuild@0.23.1/node_modules/esbuild/lib/main.d.ts","../../../../node_modules/.pnpm/std-env@3.9.0/node_modules/std-env/dist/index.d.ts","../../src/utils/logger.ts","../../../../node_modules/.pnpm/@clack+core@0.4.2/node_modules/@clack/core/dist/index.d.ts","../../../../node_modules/.pnpm/@clack+prompts@0.10.1/node_modules/@clack/prompts/dist/index.d.ts","../../../../node_modules/.pnpm/ansi-escapes@7.0.0/node_modules/ansi-escapes/base.d.ts","../../../../node_modules/.pnpm/ansi-escapes@7.0.0/node_modules/ansi-escapes/index.d.ts","../../../../node_modules/.pnpm/supports-color@10.0.0/node_modules/supports-color/index.d.ts","../../../../node_modules/.pnpm/has-flag@5.0.1/node_modules/has-flag/index.d.ts","../../src/utils/supportshyperlinks.ts","../../src/utils/terminallink.ts","../../src/utils/clioutput.ts","../../src/cli/common.ts","../../src/cli/index.ts","../../src/commands/init.ts","../../../../node_modules/.pnpm/@types+tinycolor2@1.4.6/node_modules/@types/tinycolor2/index.d.ts","../../../../node_modules/.pnpm/@types+gradient-string@1.1.6/node_modules/@types/gradient-string/index.d.ts","../../../../node_modules/.pnpm/@types+ini@4.1.1/node_modules/@types/ini/index.d.ts","../../../../node_modules/.pnpm/@types+object-hash@3.0.6/node_modules/@types/object-hash/index.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@20.19.7/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.16.0/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/@types+mime@1.3.5/node_modules/@types/mime/index.d.ts","../../../../node_modules/.pnpm/@types+send@0.17.5/node_modules/@types/send/index.d.ts","../../../../node_modules/.pnpm/@types+qs@6.14.0/node_modules/@types/qs/index.d.ts","../../../../node_modules/.pnpm/@types+range-parser@1.2.7/node_modules/@types/range-parser/index.d.ts","../../../../node_modules/.pnpm/@types+express-serve-static-core@4.19.6/node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/.pnpm/@types+http-errors@2.0.5/node_modules/@types/http-errors/index.d.ts","../../../../node_modules/.pnpm/@types+serve-static@1.15.8/node_modules/@types/serve-static/index.d.ts","../../../../node_modules/.pnpm/@types+connect@3.4.38/node_modules/@types/connect/index.d.ts","../../../../node_modules/.pnpm/@types+body-parser@1.19.6/node_modules/@types/body-parser/index.d.ts","../../../../node_modules/.pnpm/@types+express@4.17.23/node_modules/@types/express/index.d.ts","../../../../node_modules/.pnpm/@types+trouter@3.1.4/node_modules/@types/trouter/index.d.ts","../../../../node_modules/.pnpm/@types+polka@0.5.7/node_modules/@types/polka/index.d.ts","../../../../node_modules/.pnpm/@types+react@18.2.69/node_modules/@types/react/global.d.ts","../../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../../node_modules/.pnpm/@types+prop-types@15.7.15/node_modules/@types/prop-types/index.d.ts","../../../../node_modules/.pnpm/@types+react@18.2.69/node_modules/@types/react/index.d.ts","../../../../node_modules/.pnpm/@types+resolve@1.20.6/node_modules/@types/resolve/index.d.ts","../../../../node_modules/.pnpm/minipass@7.1.2/node_modules/minipass/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/lru-cache@10.4.3/node_modules/lru-cache/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/path-scurry@1.11.1/node_modules/path-scurry/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/minimatch@9.0.5/node_modules/minimatch/dist/commonjs/ast.d.ts","../../../../node_modules/.pnpm/minimatch@9.0.5/node_modules/minimatch/dist/commonjs/escape.d.ts","../../../../node_modules/.pnpm/minimatch@9.0.5/node_modules/minimatch/dist/commonjs/unescape.d.ts","../../../../node_modules/.pnpm/minimatch@9.0.5/node_modules/minimatch/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/pattern.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/processor.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/walker.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/ignore.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/glob.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/has-magic.d.ts","../../../../node_modules/.pnpm/glob@10.4.5/node_modules/glob/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/rimraf@5.0.10/node_modules/rimraf/dist/commonjs/opt-arg.d.ts","../../../../node_modules/.pnpm/rimraf@5.0.10/node_modules/rimraf/dist/commonjs/index.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index.d.ts","../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.d.ts","../../../../node_modules/.pnpm/@types+source-map-support@0.5.10/node_modules/@types/source-map-support/index.d.ts","../../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.ts","../../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../../node_modules/.pnpm/@types+eslint@9.6.1/node_modules/@types/eslint/use-at-your-own-risk.d.ts","../../../../node_modules/.pnpm/@types+eslint@9.6.1/node_modules/@types/eslint/index.d.ts","../../../../node_modules/.pnpm/@types+eslint-scope@3.7.7/node_modules/@types/eslint-scope/index.d.ts"],"fileIdsList":[[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[85,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,267],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,336,339],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,336,337,338],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,339],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,261,262,263],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,262,264,266,268],[97,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[101,102,103,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[104,105,106,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,199,200,201,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,264,269,270],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,272,273,274],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,293,332],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,293,317,332],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,332],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,293],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,293,318,332],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,318,332],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,260],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,261,265],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,333],[87,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[78,79,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,277,279,283,284,287],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,288],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,279,283,286],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,277,279,283,286,287,288,289],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,283],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,279,283,284,286],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,277,279,284,285,287],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,280,281,282],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,277,278],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,291],[106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,290],[106,116,120,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,111,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,113,116,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,111,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,108,109,112,115,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,123,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,108,114,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,137,138,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,112,116,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,137,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,110,111,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,138,139,140,141,142,143,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,131,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,123,124,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,114,116,124,125,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,115,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,108,111,116,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,116,120,124,125,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,120,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,114,116,119,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,108,113,116,123,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[106,111,116,137,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[76,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[75,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[74,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[65,66,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[63,64,65,67,68,72,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[64,65,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[73,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[65,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[63,64,65,68,69,70,71,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[63,64,74,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[62,75,77,84,86,93,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[62,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[80,83,86,92,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[80,81,82,83,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[89,90,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258],[88,91,106,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"a8965f60e34fd3657c757b7e630309b0af56340922ea5c00e269fe5620e102a8","impliedFormat":1},{"version":"5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","impliedFormat":1},{"version":"c2869c4f2f79fd2d03278a68ce7c061a5a8f4aed59efb655e25fe502e3e471d5","impliedFormat":1},{"version":"b8fe42dbf4b0efba2eb4dbfb2b95a3712676717ff8469767dc439e75d0c1a3b6","impliedFormat":1},{"version":"8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","impliedFormat":1},{"version":"ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","impliedFormat":1},{"version":"83306c97a4643d78420f082547ea0d488a0d134c922c8e65fc0b4f08ef66d92b","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","impliedFormat":1},{"version":"c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","impliedFormat":1},{"version":"dccd26a5c85325a011aff40f401e0892bd0688d44132ba79e803c67e68fffea5","impliedFormat":1},{"version":"f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","impliedFormat":1},{"version":"b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","impliedFormat":1},{"version":"5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","impliedFormat":1},{"version":"5f1b7ae9dae3bc04a2b44fd10721d58a9a4aee0633d99f8b3ac351702f47efbb","impliedFormat":1},{"version":"d4c55922007526e6c361c46722351f51dccb6d767496aab702e14eb6ca2bfdab","impliedFormat":1},{"version":"acfed6cc001e7f7f26d2ba42222a180ba669bb966d4dd9cb4ad5596516061b13","impliedFormat":99},{"version":"f61a4dc92450609c353738f0a2daebf8cae71b24716dbd952456d80b1e1a48b6","impliedFormat":99},{"version":"f3f76db6e76bc76d13cc4bfa10e1f74390b8ebe279535f62243e8d8acd919314","impliedFormat":99},{"version":"a1fc8b27b9375f1edc7ace1193f7a838ac1bc7cba03cc595a2d6d5196b7005d8","impliedFormat":1},{"version":"4536edc937015c38172e7ff9d022a16110d2c1890529132c20a7c4f6005ee2c6","affectsGlobalScope":true,"impliedFormat":1},{"version":"6430b35140abea5682c403d0251cd7244d69da5969f95256b327c5ad8306a937","impliedFormat":1},{"version":"f4f33ddf22e287b4fb267e9284c0c9fd8a6f22bdc2c4283a2ca693f0f6d932d9","signature":"54ba9c862743d1a5ecf54cd08d5930f7ec6f42b115e7a8d31965a6f2b43f0646","impliedFormat":99},{"version":"cc57d5fb75dee636d2f439bdf4ae5bdcb9240879889e494ba4c89d288940cde9","impliedFormat":99},{"version":"7ed69f71f756335aeb4c45331de7df117eb95321b0181857f9b72f468d6bad57","impliedFormat":99},{"version":"bf729f952893415564c15f1eba8ad17191f8c5c2f712b8ad23b0fccc9891d90d","impliedFormat":99},{"version":"d1cc9289766f3874cb06fbc04c8292262e608db3b2ea3d78d8b797bf5965446a","impliedFormat":99},{"version":"f61a4dc92450609c353738f0a2daebf8cae71b24716dbd952456d80b1e1a48b6","impliedFormat":99},{"version":"d22b373fb578c2a89d8a69ecd41009db04c2ab0a7750794c77e872657e5997c5","impliedFormat":99},{"version":"20391f5eea95f3f9caa3b4d34965fe2e1e9908cb1787439ec254a7d8b46bab2f","signature":"c05581cebc8e7d3c07e05020ef815c07f28d681ea2063142d58b5ecfd3b182f4","impliedFormat":99},{"version":"e951bb12852c279e8800b6114a164545b2c990876c82203f6f75702bf1138964","signature":"162aa9f5835e70c7d1e6708f99cd88e16e3a933f3390b28b42c39b25c9c6dc52","impliedFormat":99},{"version":"8303028813c9c232dfa2cbc1cf45bf556b3188c734554cb2f7d08a67749e46d0","signature":"126d97fff5e734b645d20f18be856d3a3fde417c1b66e7a0a511ed000de66e9b","impliedFormat":99},{"version":"0864b724daf5dc78264eb2f5dfa5a99f43ce12ca4279c6e2d5646c1652851535","signature":"85f80cc066ca4873e043d32a2ebe83a3c5738c5fd5df9ec2a1895ff5b380c632","impliedFormat":99},{"version":"011e336a1d52dd1d9c0e9df6939734aae5aec93ef81712ff45b421e976923acc","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"10281654231a4dfa1a41af0415afbd6d0998417959aed30c9f0054644ce10f5c","impliedFormat":1},{"version":"3cea6d2792beb084e290d4a40efa45374e8435ebed72ea3f216f94dd96393173","impliedFormat":1},{"version":"b8cc9a40e2e90937dcf15804eb1df783e0841ab73c2d1c7c6be00189a38454bf","impliedFormat":1},{"version":"355fed2467fbcdb0e4004a9fcdf0201d6d15ad68bc90160a12b56e9fcf945d11","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"49a5a44f2e68241a1d2bd9ec894535797998841c09729e506a7cbfcaa40f2180","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"1ca84b44ad1d8e4576f24904d8b95dd23b94ea67e1575f89614ac90062fc67f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d586db0a09a9495ebb5dece28f54df9684bfbd6e1f568426ca153126dac4a40","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"567b7f607f400873151d7bc63a049514b53c3c00f5f56e9e95695d93b66a138e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"84c1930e33d1bb12ad01bcbe11d656f9646bd21b2fb2afd96e8e10615a021aef","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4b87f767c7bc841511113c876a6b8bf1fd0cb0b718c888ad84478b372ec486b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"2bf469abae4cc9c0f340d4e05d9d26e37f936f9c8ca8f007a6534f109dcc77e4","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4c21aaa8257d7950a5b75a251d9075b6a371208fc948c9c8402f6690ef3b5b55","impliedFormat":1},{"version":"b5895e6353a5d708f55d8685c38a235c3a6d8138e374dee8ceb8ffde5aa8002a","impliedFormat":1},{"version":"4ec3c48b7d89091aafb4e0452e4c971f34cf1615b490b5201044f31ac07f4b16","impliedFormat":1},{"version":"de735eca2c51dd8b860254e9fdb6d9ec19fe402dfe597c23090841ce3937cfc5","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"5155da3047ef977944d791a2188ff6e6c225f6975cc1910ab7bb6838ab84cede","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"e16d218a30f6a6810b57f7e968124eaa08c7bb366133ea34bbf01e7cd6b8c0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb8692dea24c27821f77e397272d9ed2eda0b95e4a75beb0fdda31081d15a8ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"5b6844ad931dcc1d3aca53268f4bd671428421464b1286746027aede398094f2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"0dbcebe2126d03936c70545e96a6e41007cf065be38a1ce4d32a39fcedefead4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"461e54289e6287e8494a0178ba18182acce51a02bca8dea219149bf2cf96f105","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"e31e51c55800014d926e3f74208af49cb7352803619855c89296074d1ecbb524","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"dfb96ba5177b68003deec9e773c47257da5c4c8a74053d8956389d832df72002","affectsGlobalScope":true,"impliedFormat":1},{"version":"92d3070580cf72b4bb80959b7f16ede9a3f39e6f4ef2ac87cfa4561844fdc69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"613deebaec53731ff6b74fe1a89f094b708033db6396b601df3e6d5ab0ec0a47","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"e56eb632f0281c9f8210eb8c86cc4839a427a4ffffcfd2a5e40b956050b3e042","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"a12d953aa755b14ac1d28ecdc1e184f3285b01d6d1e58abc11bf1826bc9d80e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"a315339daaabee89caf07273255eb96db1e21acf6522a47186a998ff3f93ec17","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"0a6b3ad6e19dd0fe347a54cbfd8c8bd5091951a2f97b2f17e0af011bfde05482","impliedFormat":1},{"version":"0a37a4672f163d7fe46a414923d0ef1b0526dcd2d2d3d01c65afe6da03bf2495","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"25d130083f833251b5b4c2794890831b1b8ce2ead24089f724181576cf9d7279","impliedFormat":1},{"version":"ffe66ee5c9c47017aca2136e95d51235c10e6790753215608bff1e712ff54ec6","impliedFormat":1},{"version":"2b0439104c87ea2041f0f41d7ed44447fe87b5bd4d31535233176fa19882e800","impliedFormat":1},{"version":"017caf5d2a8ef581cf94f678af6ce7415e06956317946315560f1487b9a56167","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"d83f86427b468176fbacb28ef302f152ad3d2d127664c627216e45cfa06fbf7e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a2f3aa60aece790303a62220456ff845a1b980899bdc2e81646b8e33d9d9cc15","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"0be405730b99eee7dbb051d74f6c3c0f1f8661d86184a7122b82c2bfb0991922","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"12aad38de6f0594dc21efa78a2c1f67bf6a7ef5a389e05417fe9945284450908","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"edbb3546af6a57fa655860fef11f4109390f4a2f1eab4a93f548ccc21d604a56","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c45985c94b8b342110506d89ac2c145e1eaaac62fa4baae471c603ef3dda90","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f7e00beefa952297cde4638b2124d2d9a1eed401960db18edcadaa8500c78eb","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"a4568ec1888b5306bbde6d9ede5c4a81134635fa8aad7eaad15752760eb9783f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"a45c25e77c911c1f2a04cade78f6f42b4d7d896a3882d4e226efd3a3fcd5f2c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0e13570a7e86c6d83dd92e81758a930f63747483e2cd34ef36fcdb47d1f9726a","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","impliedFormat":1},{"version":"6d0908827e76226b58863b581e47b35c53e352f52ee33591270905a0fa9317f4","impliedFormat":1},{"version":"5a18afdc2d3a9bf47a847ae50feb2647a7c591d0045f8b2d6913495cfa3cf463","impliedFormat":1},{"version":"55461596dc873b866911ef4e640fae4c39da7ac1fbc7ef5e649cb2f2fb42c349","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"28ef2ffe7016f83fc34c4579b745292b1070b76a9d0027299e9ea14aab397644","affectsGlobalScope":true,"impliedFormat":1},{"version":"5aca5a3bc07d2e16b6824a76c30378d6fb1b92e915d854315e1d1bd2d00974c9","impliedFormat":1},{"version":"041597c12abeaa2ef07766775955fc87cfc65c43e0fe86c836071bea787e967c","impliedFormat":1},{"version":"0838507efff4f479c6f603ec812810ddfe14ab32abf8f4a8def140be970fe439","impliedFormat":1},{"version":"f67c92f5cb2bf5a9929ee73216f08749db4f22b04a18e5205ed6e75ca48e9feb","impliedFormat":1},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":1},{"version":"de0199a112f75809a7f80ec071495159dcf3e434bc021347e0175627398264c3","impliedFormat":1},{"version":"1a2bed55cfa62b4649485df27c0e560b04d4da4911e3a9f0475468721495563f","impliedFormat":1},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":1},{"version":"dd9faff42b456b5f03b85d8fbd64838eb92f6f7b03b36322cbc59c005b7033d3","impliedFormat":1},{"version":"6ff702721d87c0ba8e7f8950e7b0a3b009dfd912fab3997e0b63fab8d83919c3","impliedFormat":1},{"version":"9dce9fc12e9a79d1135699d525aa6b44b71a45e32e3fa0cf331060b980b16317","impliedFormat":1},{"version":"586b2fd8a7d582329658aaceec22f8a5399e05013deb49bcfde28f95f093c8ee","impliedFormat":1},{"version":"dedc0ab5f7babe4aef870618cd2d4bc43dc67d1584ee43b68fc6e05554ef8f34","impliedFormat":1},{"version":"ef1f3eadd7bed282de45bafd7c2c00105cf1db93e22f6cd763bec8a9c2cf6df1","impliedFormat":1},{"version":"3d8885d13f76ff35b7860039e83c936ff37553849707c2fd1d580d193a52be5b","impliedFormat":1},{"version":"b75188f1d06bba9e266aad819df75b51ed1fcc19ac0750dc6a55a8eb1b7c2134","impliedFormat":1},{"version":"d8272401aa994ed8a60f71067acbcc9a73d847be6badf1b9397a8ce965af6318","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"f5858a3e4621139b8a375fb79a482c633d5f31d744f3674e3d51a4ae291c8f2b","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1}],"root":[61,84,[91,96]],"options":{"alwaysStrict":true,"composite":true,"downlevelIteration":true,"emitDecoratorMetadata":false,"esModuleInterop":true,"experimentalDecorators":false,"isolatedDeclarations":false,"jsx":2,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"../esm","removeComments":false,"rootDir":"../../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictPropertyInitialization":true,"target":9,"verbatimModuleSyntax":false},"referencedMap":[[85,1],[86,2],[268,3],[267,4],[340,5],[339,6],[338,7],[336,1],[264,8],[269,9],[98,10],[265,1],[99,1],[337,1],[260,1],[146,1],[147,11],[148,1],[106,12],[149,1],[150,1],[151,1],[101,1],[104,13],[102,1],[103,1],[152,1],[153,1],[154,1],[155,1],[156,1],[157,1],[158,1],[160,1],[159,1],[161,1],[162,1],[163,1],[145,14],[105,1],[164,1],[165,1],[166,1],[198,15],[167,1],[168,1],[169,1],[170,1],[171,1],[172,1],[173,1],[174,1],[175,1],[176,1],[177,1],[178,1],[179,16],[180,1],[182,1],[181,1],[183,1],[184,1],[185,1],[186,1],[187,1],[188,1],[189,1],[190,1],[191,1],[192,1],[193,1],[194,1],[195,1],[196,1],[197,1],[206,1],[207,17],[208,1],[204,18],[209,1],[210,1],[211,1],[199,1],[202,19],[200,1],[201,1],[212,1],[213,1],[214,1],[215,1],[216,1],[217,1],[218,1],[220,1],[219,1],[221,1],[222,1],[223,1],[205,14],[203,1],[224,14],[225,1],[226,1],[259,20],[227,1],[228,1],[229,1],[230,1],[231,1],[232,1],[233,21],[234,1],[235,1],[236,1],[237,1],[238,1],[239,22],[240,1],[241,1],[243,1],[242,1],[244,1],[245,1],[246,1],[247,1],[248,1],[249,1],[250,1],[251,1],[252,1],[253,1],[254,1],[255,1],[256,1],[257,1],[258,1],[100,1],[271,23],[274,1],[262,1],[263,1],[272,1],[275,24],[276,1],[317,25],[318,26],[293,27],[296,27],[315,25],[316,25],[306,25],[305,28],[303,25],[298,25],[311,25],[309,25],[313,25],[297,25],[310,25],[314,25],[299,25],[300,25],[312,25],[294,25],[301,25],[302,25],[304,25],[308,25],[319,29],[307,25],[295,25],[332,30],[331,1],[326,29],[328,31],[327,29],[320,29],[321,29],[323,29],[325,29],[329,31],[330,31],[322,31],[324,31],[261,32],[266,33],[334,34],[97,1],[270,1],[335,4],[87,1],[88,35],[107,1],[80,36],[78,1],[79,1],[81,1],[62,1],[273,1],[82,1],[288,37],[289,38],[287,39],[290,40],[284,41],[285,42],[286,43],[90,1],[278,1],[280,41],[281,41],[283,44],[282,41],[277,4],[279,45],[292,46],[291,47],[333,1],[83,1],[89,1],[59,1],[60,1],[12,1],[10,1],[11,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[23,1],[24,1],[4,1],[25,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[58,1],[57,1],[1,1],[123,48],[133,49],[122,48],[143,50],[114,51],[113,1],[142,4],[136,52],[141,51],[116,53],[130,54],[115,55],[139,56],[111,57],[110,4],[140,58],[112,59],[117,49],[118,1],[121,49],[108,1],[144,60],[134,61],[125,62],[126,63],[128,64],[124,65],[127,66],[137,4],[119,67],[120,68],[129,69],[109,1],[132,61],[131,49],[135,1],[138,70],[77,71],[76,72],[75,73],[67,74],[73,75],[69,1],[70,1],[68,76],[71,73],[63,1],[64,1],[74,77],[66,78],[72,79],[65,80],[94,81],[95,82],[96,1],[61,1],[93,83],[84,84],[91,85],[92,86]],"latestChangedDtsFile":"../esm/commands/init.d.ts","version":"5.8.3"} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/cli/common.d.ts b/packages/core-cli/.tshy-build/esm/cli/common.d.ts deleted file mode 100644 index 2989c73..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/common.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Command } from "commander"; -import { z } from "zod"; -export declare const CommonCommandOptions: z.ZodObject<{ - logLevel: z.ZodDefault>; -}, "strip", z.ZodTypeAny, { - logLevel: "error" | "none" | "warn" | "info" | "log" | "debug"; -}, { - logLevel?: "error" | "none" | "warn" | "info" | "log" | "debug" | undefined; -}>; -export type CommonCommandOptions = z.infer; -export declare function commonOptions(command: Command): Command; -export declare class SkipLoggingError extends Error { -} -export declare class SkipCommandError extends Error { -} -export declare class OutroCommandError extends SkipCommandError { -} -export declare function wrapCommandAction(name: string, schema: T, options: unknown, action: (opts: z.output) => Promise): Promise; -export declare function installExitHandler(): void; diff --git a/packages/core-cli/.tshy-build/esm/cli/common.js b/packages/core-cli/.tshy-build/esm/cli/common.js deleted file mode 100644 index f52d1a0..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/common.js +++ /dev/null @@ -1,54 +0,0 @@ -import { z } from "zod"; -import { fromZodError } from "zod-validation-error"; -import { logger } from "../utils/logger.js"; -import { outro } from "@clack/prompts"; -import { chalkError } from "../utils/cliOutput.js"; -export const CommonCommandOptions = z.object({ - logLevel: z.enum(["debug", "info", "log", "warn", "error", "none"]).default("log"), -}); -export function commonOptions(command) { - return command.option("-l, --log-level ", "The CLI log level to use (debug, info, log, warn, error, none).", "log"); -} -export class SkipLoggingError extends Error { -} -export class SkipCommandError extends Error { -} -export class OutroCommandError extends SkipCommandError { -} -export async function wrapCommandAction(name, schema, options, action) { - try { - const parsedOptions = schema.safeParse(options); - if (!parsedOptions.success) { - throw new Error(fromZodError(parsedOptions.error).toString()); - } - logger.loggerLevel = parsedOptions.data.logLevel; - logger.debug(`Running "${name}" with the following options`, { - options: options, - }); - const result = await action(parsedOptions.data); - return result; - } - catch (e) { - if (e instanceof SkipLoggingError) { - } - else if (e instanceof OutroCommandError) { - outro("Operation cancelled"); - } - else if (e instanceof SkipCommandError) { - // do nothing - } - else { - logger.log(`${chalkError("X Error:")} ${e instanceof Error ? e.message : String(e)}`); - } - throw e; - } -} -export function installExitHandler() { - process.on("SIGINT", () => { - process.exit(0); - }); - process.on("SIGTERM", () => { - process.exit(0); - }); -} -//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/cli/common.js.map b/packages/core-cli/.tshy-build/esm/cli/common.js.map deleted file mode 100644 index 44bd0fe..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/cli/common.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACnF,CAAC,CAAC;AAIH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,MAAM,CACnB,yBAAyB,EACzB,iEAAiE,EACjE,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;CAAG;AAC9C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;CAAG;AAC9C,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;CAAG;AAE1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,MAAS,EACT,OAAgB,EAChB,MAA+C;IAE/C,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEjD,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,8BAA8B,EAAE;YAC3D,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;QACpC,CAAC;aAAM,IAAI,CAAC,YAAY,iBAAiB,EAAE,CAAC;YAC1C,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;YACzC,aAAa;QACf,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/cli/index.d.ts b/packages/core-cli/.tshy-build/esm/cli/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/core-cli/.tshy-build/esm/cli/index.js b/packages/core-cli/.tshy-build/esm/cli/index.js deleted file mode 100644 index f8a711a..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/cli/index.js.map b/packages/core-cli/.tshy-build/esm/cli/index.js.map deleted file mode 100644 index a024e06..0000000 --- a/packages/core-cli/.tshy-build/esm/cli/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/commands/init.d.ts b/packages/core-cli/.tshy-build/esm/commands/init.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/packages/core-cli/.tshy-build/esm/commands/init.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/core-cli/.tshy-build/esm/commands/init.js b/packages/core-cli/.tshy-build/esm/commands/init.js deleted file mode 100644 index 2b7ca48..0000000 --- a/packages/core-cli/.tshy-build/esm/commands/init.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=init.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/commands/init.js.map b/packages/core-cli/.tshy-build/esm/commands/init.js.map deleted file mode 100644 index 90114f3..0000000 --- a/packages/core-cli/.tshy-build/esm/commands/init.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/index.d.ts b/packages/core-cli/.tshy-build/esm/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/packages/core-cli/.tshy-build/esm/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/core-cli/.tshy-build/esm/index.js b/packages/core-cli/.tshy-build/esm/index.js deleted file mode 100755 index f8a711a..0000000 --- a/packages/core-cli/.tshy-build/esm/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export {}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/index.js.map b/packages/core-cli/.tshy-build/esm/index.js.map deleted file mode 100644 index 2721744..0000000 --- a/packages/core-cli/.tshy-build/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/cliOutput.d.ts b/packages/core-cli/.tshy-build/esm/utils/cliOutput.d.ts deleted file mode 100644 index 07b81b6..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/cliOutput.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { TerminalLinkOptions } from "./terminalLink.js"; -export declare const isInteractive: boolean; -export declare const isLinksSupported: boolean; -export declare const green = "#4FFF54"; -export declare const purple = "#735BF3"; -export declare function chalkGreen(text: string): string; -export declare function chalkPurple(text: string): string; -export declare function chalkGrey(text: string): string; -export declare function chalkError(text: string): string; -export declare function chalkWarning(text: string): string; -export declare function chalkSuccess(text: string): string; -export declare function chalkLink(text: string): string; -export declare function chalkWorker(text: string): string; -export declare function chalkTask(text: string): string; -export declare function chalkRun(text: string): string; -export declare function logo(): string; -export declare function prettyPrintDate(date?: Date): string; -export declare function prettyError(header: string, body?: string, footer?: string): void; -export declare function prettyWarning(header: string, body?: string, footer?: string): void; -export declare function aiHelpLink({ dashboardUrl, project, query, }: { - dashboardUrl: string; - project: string; - query: string; -}): void; -export declare function cliLink(text: string, url: string, options?: TerminalLinkOptions): string; diff --git a/packages/core-cli/.tshy-build/esm/utils/cliOutput.js b/packages/core-cli/.tshy-build/esm/utils/cliOutput.js deleted file mode 100644 index 37e14f6..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/cliOutput.js +++ /dev/null @@ -1,97 +0,0 @@ -import { log } from "@clack/prompts"; -import chalk from "chalk"; -import { terminalLink } from "./terminalLink.js"; -import { hasTTY } from "std-env"; -export const isInteractive = hasTTY; -export const isLinksSupported = terminalLink.isSupported; -export const green = "#4FFF54"; -export const purple = "#735BF3"; -export function chalkGreen(text) { - return chalk.hex(green)(text); -} -export function chalkPurple(text) { - return chalk.hex(purple)(text); -} -export function chalkGrey(text) { - return chalk.hex("#878C99")(text); -} -export function chalkError(text) { - return chalk.hex("#E11D48")(text); -} -export function chalkWarning(text) { - return chalk.yellow(text); -} -export function chalkSuccess(text) { - return chalk.hex("#28BF5C")(text); -} -export function chalkLink(text) { - return chalk.underline.hex("#D7D9DD")(text); -} -export function chalkWorker(text) { - return chalk.hex("#FFFF89")(text); -} -export function chalkTask(text) { - return chalk.hex("#60A5FA")(text); -} -export function chalkRun(text) { - return chalk.hex("#A78BFA")(text); -} -export function logo() { - return `${chalk.hex(green).bold("Trigger")}${chalk.hex(purple).bold(".dev")}`; -} -// Mar 27 09:17:25.653 -export function prettyPrintDate(date = new Date()) { - let formattedDate = new Intl.DateTimeFormat("en-US", { - month: "short", - day: "2-digit", - hour: "2-digit", - minute: "2-digit", - second: "2-digit", - hour12: false, - }).format(date); - // Append milliseconds - formattedDate += "." + ("00" + date.getMilliseconds()).slice(-3); - return formattedDate; -} -export function prettyError(header, body, footer) { - const prefix = "Error: "; - const indent = Array(prefix.length).fill(" ").join(""); - const spacing = "\n\n"; - const prettyPrefix = chalkError(prefix); - const withIndents = (text) => text - ?.split("\n") - .map((line) => `${indent}${line}`) - .join("\n"); - const prettyBody = withIndents(body?.trim()); - const prettyFooter = withIndents(footer); - log.error(`${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : ""}${prettyFooter ? `${spacing}${prettyFooter}` : ""}`); -} -export function prettyWarning(header, body, footer) { - const prefix = "Warning: "; - const indent = Array(prefix.length).fill(" ").join(""); - const spacing = "\n\n"; - const prettyPrefix = chalkWarning(prefix); - const withIndents = (text) => text - ?.split("\n") - .map((line) => `${indent}${line}`) - .join("\n"); - const prettyBody = withIndents(body); - const prettyFooter = withIndents(footer); - log.warn(`${prettyPrefix}${header}${prettyBody ? `${spacing}${prettyBody}` : ""}${prettyFooter ? `${spacing}${prettyFooter}` : ""}`); -} -export function aiHelpLink({ dashboardUrl, project, query, }) { - const searchParams = new URLSearchParams(); - //the max length for a URL is 1950 characters - const clippedQuery = query.slice(0, 1950); - searchParams.set("q", clippedQuery); - const url = new URL(`/projects/${project}/ai-help`, dashboardUrl); - url.search = searchParams.toString(); - log.message(chalkLink(cliLink("šŸ’” Get a fix for this error using AI", url.toString()))); -} -export function cliLink(text, url, options) { - return terminalLink(text, url, { - fallback: (text, url) => `${text} ${url}`, - ...options, - }); -} -//# sourceMappingURL=cliOutput.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/cliOutput.js.map b/packages/core-cli/.tshy-build/esm/utils/cliOutput.js.map deleted file mode 100644 index 65388f2..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/cliOutput.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cliOutput.js","sourceRoot":"","sources":["../../../src/utils/cliOutput.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/logger.d.ts b/packages/core-cli/.tshy-build/esm/utils/logger.d.ts deleted file mode 100644 index 4d04c81..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/logger.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Message } from "esbuild"; -export declare const LOGGER_LEVELS: { - readonly none: -1; - readonly error: 0; - readonly warn: 1; - readonly info: 2; - readonly log: 3; - readonly debug: 4; -}; -export type LoggerLevel = keyof typeof LOGGER_LEVELS; -export type TableRow = Record; -export declare class Logger { - constructor(); - loggerLevel: "error" | "none" | "warn" | "info" | "log" | "debug"; - columns: number; - debug: (...args: unknown[]) => void; - ignore: (...args: unknown[]) => void; - debugWithSanitization: (label: string, ...args: unknown[]) => void; - info: (...args: unknown[]) => void; - log: (...args: unknown[]) => void; - /** @deprecated **ONLY USE THIS IN THE CLI** - It will hang the process when used in deployed code (!) */ - warn: (...args: unknown[]) => void; - /** @deprecated **ONLY USE THIS IN THE CLI** - It will hang the process when used in deployed code (!) */ - error: (...args: unknown[]) => void; - table(data: TableRow[], level?: Exclude): void; - private doLog; - private formatMessage; -} -/** - * A drop-in replacement for `console` for outputting logging messages. - * - * Errors and Warnings will get additional formatting to highlight them to the user. - * You can also set a `logger.loggerLevel` value to one of "debug", "log", "warn" or "error", - * to filter out logging messages. - */ -export declare const logger: Logger; -export declare function logBuildWarnings(warnings: Message[]): void; -/** - * Logs all errors/warnings associated with an esbuild BuildFailure in the same - * style esbuild would. - */ -export declare function logBuildFailure(errors: Message[], warnings: Message[]): void; diff --git a/packages/core-cli/.tshy-build/esm/utils/logger.js b/packages/core-cli/.tshy-build/esm/utils/logger.js deleted file mode 100644 index 3fc479f..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/logger.js +++ /dev/null @@ -1,111 +0,0 @@ -// This is a copy of the logger utility from the wrangler repo: https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/logger.ts -import { format } from "node:util"; -import chalk from "chalk"; -import CLITable from "cli-table3"; -import { formatMessagesSync } from "esbuild"; -import { env } from "std-env"; -export const LOGGER_LEVELS = { - none: -1, - error: 0, - warn: 1, - info: 2, - log: 3, - debug: 4, -}; -/** A map from LOGGER_LEVEL to the error `kind` needed by `formatMessagesSync()`. */ -const LOGGER_LEVEL_FORMAT_TYPE_MAP = { - error: "error", - warn: "warning", - info: undefined, - log: undefined, - debug: undefined, -}; -function getLoggerLevel() { - const fromEnv = env.TRIGGER_LOG_LEVEL?.toLowerCase(); - if (fromEnv !== undefined) { - if (fromEnv in LOGGER_LEVELS) - return fromEnv; - const expected = Object.keys(LOGGER_LEVELS) - .map((level) => `"${level}"`) - .join(" | "); - console.warn(`Unrecognised TRIGGER_LOG_LEVEL value ${JSON.stringify(fromEnv)}, expected ${expected}, defaulting to "log"...`); - } - return "log"; -} -export class Logger { - constructor() { } - loggerLevel = getLoggerLevel(); - columns = process.stdout.columns; - debug = (...args) => this.doLog("debug", args); - ignore = (...args) => { }; - debugWithSanitization = (label, ...args) => { - this.doLog("debug", [label, ...args]); - }; - info = (...args) => this.doLog("info", args); - log = (...args) => this.doLog("log", args); - /** @deprecated **ONLY USE THIS IN THE CLI** - It will hang the process when used in deployed code (!) */ - warn = (...args) => this.doLog("warn", args); - /** @deprecated **ONLY USE THIS IN THE CLI** - It will hang the process when used in deployed code (!) */ - error = (...args) => this.doLog("error", args); - table(data, level) { - const keys = data.length === 0 ? [] : Object.keys(data[0]); - const t = new CLITable({ - head: keys, - style: { - head: chalk.level ? ["blue"] : [], - border: chalk.level ? ["gray"] : [], - }, - }); - t.push(...data.map((row) => keys.map((k) => row[k]))); - return this.doLog(level ?? "log", [t.toString()]); - } - doLog(messageLevel, args) { - const message = this.formatMessage(messageLevel, format(...args)); - // only send logs to the terminal if their level is at least the configured log-level - if (LOGGER_LEVELS[this.loggerLevel] >= LOGGER_LEVELS[messageLevel]) { - console[messageLevel](message); - } - } - formatMessage(level, message) { - const kind = LOGGER_LEVEL_FORMAT_TYPE_MAP[level]; - if (kind) { - // Format the message using the esbuild formatter. - // The first line of the message is the main `text`, - // subsequent lines are put into the `notes`. - const [firstLine, ...otherLines] = message.split("\n"); - const notes = otherLines.length > 0 ? otherLines.map((text) => ({ text })) : undefined; - return formatMessagesSync([{ text: firstLine, notes }], { - color: true, - kind, - terminalWidth: this.columns, - })[0]; - } - else { - return message; - } - } -} -/** - * A drop-in replacement for `console` for outputting logging messages. - * - * Errors and Warnings will get additional formatting to highlight them to the user. - * You can also set a `logger.loggerLevel` value to one of "debug", "log", "warn" or "error", - * to filter out logging messages. - */ -export const logger = new Logger(); -export function logBuildWarnings(warnings) { - const logs = formatMessagesSync(warnings, { kind: "warning", color: true }); - for (const log of logs) - console.warn(log); -} -/** - * Logs all errors/warnings associated with an esbuild BuildFailure in the same - * style esbuild would. - */ -export function logBuildFailure(errors, warnings) { - const logs = formatMessagesSync(errors, { kind: "error", color: true }); - for (const log of logs) - console.error(log); - logBuildWarnings(warnings); -} -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/logger.js.map b/packages/core-cli/.tshy-build/esm/utils/logger.js.map deleted file mode 100644 index dca3291..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.d.ts b/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.d.ts deleted file mode 100644 index b04905d..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - Creates a supports hyperlinks check for a given stream. - - @param stream - Optional stream to check for hyperlink support. - @returns boolean indicating whether hyperlinks are supported. -*/ -export declare function createSupportsHyperlinks(stream: NodeJS.WriteStream): boolean; -/** Object containing hyperlink support status for stdout and stderr. */ -declare const supportsHyperlinks: { - /** Whether stdout supports hyperlinks. */ - stdout: boolean; - /** Whether stderr supports hyperlinks. */ - stderr: boolean; -}; -export default supportsHyperlinks; diff --git a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js b/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js deleted file mode 100644 index d2d3e50..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js +++ /dev/null @@ -1,122 +0,0 @@ -/* - MIT License - Copyright (c) Sindre Sorhus (https://sindresorhus.com) - Copyright (c) James Talmage (https://github.com/jamestalmage) - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -import { createSupportsColor } from "supports-color"; -import hasFlag from "has-flag"; -function parseVersion(versionString = "") { - if (/^\d{3,4}$/.test(versionString)) { - // Env var doesn't always use dots. example: 4601 => 46.1.0 - const match = /(\d{1,2})(\d{2})/.exec(versionString) ?? []; - return { - major: 0, - minor: Number.parseInt(match[1] ?? "0", 10), - patch: Number.parseInt(match[2] ?? "0", 10), - }; - } - const versions = (versionString ?? "").split(".").map((n) => Number.parseInt(n, 10)); - return { - major: versions[0] ?? 0, - minor: versions[1] ?? 0, - patch: versions[2] ?? 0, - }; -} -/** - Creates a supports hyperlinks check for a given stream. - - @param stream - Optional stream to check for hyperlink support. - @returns boolean indicating whether hyperlinks are supported. -*/ -export function createSupportsHyperlinks(stream) { - const { CI, CURSOR_TRACE_ID, FORCE_HYPERLINK, NETLIFY, TEAMCITY_VERSION, TERM_PROGRAM, TERM_PROGRAM_VERSION, VTE_VERSION, TERM, } = process.env; - if (FORCE_HYPERLINK) { - return !(FORCE_HYPERLINK.length > 0 && Number.parseInt(FORCE_HYPERLINK, 10) === 0); - } - if (hasFlag("no-hyperlink") || - hasFlag("no-hyperlinks") || - hasFlag("hyperlink=false") || - hasFlag("hyperlink=never")) { - return false; - } - if (hasFlag("hyperlink=true") || hasFlag("hyperlink=always")) { - return true; - } - // Netlify does not run a TTY, it does not need `supportsColor` check - if (NETLIFY) { - return true; - } - // If they specify no colors, they probably don't want hyperlinks. - if (!createSupportsColor(stream)) { - return false; - } - if (stream && !stream.isTTY) { - return false; - } - // Windows Terminal - if ("WT_SESSION" in process.env) { - return true; - } - if (process.platform === "win32") { - return false; - } - if (CI) { - return false; - } - if (TEAMCITY_VERSION) { - return false; - } - if (CURSOR_TRACE_ID) { - return true; - } - if (TERM_PROGRAM) { - const version = parseVersion(TERM_PROGRAM_VERSION); - switch (TERM_PROGRAM) { - case "iTerm.app": { - if (version.major === 3) { - return version.minor >= 1; - } - return version.major > 3; - } - case "WezTerm": { - return version.major >= 20_200_620; - } - case "vscode": { - // eslint-disable-next-line no-mixed-operators - return version.major > 1 || (version.major === 1 && version.minor >= 72); - } - case "ghostty": { - return true; - } - // No default - } - } - if (VTE_VERSION) { - // 0.50.0 was supposed to support hyperlinks, but throws a segfault - if (VTE_VERSION === "0.50.0") { - return false; - } - const version = parseVersion(VTE_VERSION); - return version.major > 0 || version.minor >= 50; - } - switch (TERM) { - case "alacritty": { - // Support added in v0.11 (2022-10-13) - return true; - } - // No default - } - return false; -} -/** Object containing hyperlink support status for stdout and stderr. */ -const supportsHyperlinks = { - /** Whether stdout supports hyperlinks. */ - stdout: createSupportsHyperlinks(process.stdout), - /** Whether stderr supports hyperlinks. */ - stderr: createSupportsHyperlinks(process.stderr), -}; -export default supportsHyperlinks; -//# sourceMappingURL=supportsHyperlinks.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js.map b/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js.map deleted file mode 100644 index 55b4240..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/supportsHyperlinks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"supportsHyperlinks.js","sourceRoot":"","sources":["../../../src/utils/supportsHyperlinks.ts"],"names":[],"mappings":"AAAA;;;;;;;EAOE;AAEF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,SAAS,YAAY,CAAC,aAAa,GAAG,EAAE;IACtC,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,2DAA2D;QAC3D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;YAC3C,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;KACxB,CAAC;AACJ,CAAC;AAED;;;;;EAKE;AACF,MAAM,UAAU,wBAAwB,CAAC,MAA0B;IACjE,MAAM,EACJ,EAAE,EACF,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,IAAI,GACL,GAAG,OAAO,CAAC,GAAG,CAAC;IAEhB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IACE,OAAO,CAAC,cAAc,CAAC;QACvB,OAAO,CAAC,eAAe,CAAC;QACxB,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,iBAAiB,CAAC,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,IAAI,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,EAAE,EAAE,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAEnD,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACxB,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBAED,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3B,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;YACrC,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,8CAA8C;gBAC9C,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;YACD,aAAa;QACf,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,mEAAmE;QACnE,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,sCAAsC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,aAAa;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wEAAwE;AACxE,MAAM,kBAAkB,GAAG;IACzB,0CAA0C;IAC1C,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,0CAA0C;IAC1C,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC;CACjD,CAAC;AAEF,eAAe,kBAAkB,CAAC"} \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/terminalLink.d.ts b/packages/core-cli/.tshy-build/esm/utils/terminalLink.d.ts deleted file mode 100644 index a6faab0..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/terminalLink.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -export type TerminalLinkOptions = { - /** - Override the default fallback. If false, the fallback will be disabled. - @default `${text} (${url})` - */ - readonly fallback?: ((text: string, url: string) => string) | boolean; -}; -/** - Create a clickable link in the terminal's stdout. - - [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) - For unsupported terminals, the link will be printed in parens after the text: `My website (https://sindresorhus.com)`, - unless the fallback is disabled by setting the `fallback` option to `false`. - - @param text - Text to linkify. - @param url - URL to link to. - - @example - ``` - import terminalLink from 'terminal-link'; - - const link = terminalLink('My Website', 'https://sindresorhus.com'); - console.log(link); - ``` - - @deprecated The default fallback is broken in some terminals. Please use `cliLink` instead. -*/ -declare function terminalLink(text: string, url: string, { target, ...options }?: { - target?: "stdout" | "stderr"; -} & TerminalLinkOptions): string; -declare namespace terminalLink { - var isSupported: boolean; - var stderr: typeof terminalLinkStderr; -} -/** - Create a clickable link in the terminal's stderr. - - [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) - For unsupported terminals, the link will be printed in parens after the text: `My website (https://sindresorhus.com)`. - - @param text - Text to linkify. - @param url - URL to link to. - - @example - ``` - import terminalLink from 'terminal-link'; - - const link = terminalLink.stderr('My Website', 'https://sindresorhus.com'); - console.error(link); - ``` -*/ -declare function terminalLinkStderr(text: string, url: string, options?: TerminalLinkOptions): string; -declare namespace terminalLinkStderr { - var isSupported: boolean; -} -export { terminalLink }; diff --git a/packages/core-cli/.tshy-build/esm/utils/terminalLink.js b/packages/core-cli/.tshy-build/esm/utils/terminalLink.js deleted file mode 100644 index 3ccbda4..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/terminalLink.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - MIT License - Copyright (c) Sindre Sorhus (https://sindresorhus.com) - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -import ansiEscapes from "ansi-escapes"; -import supportsHyperlinks from "./supportsHyperlinks.js"; -/** - Create a clickable link in the terminal's stdout. - - [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) - For unsupported terminals, the link will be printed in parens after the text: `My website (https://sindresorhus.com)`, - unless the fallback is disabled by setting the `fallback` option to `false`. - - @param text - Text to linkify. - @param url - URL to link to. - - @example - ``` - import terminalLink from 'terminal-link'; - - const link = terminalLink('My Website', 'https://sindresorhus.com'); - console.log(link); - ``` - - @deprecated The default fallback is broken in some terminals. Please use `cliLink` instead. -*/ -function terminalLink(text, url, { target = "stdout", ...options } = {}) { - if (!supportsHyperlinks[target]) { - // If the fallback has been explicitly disabled, don't modify the text itself. - if (options.fallback === false) { - return text; - } - return typeof options.fallback === "function" - ? options.fallback(text, url) - : `${text} (\u200B${url}\u200B)`; - } - return ansiEscapes.link(text, url); -} -/** - Check whether the terminal supports links. - - Prefer just using the default fallback or the `fallback` option whenever possible. -*/ -terminalLink.isSupported = supportsHyperlinks.stdout; -terminalLink.stderr = terminalLinkStderr; -/** - Create a clickable link in the terminal's stderr. - - [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) - For unsupported terminals, the link will be printed in parens after the text: `My website (https://sindresorhus.com)`. - - @param text - Text to linkify. - @param url - URL to link to. - - @example - ``` - import terminalLink from 'terminal-link'; - - const link = terminalLink.stderr('My Website', 'https://sindresorhus.com'); - console.error(link); - ``` -*/ -function terminalLinkStderr(text, url, options = {}) { - return terminalLink(text, url, { target: "stderr", ...options }); -} -/** - Check whether the terminal's stderr supports links. - - Prefer just using the default fallback or the `fallback` option whenever possible. -*/ -terminalLinkStderr.isSupported = supportsHyperlinks.stderr; -export { terminalLink }; -//# sourceMappingURL=terminalLink.js.map \ No newline at end of file diff --git a/packages/core-cli/.tshy-build/esm/utils/terminalLink.js.map b/packages/core-cli/.tshy-build/esm/utils/terminalLink.js.map deleted file mode 100644 index 8c433a6..0000000 --- a/packages/core-cli/.tshy-build/esm/utils/terminalLink.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"terminalLink.js","sourceRoot":"","sources":["../../../src/utils/terminalLink.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAEF,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAUzD;;;;;;;;;;;;;;;;;;;EAmBE;AACF,SAAS,YAAY,CACnB,IAAY,EACZ,GAAW,EACX,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,OAAO,KAA6D,EAAE;IAE9F,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,8EAA8E;QAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAC3C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7B,CAAC,CAAC,GAAG,IAAI,WAAW,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AACD;;;;EAIE;AACF,YAAY,CAAC,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACrD,YAAY,CAAC,MAAM,GAAG,kBAAkB,CAAC;AAEzC;;;;;;;;;;;;;;;;EAgBE;AACF,SAAS,kBAAkB,CAAC,IAAY,EAAE,GAAW,EAAE,UAA+B,EAAE;IACtF,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;EAIE;AACF,kBAAkB,CAAC,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/core-cli/.tshy/build.json b/packages/core-cli/.tshy/build.json deleted file mode 100644 index aea1a9e..0000000 --- a/packages/core-cli/.tshy/build.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "rootDir": "../src", - "module": "nodenext", - "moduleResolution": "nodenext" - } -} diff --git a/packages/core-cli/.tshy/esm.json b/packages/core-cli/.tshy/esm.json deleted file mode 100644 index fdc4fa7..0000000 --- a/packages/core-cli/.tshy/esm.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "./build.json", - "include": [ - "../src/**/*.ts", - "../src/**/*.mts", - "../src/**/*.tsx", - "../src/**/*.json" - ], - "exclude": [ - "../**/*.test.ts", - "../src/package.json" - ], - "compilerOptions": { - "outDir": "../.tshy-build/esm" - } -} diff --git a/packages/core-cli/README.md b/packages/core-cli/README.md new file mode 100644 index 0000000..21451fd --- /dev/null +++ b/packages/core-cli/README.md @@ -0,0 +1,193 @@ +# Core CLI + +🧠 **CORE - Contextual Observation & Recall Engine** + +A Command-Line Interface for setting up and managing the Core development environment. + +## Installation + +```bash +npm install -g @redplanethq/core +``` + +## Commands + +### `core init` + +**One-time setup command** - Initializes the Core development environment with full configuration. + +### `core start` + +**Daily usage command** - Starts all Core services (Docker containers). + +### `core stop` + +**Daily usage command** - Stops all Core services (Docker containers). + +## Getting Started + +### Prerequisites + +- **Node.js** (v18.20.0 or higher) +- **Docker** and **Docker Compose** +- **Git** +- **pnpm** package manager + +### Initial Setup + +1. **Run the initialization command:** + + ```bash + core init + ``` + +2. **The CLI will guide you through the complete setup process:** + +#### Step 1: Repository Validation + +- The CLI checks if you're in the Core repository +- If not, it offers to clone the repository for you +- Choose **Yes** to clone automatically, or **No** to clone manually + +#### Step 2: Environment Configuration + +- Copies `.env.example` to `.env` in the root directory +- Copies `trigger/.env.example` to `trigger/.env` +- Skips copying if `.env` files already exist + +#### Step 3: Docker Services Startup + +- Starts main Core services: `docker compose up -d` +- Starts Trigger.dev services: `docker compose up -d` (in trigger/ directory) +- Shows real-time output with progress indicators + +#### Step 4: Database Health Check + +- Verifies PostgreSQL is running on `localhost:5432` +- Retries for up to 60 seconds if needed + +#### Step 5: Trigger.dev Setup (Interactive) + +- **If Trigger.dev is not configured:** + + 1. Prompts you to open http://localhost:8030 + 2. Asks you to login to Trigger.dev + 3. Guides you to create an organization and project + 4. Collects your Project ID and Secret Key + 5. Updates `.env` with your Trigger.dev configuration + 6. Restarts Core services with new configuration + +- **If Trigger.dev is already configured:** + - Skips setup and shows "Configuration already exists" message + +#### Step 6: Docker Registry Login + +- Displays docker login command with credentials from `.env` +- Waits for you to complete the login process + +#### Step 7: Trigger.dev Task Deployment + +- Automatically runs: `npx trigger.dev@v4-beta login -a http://localhost:8030` +- Deploys tasks with: `pnpm trigger:deploy` +- Shows manual deployment instructions if automatic deployment fails + +#### Step 8: Setup Complete! + +- Confirms all services are running +- Shows service URLs and connection information + +## Daily Usage + +After initial setup, use these commands for daily development: + +### Start Services + +```bash +core start +``` + +Starts all Docker containers for Core development. + +### Stop Services + +```bash +core stop +``` + +Stops all Docker containers. + +## Service URLs + +After setup, these services will be available: + +- **Core Application**: http://localhost:3033 +- **Trigger.dev**: http://localhost:8030 +- **PostgreSQL**: localhost:5432 + +## Troubleshooting + +### Repository Not Found + +If you run commands outside the Core repository: + +- The CLI will offer to clone the repository automatically +- Choose **Yes** to clone in the current directory +- Or navigate to the Core repository manually + +### Docker Issues + +- Ensure Docker is running +- Check Docker Compose is installed +- Verify you have sufficient system resources + +### Trigger.dev Setup Issues + +- Check container logs: `docker logs trigger-webapp --tail 50` +- Ensure you can access http://localhost:8030 +- Verify your network allows connections to localhost + +### Environment Variables + +The CLI automatically manages these environment variables: + +- `TRIGGER_PROJECT_ID` - Your Trigger.dev project ID +- `TRIGGER_SECRET_KEY` - Your Trigger.dev secret key +- Docker registry credentials for deployment + +### Manual Trigger.dev Deployment + +If automatic deployment fails, run manually: + +```bash +npx trigger.dev@v4-beta login -a http://localhost:8030 +pnpm trigger:deploy +``` + +## Development Workflow + +1. **First time setup:** `core init` +2. **Daily development:** + - `core start` - Start your development environment + - Do your development work + - `core stop` - Stop services when done + +## Support + +For issues and questions: + +- Check the main Core repository: https://github.com/redplanethq/core +- Review Docker container logs for troubleshooting +- Ensure all prerequisites are properly installed + +## Features + +- šŸš€ **One-command setup** - Complete environment initialization +- šŸ”„ **Smart configuration** - Skips already configured components +- šŸ“± **Real-time feedback** - Live progress indicators and output +- 🐳 **Docker integration** - Full container lifecycle management +- šŸ”§ **Interactive setup** - Guided configuration process +- šŸŽÆ **Error handling** - Graceful failure with recovery instructions + +--- + +**Happy coding with Core!** šŸŽ‰ diff --git a/packages/core-cli/package.json b/packages/core-cli/package.json index 9c46922..f2c905e 100644 --- a/packages/core-cli/package.json +++ b/packages/core-cli/package.json @@ -1,6 +1,6 @@ { "name": "@redplanethq/core", - "version": "0.1.0", + "version": "0.1.1", "description": "A Command-Line Interface for Core", "type": "module", "license": "MIT", @@ -60,11 +60,10 @@ "scripts": { "clean": "rimraf dist .tshy .tshy-build .turbo", "typecheck": "tsc -p tsconfig.src.json --noEmit", - "build": "tshy && pnpm run update-version", + "build": "tshy", "dev": "tshy --watch", "test": "vitest", - "test:e2e": "vitest --run -c ./e2e/vitest.config.ts", - "update-version": "tsx ../../scripts/updateVersion.ts" + "test:e2e": "vitest --run -c ./e2e/vitest.config.ts" }, "dependencies": { "@clack/prompts": "^0.10.0", diff --git a/packages/core-cli/src/cli/index.ts b/packages/core-cli/src/cli/index.ts index 40df1ee..5b145cf 100644 --- a/packages/core-cli/src/cli/index.ts +++ b/packages/core-cli/src/cli/index.ts @@ -1 +1,25 @@ import { Command } from "commander"; +import { initCommand } from "../commands/init.js"; +import { startCommand } from "../commands/start.js"; +import { stopCommand } from "../commands/stop.js"; + +const program = new Command(); + +program.name("core").description("Core CLI - A Command-Line Interface for Core").version("0.1.0"); + +program + .command("init") + .description("Initialize Core development environment (run once)") + .action(initCommand); + +program + .command("start") + .description("Start Core development environment") + .action(startCommand); + +program + .command("stop") + .description("Stop Core development environment") + .action(stopCommand); + +program.parse(process.argv); diff --git a/packages/core-cli/src/commands/init.ts b/packages/core-cli/src/commands/init.ts index e69de29..5c790b3 100644 --- a/packages/core-cli/src/commands/init.ts +++ b/packages/core-cli/src/commands/init.ts @@ -0,0 +1,324 @@ +import { intro, outro, text, confirm, spinner, note, log } from "@clack/prompts"; +import { isValidCoreRepo } from "../utils/git.js"; +import { fileExists, updateEnvFile } from "../utils/file.js"; +import { checkPostgresHealth } from "../utils/docker.js"; +import { executeDockerCommandInteractive } from "../utils/docker-interactive.js"; +import { printCoreBrainLogo } from "../utils/ascii.js"; +import { setupEnvFile } from "../utils/env.js"; +import { hasTriggerConfig } from "../utils/env-checker.js"; +import path from "path"; + +export async function initCommand() { + // Display the CORE brain logo + printCoreBrainLogo(); + + intro("šŸš€ Core Development Environment Setup"); + + // Step 1: Validate repository + if (!isValidCoreRepo()) { + log.warning("This directory is not a Core repository"); + note( + "The Core repository is required to run the development environment.\nWould you like to clone it in the current directory?", + "šŸ” Repository Not Found" + ); + + const shouldClone = await confirm({ + message: "Clone the Core repository here?", + }); + + if (!shouldClone) { + outro("āŒ Setup cancelled. Please navigate to the Core repository or clone it first."); + process.exit(1); + } + + // Clone the repository + try { + await executeDockerCommandInteractive("git clone https://github.com/redplanethq/core.git .", { + cwd: process.cwd(), + message: "Cloning Core repository...", + showOutput: true, + }); + + log.success("Core repository cloned successfully!"); + note( + 'Please run "core init" again to initialize the development environment.', + "āœ… Repository Ready" + ); + outro("šŸŽ‰ Core repository is now available!"); + process.exit(0); + } catch (error: any) { + outro(`āŒ Failed to clone repository: ${error.message}`); + process.exit(1); + } + } + + const rootDir = process.cwd(); + const triggerDir = path.join(rootDir, "trigger"); + + try { + // Step 2: Setup .env file in root + const s1 = spinner(); + s1.start("Setting up .env file in root folder..."); + + const envPath = path.join(rootDir, ".env"); + const envExists = await fileExists(envPath); + + try { + await setupEnvFile(rootDir, "root"); + if (envExists) { + s1.stop("āœ… .env file already exists in root"); + } else { + s1.stop("āœ… Copied .env.example to .env"); + } + } catch (error: any) { + s1.stop(error.message); + process.exit(1); + } + + // Step 3: Docker compose up -d in root + try { + await executeDockerCommandInteractive("docker compose up -d", { + cwd: rootDir, + message: "Starting Docker containers in root...", + showOutput: true, + }); + } catch (error: any) { + throw error; + } + + // Step 4: Check if postgres is running + const s3 = spinner(); + s3.start("Checking PostgreSQL connection..."); + + let retries = 0; + const maxRetries = 30; + + while (retries < maxRetries) { + if (await checkPostgresHealth()) { + s3.stop("PostgreSQL is running on localhost:5432"); + break; + } + await new Promise((resolve) => setTimeout(resolve, 2000)); + retries++; + } + + if (retries >= maxRetries) { + s3.stop("L PostgreSQL not accessible on localhost:5432"); + outro("Please check your Docker setup and try again"); + process.exit(1); + } + + // Step 5: Setup .env file in trigger + const s4 = spinner(); + s4.start("Setting up .env file in trigger folder..."); + + const triggerEnvPath = path.join(triggerDir, ".env"); + const triggerEnvExists = await fileExists(triggerEnvPath); + + try { + await setupEnvFile(triggerDir, "trigger"); + if (triggerEnvExists) { + s4.stop("āœ… .env file already exists in trigger"); + } else { + s4.stop("āœ… Copied trigger .env.example to trigger/.env"); + } + } catch (error: any) { + s4.stop(error.message); + process.exit(1); + } + + // Step 6: Docker compose up for trigger + try { + await executeDockerCommandInteractive("docker compose up -d", { + cwd: triggerDir, + message: "Starting Trigger.dev containers...", + showOutput: true, + }); + } catch (error: any) { + throw error; + } + + // Step 7: Check if Trigger.dev configuration already exists + const triggerConfigExists = await hasTriggerConfig(envPath); + + if (triggerConfigExists) { + note( + "āœ… Trigger.dev configuration already exists in .env file\n Skipping Trigger.dev setup steps...", + "Configuration Found" + ); + } else { + // Step 8: Show login instructions + outro("šŸŽ‰ Docker containers are now running!"); + note( + "1. Open http://localhost:8030 in your browser\n2. Login to Trigger.dev (check container logs with: docker logs trigger-webapp --tail 50)", + "Next Steps" + ); + + const loginConfirmed = await confirm({ + message: "Have you logged in to Trigger.dev successfully?", + }); + + if (!loginConfirmed) { + outro("āŒ Setup cancelled. Please login to Trigger.dev first and run the command again."); + process.exit(1); + } + + // Step 9: Get project details + note( + "1. Create a new organization and project\n2. Go to project settings\n3. Copy the Project ID and Secret Key", + "In Trigger.dev (http://localhost:8030)" + ); + + const projectCreated = await confirm({ + message: "Have you created an organization and project in Trigger.dev?", + }); + + if (!projectCreated) { + outro( + "āŒ Setup cancelled. Please create an organization and project first and run the command again." + ); + process.exit(1); + } + + // Step 10: Get project ID and secret + const projectId = await text({ + message: "Enter your Trigger.dev Project ID:", + validate: (value) => { + if (!value || value.length === 0) { + return "Project ID is required"; + } + return; + }, + }); + + const secretKey = await text({ + message: "Enter your Trigger.dev Secret Key for production:", + validate: (value) => { + if (!value || value.length === 0) { + return "Secret Key is required"; + } + return; + }, + }); + + // Step 11: Update .env with project details + const s6 = spinner(); + s6.start("Updating .env with Trigger.dev configuration..."); + + try { + await updateEnvFile(envPath, "TRIGGER_PROJECT_ID", projectId as string); + await updateEnvFile(envPath, "TRIGGER_SECRET_KEY", secretKey as string); + s6.stop("āœ… Updated .env with Trigger.dev configuration"); + } catch (error: any) { + s6.stop("āŒ Failed to update .env file"); + throw error; + } + + // Step 12: Restart root docker-compose with new configuration + try { + await executeDockerCommandInteractive("docker compose down", { + cwd: rootDir, + message: "Stopping Core services...", + showOutput: true, + }); + + await executeDockerCommandInteractive("docker compose up -d", { + cwd: rootDir, + message: "Starting Core services with new Trigger.dev configuration...", + showOutput: true, + }); + } catch (error: any) { + throw error; + } + } + + // Step 13: Show docker login instructions + note("Run the following command to login to Docker registry:", "🐳 Docker Registry Login"); + + try { + // Read env file to get docker registry details + const envContent = await import("fs").then((fs) => + fs.promises.readFile(triggerEnvPath, "utf8") + ); + const envLines = envContent.split("\n"); + + const getEnvValue = (key: string) => { + const line = envLines.find((l) => l.startsWith(`${key}=`)); + return line ? line.split("=")[1] : ""; + }; + + const dockerRegistryUrl = getEnvValue("DOCKER_REGISTRY_URL"); + const dockerRegistryUsername = getEnvValue("DOCKER_REGISTRY_USERNAME"); + const dockerRegistryPassword = getEnvValue("DOCKER_REGISTRY_PASSWORD"); + + log.info( + `docker login ${dockerRegistryUrl} -u ${dockerRegistryUsername} -p ${dockerRegistryPassword}` + ); + } catch (error) { + log.info("docker login -u -p "); + } + + const dockerLoginConfirmed = await confirm({ + message: "Have you completed the Docker login successfully?", + }); + + if (!dockerLoginConfirmed) { + outro("āŒ Setup cancelled. Please complete Docker login first and run the command again."); + process.exit(1); + } + + // Step 14: Deploy Trigger.dev tasks + note( + "We'll now deploy the trigger tasks to your Trigger.dev instance.", + "šŸš€ Deploying Trigger.dev tasks" + ); + + try { + // Login to trigger.dev CLI + await executeDockerCommandInteractive( + "npx -y trigger.dev@v4-beta login -a http://localhost:8030", + { + cwd: rootDir, + message: "Logging in to Trigger.dev CLI...", + showOutput: true, + } + ); + + // Deploy trigger tasks + await executeDockerCommandInteractive("pnpm trigger:deploy", { + cwd: rootDir, + message: "Deploying Trigger.dev tasks...", + showOutput: true, + }); + + log.success("Trigger.dev tasks deployed successfully!"); + } catch (error: any) { + log.warning("Failed to deploy Trigger.dev tasks:"); + note( + `${error.message}\n\nYou can deploy them manually later with:\n1. npx trigger.dev@v4-beta login -a http://localhost:8030\n2. pnpm trigger:deploy`, + "Manual Deployment" + ); + } + + // Step 15: Final instructions + outro("šŸŽ‰ Setup Complete!"); + note( + [ + "Your services are now running:", + "", + "• Core Application: http://localhost:3033", + "• Trigger.dev: http://localhost:8030", + "• PostgreSQL: localhost:5432", + "", + "You can now start developing with Core!", + "", + "ā„¹ļø When logging in to the Core Application, you can find the login URL in the Docker container logs:", + " docker logs core-app --tail 50", + ].join("\n"), + "šŸš€ Services Running" + ); + } catch (error: any) { + outro(`āŒ Setup failed: ${error.message}`); + process.exit(1); + } +} diff --git a/packages/core-cli/src/commands/start.ts b/packages/core-cli/src/commands/start.ts new file mode 100644 index 0000000..f1378d8 --- /dev/null +++ b/packages/core-cli/src/commands/start.ts @@ -0,0 +1,72 @@ +import { intro, outro, note, log, confirm } from '@clack/prompts'; +import { isValidCoreRepo } from '../utils/git.js'; +import { executeDockerCommandInteractive } from '../utils/docker-interactive.js'; +import { printCoreBrainLogo } from '../utils/ascii.js'; +import path from 'path'; + +export async function startCommand() { + // Display the CORE brain logo + printCoreBrainLogo(); + + intro('šŸš€ Starting Core Development Environment'); + + // Step 1: Validate repository + if (!isValidCoreRepo()) { + log.warning('This directory is not a Core repository'); + note('The Core repository is required to run the development environment.\nWould you like to clone it in the current directory?', 'šŸ” Repository Not Found'); + + const shouldClone = await confirm({ + message: 'Clone the Core repository here?', + }); + + if (!shouldClone) { + outro('āŒ Setup cancelled. Please navigate to the Core repository or clone it first.'); + process.exit(1); + } + + // Clone the repository + try { + await executeDockerCommandInteractive('git clone https://github.com/redplanethq/core.git .', { + cwd: process.cwd(), + message: 'Cloning Core repository...', + showOutput: true + }); + + log.success('Core repository cloned successfully!'); + note('You can now run "core start" to start the development environment.', 'āœ… Repository Ready'); + outro('šŸŽ‰ Core repository is now available!'); + process.exit(0); + } catch (error: any) { + outro(`āŒ Failed to clone repository: ${error.message}`); + process.exit(1); + } + } + + const rootDir = process.cwd(); + const triggerDir = path.join(rootDir, 'trigger'); + + try { + // Start main services + await executeDockerCommandInteractive('docker compose up -d', { + cwd: rootDir, + message: 'Starting Core services...', + showOutput: true + }); + + // Start trigger services + await executeDockerCommandInteractive('docker compose up -d', { + cwd: triggerDir, + message: 'Starting Trigger.dev services...', + showOutput: true + }); + + // Final success message + outro('šŸŽ‰ Core Development Environment Started!'); + note('• Core Application: http://localhost:3033\n• Trigger.dev: http://localhost:8030\n• PostgreSQL: localhost:5432', '🌐 Your services are now running'); + log.success('Happy coding!'); + + } catch (error: any) { + outro(`āŒ Failed to start services: ${error.message}`); + process.exit(1); + } +} \ No newline at end of file diff --git a/packages/core-cli/src/commands/stop.ts b/packages/core-cli/src/commands/stop.ts new file mode 100644 index 0000000..5fef1d1 --- /dev/null +++ b/packages/core-cli/src/commands/stop.ts @@ -0,0 +1,72 @@ +import { intro, outro, log, confirm, note } from '@clack/prompts'; +import { isValidCoreRepo } from '../utils/git.js'; +import { executeDockerCommandInteractive } from '../utils/docker-interactive.js'; +import { printCoreBrainLogo } from '../utils/ascii.js'; +import path from 'path'; + +export async function stopCommand() { + // Display the CORE brain logo + printCoreBrainLogo(); + + intro('šŸ›‘ Stopping Core Development Environment'); + + // Step 1: Validate repository + if (!isValidCoreRepo()) { + log.warning('This directory is not a Core repository'); + note('The Core repository is required to stop the development environment.\nWould you like to clone it in the current directory?', 'šŸ” Repository Not Found'); + + const shouldClone = await confirm({ + message: 'Clone the Core repository here?', + }); + + if (!shouldClone) { + outro('āŒ Setup cancelled. Please navigate to the Core repository or clone it first.'); + process.exit(1); + } + + // Clone the repository + try { + await executeDockerCommandInteractive('git clone https://github.com/redplanethq/core.git .', { + cwd: process.cwd(), + message: 'Cloning Core repository...', + showOutput: true + }); + + log.success('Core repository cloned successfully!'); + note('You can now run "core stop" to stop the development environment.', 'āœ… Repository Ready'); + outro('šŸŽ‰ Core repository is now available!'); + process.exit(0); + } catch (error: any) { + outro(`āŒ Failed to clone repository: ${error.message}`); + process.exit(1); + } + } + + const rootDir = process.cwd(); + const triggerDir = path.join(rootDir, 'trigger'); + + try { + // Stop trigger services first + await executeDockerCommandInteractive('docker compose down', { + cwd: triggerDir, + message: 'Stopping Trigger.dev services...', + showOutput: true + }); + + // Stop main services + await executeDockerCommandInteractive('docker compose down', { + cwd: rootDir, + message: 'Stopping Core services...', + showOutput: true + }); + + // Final success message + outro('šŸŽ‰ Core Development Environment Stopped!'); + log.success('All services have been stopped.'); + log.info('Run "core start" to start services again.'); + + } catch (error: any) { + outro(`āŒ Failed to stop services: ${error.message}`); + process.exit(1); + } +} \ No newline at end of file diff --git a/packages/core-cli/src/index.ts b/packages/core-cli/src/index.ts index e69de29..d6d86d6 100644 --- a/packages/core-cli/src/index.ts +++ b/packages/core-cli/src/index.ts @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +import './cli/index.js'; \ No newline at end of file diff --git a/packages/core-cli/src/utils/ascii.ts b/packages/core-cli/src/utils/ascii.ts new file mode 100644 index 0000000..6b5dbfb --- /dev/null +++ b/packages/core-cli/src/utils/ascii.ts @@ -0,0 +1,24 @@ +import chalk from "chalk"; + +export function printCoreBrainLogo(): void { + const brain = ` + ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— + ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā•ā•ā• + ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā–ˆā–ˆā–ˆā•— + ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā• + ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— + ā•šā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā• ā•šā•ā•ā•šā•ā•ā•ā•ā•ā•ā• + + o o o + o o---o---o o + o---o o o---o---o + o o---o---o---o o + o---o o o---o---o + o o---o---o o + o o o + + `; + + console.log(chalk.cyan(brain)); + console.log(chalk.bold.white(" 🧠 CORE - Contextual Observation & Recall Engine \n")); +} diff --git a/packages/core-cli/src/utils/docker-interactive.ts b/packages/core-cli/src/utils/docker-interactive.ts new file mode 100644 index 0000000..e589561 --- /dev/null +++ b/packages/core-cli/src/utils/docker-interactive.ts @@ -0,0 +1,108 @@ +import { spawn, ChildProcess } from 'child_process'; +import { spinner } from '@clack/prompts'; + +export interface DockerCommandOptions { + cwd: string; + message: string; + showOutput?: boolean; +} + +export function executeDockerCommandInteractive( + command: string, + options: DockerCommandOptions +): Promise { + return new Promise((resolve, reject) => { + const s = spinner(); + s.start(options.message); + + // Split command into parts + const parts = command.split(' '); + const cmd = parts[0]; + const args = parts.slice(1); + + if (!cmd) { + reject(new Error('Invalid command')); + return; + } + + const child: ChildProcess = spawn(cmd, args, { + cwd: options.cwd, + stdio: options.showOutput ? ['ignore', 'pipe', 'pipe'] : 'ignore', + detached: false + }); + + let output = ''; + + // Handle stdout + if (child.stdout && options.showOutput) { + child.stdout.on('data', (data: Buffer) => { + const text = data.toString(); + output += text; + + // Update spinner with latest output line + const lines = text.trim().split('\n'); + const lastLine = lines[lines.length - 1]; + if (lastLine && lastLine.trim()) { + s.message(`${options.message}\n${lastLine.trim()}`); + } + }); + } + + // Handle stderr + if (child.stderr && options.showOutput) { + child.stderr.on('data', (data: Buffer) => { + const text = data.toString(); + output += text; + + // Update spinner with error output + const lines = text.trim().split('\n'); + const lastLine = lines[lines.length - 1]; + if (lastLine && lastLine.trim()) { + s.message(`${options.message}\nāŒ ${lastLine.trim()}`); + } + }); + } + + // Handle process exit + child.on('exit', (code: number | null) => { + if (code === 0) { + s.stop(`āœ… ${options.message.replace(/\.\.\.$/, '')} completed`); + resolve(); + } else { + s.stop(`āŒ ${options.message.replace(/\.\.\.$/, '')} failed (exit code: ${code})`); + if (options.showOutput && output) { + console.log('\nOutput:'); + console.log(output); + } + reject(new Error(`Command failed with exit code ${code}`)); + } + }); + + // Handle errors + child.on('error', (error: Error) => { + s.stop(`āŒ ${options.message.replace(/\.\.\.$/, '')} failed`); + reject(error); + }); + + // Handle Ctrl+C + const handleSigint = () => { + s.stop(`ā¹ļø ${options.message.replace(/\.\.\.$/, '')} interrupted`); + child.kill('SIGTERM'); + + // Give the process time to clean up + setTimeout(() => { + if (child.killed === false) { + child.kill('SIGKILL'); + } + process.exit(130); // Standard exit code for SIGINT + }, 5000); + }; + + process.on('SIGINT', handleSigint); + + // Clean up event listener when done + child.on('exit', () => { + process.off('SIGINT', handleSigint); + }); + }); +} \ No newline at end of file diff --git a/packages/core-cli/src/utils/docker.ts b/packages/core-cli/src/utils/docker.ts new file mode 100644 index 0000000..fc2cb8d --- /dev/null +++ b/packages/core-cli/src/utils/docker.ts @@ -0,0 +1,30 @@ +import { execSync } from 'child_process'; + +export function checkPostgresHealth(): Promise { + return new Promise((resolve) => { + try { + const result = execSync('curl -f http://localhost:5432 || nc -z localhost 5432', { + encoding: 'utf8', + timeout: 5000 + }); + resolve(true); + } catch { + resolve(false); + } + }); +} + +export function executeDockerCommand(command: string, cwd: string): Promise { + return new Promise((resolve, reject) => { + try { + const result = execSync(command, { + cwd, + encoding: 'utf8', + stdio: 'pipe' + }); + resolve(result); + } catch (error: any) { + reject(new Error(`Docker command failed: ${error.message}`)); + } + }); +} \ No newline at end of file diff --git a/packages/core-cli/src/utils/env-checker.ts b/packages/core-cli/src/utils/env-checker.ts new file mode 100644 index 0000000..806db60 --- /dev/null +++ b/packages/core-cli/src/utils/env-checker.ts @@ -0,0 +1,23 @@ +import fs from 'fs/promises'; + +export async function checkEnvValue(filePath: string, key: string): Promise { + try { + const content = await fs.readFile(filePath, 'utf8'); + const lines = content.split('\n'); + const line = lines.find(l => l.startsWith(`${key}=`)); + if (line) { + const value = line.split('=')[1]?.trim(); + return value && value.length > 0 ? value : null; + } + return null; + } catch { + return null; + } +} + +export async function hasTriggerConfig(envPath: string): Promise { + const projectId = await checkEnvValue(envPath, 'TRIGGER_PROJECT_ID'); + const secretKey = await checkEnvValue(envPath, 'TRIGGER_SECRET_KEY'); + + return !!(projectId && secretKey); +} \ No newline at end of file diff --git a/packages/core-cli/src/utils/env.ts b/packages/core-cli/src/utils/env.ts new file mode 100644 index 0000000..86ac547 --- /dev/null +++ b/packages/core-cli/src/utils/env.ts @@ -0,0 +1,17 @@ +import path from 'path'; +import { fileExists, copyFile } from './file.js'; + +export async function setupEnvFile(directory: string, name: string = 'root'): Promise { + const envExamplePath = path.join(directory, '.env.example'); + const envPath = path.join(directory, '.env'); + + if (!(await fileExists(envExamplePath))) { + throw new Error(`āŒ .env.example not found in ${name} directory`); + } + + if (await fileExists(envPath)) { + return; // .env already exists, skip copying + } + + await copyFile(envExamplePath, envPath); +} \ No newline at end of file diff --git a/packages/core-cli/src/utils/file.ts b/packages/core-cli/src/utils/file.ts new file mode 100644 index 0000000..5702342 --- /dev/null +++ b/packages/core-cli/src/utils/file.ts @@ -0,0 +1,41 @@ +import fs from 'fs/promises'; +import path from 'path'; + +export async function copyFile(source: string, destination: string): Promise { + try { + await fs.copyFile(source, destination); + } catch (error: any) { + throw new Error(`Failed to copy file: ${error.message}`); + } +} + +export async function fileExists(filePath: string): Promise { + try { + await fs.access(filePath); + return true; + } catch { + return false; + } +} + +export async function updateEnvFile(filePath: string, key: string, value: string): Promise { + try { + let content = ''; + if (await fileExists(filePath)) { + content = await fs.readFile(filePath, 'utf8'); + } + + const lines = content.split('\n'); + const keyIndex = lines.findIndex(line => line.startsWith(`${key}=`)); + + if (keyIndex !== -1) { + lines[keyIndex] = `${key}=${value}`; + } else { + lines.push(`${key}=${value}`); + } + + await fs.writeFile(filePath, lines.join('\n')); + } catch (error: any) { + throw new Error(`Failed to update .env file: ${error.message}`); + } +} \ No newline at end of file diff --git a/packages/core-cli/src/utils/git.ts b/packages/core-cli/src/utils/git.ts new file mode 100644 index 0000000..173e7ff --- /dev/null +++ b/packages/core-cli/src/utils/git.ts @@ -0,0 +1,22 @@ +import { execSync } from "child_process"; + +export function getGitRemoteUrl(): string | null { + try { + const url = execSync("git config --get remote.origin.url", { encoding: "utf8" }).trim(); + return url; + } catch { + return null; + } +} + +export function isValidCoreRepo(): boolean { + const remoteUrl = getGitRemoteUrl(); + if (!remoteUrl) return false; + + return ( + remoteUrl.includes("github.com/redplanethq/core") || + remoteUrl.includes("github.com:redplanethq/core") || + remoteUrl.includes("github.com/tegonhq/echo") || + remoteUrl.includes("github.com:tegonhq/echo") + ); +} diff --git a/packages/core-cli/src/utils/spinner.ts b/packages/core-cli/src/utils/spinner.ts new file mode 100644 index 0000000..0115156 --- /dev/null +++ b/packages/core-cli/src/utils/spinner.ts @@ -0,0 +1,22 @@ +import { spinner } from '@clack/prompts'; + +export function createSpinner(message: string) { + return spinner(); +} + +export async function withSpinner( + message: string, + task: () => Promise +): Promise { + const s = spinner(); + s.start(message); + + try { + const result = await task(); + s.stop(message); + return result; + } catch (error) { + s.stop(`${message} - Failed`); + throw error; + } +} \ No newline at end of file diff --git a/trigger/.env.example b/trigger/.env.example index 35ebb4b..1ab3687 100644 --- a/trigger/.env.example +++ b/trigger/.env.example @@ -79,6 +79,7 @@ RUN_REPLICATION_CLICKHOUSE_URL=http://default:password@clickhouse:8123 # - When deploying to production, you will have to change these, especially the password and URL # - See the docs for more information: https://trigger.dev/docs/self-hosting/docker#registry-setup DOCKER_REGISTRY_URL=localhost:5000 +DOCKER_REGISTRY_NAMESPACE= DOCKER_REGISTRY_USERNAME=registry-user DOCKER_REGISTRY_PASSWORD=very-secure-indeed diff --git a/trigger/docker-compose.aws.yaml b/trigger/docker-compose.aws.yaml index 37c1478..298675b 100644 --- a/trigger/docker-compose.aws.yaml +++ b/trigger/docker-compose.aws.yaml @@ -224,6 +224,7 @@ services: DOCKER_HOST: tcp://docker-proxy:2375 DOCKER_RUNNER_NETWORKS: webapp,supervisor DOCKER_REGISTRY_URL: ${DOCKER_REGISTRY_URL:-localhost:5000} + DEPLOY_REGISTRY_NAMESPACE: ${DOCKER_REGISTRY_NAMESPACE:-redplanethq} DOCKER_REGISTRY_USERNAME: ${DOCKER_REGISTRY_USERNAME:-} DOCKER_REGISTRY_PASSWORD: ${DOCKER_REGISTRY_PASSWORD:-} DOCKER_AUTOREMOVE_EXITED_CONTAINERS: 0 diff --git a/trigger/docker-compose.yaml b/trigger/docker-compose.yaml index 09699d7..558edb0 100644 --- a/trigger/docker-compose.yaml +++ b/trigger/docker-compose.yaml @@ -47,12 +47,13 @@ services: MAGIC_LINK_SECRET: ${MAGIC_LINK_SECRET} ENCRYPTION_KEY: ${ENCRYPTION_KEY} MANAGED_WORKER_SECRET: ${MANAGED_WORKER_SECRET} - REDIS_HOST: trigger-redis + REDIS_HOST: host.docker.internal REDIS_PORT: 6379 REDIS_TLS_DISABLED: true APP_LOG_LEVEL: info DEV_OTEL_EXPORTER_OTLP_ENDPOINT: ${DEV_OTEL_EXPORTER_OTLP_ENDPOINT:-http://localhost:8030/otel} DEPLOY_REGISTRY_HOST: ${DOCKER_REGISTRY_URL:-localhost:5000} + DEPLOY_REGISTRY_NAMESPACE: ${DOCKER_REGISTRY_NAMESPACE:-trigger} OBJECT_STORE_BASE_URL: ${OBJECT_STORE_BASE_URL:-http://minio:9000} OBJECT_STORE_ACCESS_KEY_ID: ${OBJECT_STORE_ACCESS_KEY_ID} OBJECT_STORE_SECRET_ACCESS_KEY: ${OBJECT_STORE_SECRET_ACCESS_KEY}